매개 변수 전달은 매개 변수를 프로그램 배경으로 전송하는 것을 의미합니다. 배경은 일부 처리를 수행 한 다음 컨텐츠를 데이터베이스에 저장할 수 있습니다.
설명과 같이 매개 변수를 전달하는 방법에는 여러 가지가 있습니다.
1. 직접 매개 변수 방법이 작동합니다
다음 index.jsp 파일이 있습니다
코드 사본은 다음과 같습니다. <? xml version = "1.0"encoding = "gb18030"?>
<%@ page language = "java"contenttype = "text/html; charset = gb18030"
PageEncoding = "GB18030"%>
<%
문자열 path = request.getContextPath ();
String BasePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/";
%>
<! doctype html public "-// w3c // dtd xhtml 1.0 Transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<헤드>
<meta http-equiv = "content-type"content = "text /html; charset = gb18030" />
<base href = "< %= basepath %>"/>
<title> 제목을 여기에 삽입하십시오 </title>
</head>
<body>
액션 속성을 사용하여 매개 변수를 받으려면 <a href = "user/user! add? name = a & age = 8"> 사용자 추가 </a>
</body>
</html>
<a> </a>의 경우 두 개의 매개 변수를 프로그램에 전달하십시오. 하나는 이름이고 다른 하나는 나이입니다. struts.xml의 구성은 다음과 같습니다.
코드 코드를 다음과 같이 복사하십시오. <? xml version = "1.0"encoding = "utf-8"?>
<! doctype struts public
"-// Apache Software Foundation // dtd Struts 구성 2.0 // en"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<constant name = "struts.devmode"value = "true" />
<package name = "user"extends = "struts-default"네임 스페이스 = "/user">
<액션 이름 = "사용자">
<결과> /user_add_success.jsp </result>
</action>
</패키지>
</struts>
현재 사용자 행동을 어떻게 작성해야합니까? 예는 다음과 같습니다.
코드 사본은 다음과 같습니다. package com.bjsxt.struts2.user.action;
com.opensymphony.xwork2.actionSupport 가져 오기;
공개 클래스 UserAction은 ActionSupport를 확장합니다.
개인 문자열 이름;
사적인 int 연령;
public String add () {
System.out.println ( "name =" + name);
System.out.println ( "age =" + age);
반환 성공;
}
공개 문자열 getName () {
반환 이름;
}
public void setName (문자열 이름) {
this.name = 이름;
}
public int getage () {
귀환 연령;
}
공개 무효 설정 (int Age) {
this.age = age;
}
}
매우 간단하며 두 가지 속성을 정의합니다. 참고 :이 두 속성의 세트 및 GET 메소드를 작성해야하며 빠른 생성 방법이 사용되며 매우 간단합니다. 이런 식으로 위의 프로그램은 실행될 때 원하는 결과를 인쇄합니다.
이름 = a 및 age = 8.
설명은 다음과 같습니다. 첫째, struts2는 자동으로 매개 변수를 전달 하며이 프로세스에 참여할 필요가 없습니다. 둘째, Struts는 매개 변수를 전달하여 이름과 연령 속성이 아닌 메소드를 설정하고 얻습니다. 즉, 사용자 이름과 같은 다른 이름으로 이름을 수정하지만 메소드가 여전히 setName과 getName이라면 전체 기능의 구현 사이에는 차이가 없으며 약간 어색합니다. 셋째, 가장 중요한 점은 많은 속성이 있다면 많은 세트와 메소드가 필요하므로 매우 불편하므로 다음 방법이 확장된다는 것입니다.
2. 액션 클래스 객체 방법을 추가하십시오
현재 1의 속성은 모두 사용자와 같은 클래스로 분류됩니다.
코드 사본은 다음과 같습니다. package com.bjsxt.struts2.user.model;
공개 클래스 사용자 {
개인 문자열 이름;
사적인 int 연령;
공개 문자열 getName () {
반환 이름;
}
public void setName (문자열 이름) {
this.name = 이름;
}
public int getage () {
귀환 연령;
}
공개 무효 설정 (int Age) {
this.age = age;
}
}
이것은 액션 클래스 쓰기를 훨씬 쉽게 만듭니다
코드 사본은 다음과 같습니다. package com.bjsxt.struts2.user.action;
com.bjsxt.struts2.user.model.user 가져 오기;
com.opensymphony.xwork2.actionSupport 가져 오기;
공개 클래스 UserAction은 ActionSupport를 확장합니다.
개인 사용자 사용자;
public String add () {
System.out.println ( "name =" + user.getName ());
System.out.println ( "age =" + user.getage ());
반환 성공;
}
공개 사용자 getUser () {
리턴 사용자;
}
public void setUser (사용자 사용자) {
this.user = 사용자;
}
}
참고 : 현재 사용자 객체를 수동으로 생성 할 필요는 없습니다. 이 프로세스는 Struts2에 의해 자동으로 완료됩니다.
그리고 현재 URL을 수정해야합니다. 즉, 인덱스의 <a> </a> 태그가 수정되었습니다.
코드 사본은 다음과 같습니다. <? xml version = "1.0"encoding = "gb18030"?>
<%@ page language = "java"contenttype = "text/html; charset = gb18030"
PageEncoding = "GB18030"%>
<%
문자열 path = request.getContextPath ();
String BasePath = request.getScheme ()+": //"+request.getServerName ()+":"+request.getServerport ()+path+"/";
%>
<! doctype html public "-// w3c // dtd xhtml 1.0 Transitional // en" "http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">
<html xmlns = "http://www.w3.org/1999/xhtml">
<헤드>
<meta http-equiv = "content-type"content = "text /html; charset = gb18030" />
<base href = "< %= basepath %>"/>
<title> 제목을 여기에 삽입하십시오 </title>
</head>
<body>
도메인 모델을 사용하여 매개 변수를 받으십시오
</body>
</html>
위의 18 줄 섹션으로 수정하십시오.
위의 내용은 Struts2 매개 변수 전달의 두 가지 방법을 설명하며, 두 번째 방법은 도메인 모델, 도메인 모델이라고합니다. 즉, 속성을 저장할 새로운 클래스를 만듭니다.
다른 방법은 아래에 modelDriven, Model-Driven이라고합니다.
그것은 두 번째 방법과 매우 유사하며 다른 방법은 동작과 액세스 사이에 차이가 있다는 점을 제외하고는 동일합니다. 그 행동은 다음과 같습니다.
코드 사본은 다음과 같습니다. package com.bjsxt.struts2.user.action;
com.bjsxt.struts2.user.model.user 가져 오기;
com.opensymphony.xwork2.actionSupport 가져 오기;
com.opensymphony.xwork2.modeldriven import;
Public Class UserAction 확장 ActionSupport emplements ModelDriven <user> {
개인 사용자 = 새 사용자 ();
public String add () {
System.out.println ( "name =" + user.getName ());
System.out.println ( "age =" + user.getage ());
반환 성공;
}
@보수
공개 사용자 getModel () {
리턴 사용자;
}
}
이것으로부터 ModelDriven 인터페이스를 구현하고 일반 기술을 채택한다는 것을 알 수 있습니다. 이러한 방식으로 Struts2는 자동으로 객체를 인스턴스화하지 않으므로 수동으로 만 생성 할 수 있습니다. ModelDriven 인터페이스의 getModel () 메소드를 무시하고 그 기능은 클래스 객체를 반환하는 것입니다.
액세스는 두 번째 방법과 다릅니다 (첫 번째 방법에서와 같이) :
코드 코드를 다음과 같이 복사하십시오. ModelDriven을 사용하여 매개 변수를 받으 <a href = "user/user! add? name = a & age = 8"> 사용자 추가 </a>
user.name 메소드를 사용하지 않으므로 새 개체를 새로 사용해야합니다.
이 방법의 기본 이데올로기 과정은 다음과 같습니다. 첫째, 조치는 URL을 구문 분석하고 매개 변수를 얻은 다음 동작을 입력합니다. 이 동작은 ModelDriven 인터페이스를 구현하는 것으로 밝혀졌습니다. 현재 ModelDriven 인터페이스의 getModel 메소드가 클래스 객체를 얻기 위해 호출 된 다음이 클래스의 세트와 Get 메소드가 호출되어 매개 변수를 전달합니다.
이 방법은 struts2, m --- 모델, v ---보기, c --- 컨트롤러의 MVC 아이디어를 반영하지만,이 방법은 거의 사용되지 않으며, 가장 많이 사용하는 두 번째 방법은 위의 것입니다.
위는 Struts2에서 매개 변수 전달 방법의 전체 내용입니다. 나는 그것이 당신에게 참조를 줄 수 있기를 바랍니다. 그리고 당신이 wulin.com을 더 지원할 수 있기를 바랍니다.