Struts 2-속성 구동 및 모델 구동
8070 단어 struts2
1.왜 속성 구동 과 모델 구동 을 사용 합 니까?
struts 2 와 struts 의 큰 차이 점 은 struts 의 execute 방법 이 Http ServletRequest 와
HttpServletResponse 방법 은 클 라 이언 트 가 제출 한 데이터 정 보 를 가 져 올 때 HttpServletRequest 를 사용 해 야 합 니 다.
getParameter()방법 과 필요 한 데이터 형식 변환 이 필요 합 니 다.어떻게 클 라 이언 트 가 제출 한 데이터 양 이 많 을 때 저 희 는...
getParameter 방법 을 많이 써 야 합 니 다.이렇게 하면 코드 의 양 이 상응 하여 적지 않 게 증가한다.하지만 struts 2 는 속성 구동 과 모델 을 제공 합 니 다.
형 구동,그것 은 우리 가 많은 값 을 얻 는 방법 을 쓸 필요 가 없다.그리고 우리 가 Action 에서 해당 하 는 getter 방법 을 정의 하고 인터페이스 에서
Action 의 변수 이름 은 폼 요소 의 name 속성 값 으로 사용 하면 됩 니 다.
2.속성 구동 과 모델 구동 은 어떤 차이 점 이 있 습 니까?
1.속성 드라이브
:속성 구동 에 대해 저 희 는 Action 에서 폼 요소 와 대응 하 는 모든 속성 을 정의 해 야 하기 때문에 Action 에서 getter 와 setter 방법 이 많이 나타 납 니 다.
2.모델 구동
:모델 구동 에 사용 되 는 Action 대상 은 ModelDriven 인 터 페 이 스 를 실현 하고 필요 한 유형 을 지정 해 야 합 니 다.Action 에서 우 리 는 단지
모든 데이터 정 보 를 봉 인 된 javabean 을 정의 하려 면
3.속성 과 모델 구동 의 공통점
:속성 드라이브 와 모델 드라이브 를 사용 할 때 폼 의 요소 중의 name 속성 값 과 데이터 정 보 를 받 는 변 수 를 정의 해 야 합 니 다.
대응 하 다
3.속성 구동 을 어떻게 사용 합 니까?
:속성 구동 의 실현 은 매우 간단 합 니 다.인 스 턴 스 는 다음 과 같 습 니 다.
자바 코드
package cn.actionctr;
import java.util.Date;
import com.opensymphony.xwork2.ActionSupport;
public class OneAction extends ActionSupport {
private String pname;
private String address;
private int age;
private Date date;
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String execute() throws Exception {
return "success";// success
}
}
index.jsp
<body>
<div>
<form action="one" method="post">
<table width="80%" align="center">
<tr>
<td>UserName:</td>
<td><input type="text" name="pname" id="pname"/> </td>
</tr>
<tr>
<td>PassWord:</td>
<td><input type="password" name="address" id="address"/></td>
</tr>
<tr>
<td>Age:</td>
<td><input type="text" name="age" id="age"/></td>
</tr>
<td>Date:</td>
<td><input type="text" name="date" id="date"/></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="submit"/></td>
</tr>
</table>
</form>
</div>
</body>
jsp 코드 show.jsp
<body>
<!-- -->
:${pname}<br>
</body>
Struts.xml 설정
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="my-packag" extends="struts-default" namespace="/">
<!-- -->
<action name="one" class="cn.actionctr.OneAction">
<!-- success , show.jsp -->
<result>/jsps/show.jsp</result>
</action>
</package>
</struts>
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<display-name>Strusts</display-name>
<filter>
<filter-name>s2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>s2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
4.모델 구동
:모델 구동 은 세 가지 가 다르다.
1.소 속 된 Action 은 ModelDriven 인 터 페 이 스 를 실현 하고 주어진 유형 과 인터페이스 에 있 는 getModel 방법 을 실현 해 야 합 니 다.
2.모든 속성 을 봉인 하 는 javabean 이 필요 합 니 다(1.주어진 형식 에 대응)
3.struts.xml 파일 에서 이 Action 을 설명 하 는 곳 에서 이 Action 을 차단기(Model DrivenInterceptor)로 만 듭 니 다.
:구체 적 인 실례 는 다음 과 같다.
package cn.actionctr;
import cn.domain.Person;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
public class OneAction extends ActionSupport implements
ModelDriven<Person/* Person */> {
private Person person = new Person();
// Person getModel()
// , person
//public Person getPerson() {
// person getter , ,
// return person;
//}
@Override
public Person getModel() {
// ModleDriven , person
return person;
}
@Override
public String execute() throws Exception {
//
// System.out.println(person.getPage()+""+person.getDate());
return "success";
}
}
Struts.xml
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="my-packag" extends="struts-default" namespace="/">
<!-- -->
<action name="one" class="cn.actionctr.OneAction">
<!-- success , show.jsp -->
<result>/jsps/show.jsp</result>
<interceptor-ref name="modelDriven"></interceptor-ref>
<interceptor-ref name="defaultStack"></interceptor-ref>
</action>
</package>
</struts>
package cn.domain;
import java.util.Date;
public class Person {
private String pname;
private int page;
private String address;
public String getPname() {
return pname;
}
public void setPname(String pname) {
this.pname = pname;
}
public int getPage() {
return page;
}
public void setPage(int page) {
this.page = page;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
apache struts2 취약점 검증이번에는 보안 캠프의 과제였던 apache struts2의 취약성에 대해 실제로 손을 움직여 실행해 보고 싶습니다. 환경 VirtualBox에서 브리지 어댑터 사용 호스트:macOS 10.12 게스트:ubuntu 1...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.