Struts2 学习笔记 NameSpace_Action_path_方法调用_ Wildcard_传参数
NameSpace是action的访问路径
?
<package name="front" extends="struts-default" namespace="/front">
??????? <action name="index">
??????????? <result>/Namespace.jsp</result>
??????? </action>
??? </package>
???
???? <package name="main" extends="struts-default" namespace="">
??????? <action name="index">
??????????? <result>/Namespace2.jsp</result>
??????? </action>
??? </package>
?
?
第一个Action的访问路径为:http://localhost:8080/Struts2_0200_Namespace/front/index.action
?
第二个Action的访问路径为:http://localhost:8080/Struts2_0200_Namespace/faront/index.action
任何没有配Namespace 的action都会被第二个处理
?
?
?
Wildcard
?
<struts>
??? <constant name="struts.devMode" value="true" />
??? <package name="actions" extends="struts-default" namespace="/actions">
??????? <action name="Student*" method="{1}">
??????????? <result>/Student{1}_success.jsp</result>
??????? </action>
???????
??????? <action name="*_*" method="{2}">
??????????? <result>/{1}_{2}_success.jsp</result>
??????????? <!-- {0}_success.jsp -->
??????? </action>
??? </package>
</struts>
?
调用方式??/actions/Studentadd?? /actions/Studentdelete? 等等
?
?
?
Action:
第一中方式:?? 一个普通的Java类
第二种方式:? public class IndexAction2 implements Action
第三种方式:? public class IndexAction3 extends ActionSupport
?
一般用第三种。
?
public class IndexAction3 extends ActionSupport {
?
?@Override
?public String execute() {
??return "success";
?}
}
?
?
?
Path
??? <%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
?
<base href="<%=basePath%>" />
<a href="index.jsp">index.jsp</a>
可以用相对路径代替绝对路径
?
?
如果没有<base href="<%=basePath%>" />
<a href="/index.jsp">index.jsp</a>?
应该写绝对路径
?
?
?
?
方法调用有两种方式
?
第一种方式:指定方法名
第二种方式:动态的方法调用
?
??? <package name="user" extends="struts-default" namespace="/user">
??????? <action name="userAdd" method="add">
??????????? <result>/user_add_success.jsp</result>
??????? </action>
???????
??????? <action name="user" + name);
??System.out.println("age=" + age);
??return SUCCESS;
?}
?public String getName() {
??return name;
?}
?public void setName(String name) {
??this.name = name;
?}
?public int getAge() {
??return age;
?}
?public void setAge(int age) {
??this.age = age;
?}?
?
}
XML如下:
<struts>
??? <constant name="struts.devMode" value="true" />
??? <package name="user" extends="struts-default" namespace="/user">
???????
??????? <action name="user" + user.getName());
??System.out.println("age=" + user.getAge());
??return SUCCESS;
?}
?public User getUser() {
??return user;
?}
?public void setUser(User user) {
??this.user = user;
?}
?
}
User 类:
public class User {
?private String name;
?private int age;
?public String getName() {
??return name;
?}
?public void setName(String name) {
??this.name = name;
?}
?public int getAge() {
??return age;
?}
?public void setAge(int age) {
??this.age = age;
?}
}
?
XML
<struts>
??? <constant name="struts.devMode" value="true" />
??? <package name="user" extends="struts-default" namespace="/user">
???????
??????? <action name="user" class="com.bjsxt.struts2.user.action.UserAction">
??????????? <result>/user_add_success.jsp</result>
??????? </action>
??? </package>
</struts>
?
调用方式:
http://localhost:8080/Struts2_0800_DomainModelParamInput/user/user!add?user.name="zhangsan"&user.age=1
?
?
3 DTO
public class UserDTO {
?private String name;
?private String password;
?private String confirmingPassword;
}
在Action里面接受参数的时候用的是UserDTO
http://localhost:8080/Struts2_0800_DomainModelParamInput/user/user!add?userDTO.name="zhangsan"&userDTO.age=1
?从UserDTO里面拿出相应的参数填充到UserDTO里面去就好了
?
?
?
?
?
?