[Java Web]Struts2基础总结(二)
2014-10-05 18:10
225 查看
Action接收参数的四种方法
在Action中定义属性和get、set方法,Struts2将会自动把接受的参数赋值到对应的属性:
在Action类中定义model对象并添加get、set方法,在model对象中定义属性添加get、set方法,Struts2会将属性传入model中:
使用DTO进行中间过渡,用于参数中带有不需要存入model的属性时:
实现ModelDriven接口,自行创建成员对象实例,实现getModel方法:
获取Request、Session和Application的四种方法:
使用ActionContext获取:
实现RequestAware、SessionAware、ApplicationAware接口,通过IOC注入获取:
通过ServletActionContext获取:
实现HttpRequestAware接口,通过IOC注入获取:
Result
Result标签有两个属性type和name,其中type有4种常用选项,分别为:
dispatcher(默认选项):转发到一个页面
redirect:重定向到一个页面
chain:转发到一个Action
redirectAction :重定向到一个Action
有些页面可以为所有Action服务,例如主页、错误页面等,可以使用<global-results>标签将这些页面的Result设置成全局Result:
同时Result也支持动态结果集,用法为"${r}",r代表ValueStack中的一个属性名。例如Action为:
或者用于重定向传递参数:
在Action中定义属性和get、set方法,Struts2将会自动把接受的参数赋值到对应的属性:
public class UserAction extends ActionSupport { private String name; private int age; public String execute() {<span style="white-space:pre"> </span>//localhost:8080/Struts/user?name=aaa&age=20 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; } }
在Action类中定义model对象并添加get、set方法,在model对象中定义属性添加get、set方法,Struts2会将属性传入model中:
public class UserAction extends ActionSupport { private User user; public String execute() {<span style="white-space:pre"> </span>//localhost:8080/Struts/user?user.name=a&user.age=19 return SUCCESS; } public User getUser() { return user; } public void setUser(User user) { this.user = user; } } 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; } }
使用DTO进行中间过渡,用于参数中带有不需要存入model的属性时:
public class UserAction extends ActionSupport { private UserDTO user; public String execute() { //localhost:8080/Struts/user?user.username=a&user.password=b&user.confirmingPassword=b return SUCCESS; } public User getUser() { return user; } public void setUser(UserDTO user) { this.user = user; } } class UserDTO { private String username; private String password; private String confirmingPassword; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getConfirmingPassword() { return confirmingPassword; } public void setConfirmingPassword(String confirmingPassword) { this.confirmingPassword = confirmingPassword; } }
实现ModelDriven接口,自行创建成员对象实例,实现getModel方法:
public class UserAction extends ActionSupport implements ModelDriven<User>{ private User user = new User(); public String add() { System.out.println("name=" + user.getName()); System.out.println("age=" + user.getAge()); return SUCCESS; } @Override public User getModel() { return user; } } 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; } }
获取Request、Session和Application的四种方法:
使用ActionContext获取:
public class TestAction extends ActionSupport { private Map request; private Map session; private Map application; public TestAction() { request = (Map)ActionContext.getContext().get("request"); session = ActionContext.getContext().getSession(); application = ActionContext.getContext().getApplication(); } public String execute() { request.put("username", "aaa"); session.put("password", "bbb"); application.put("name", "ccc"); return SUCCESS; } }
实现RequestAware、SessionAware、ApplicationAware接口,通过IOC注入获取:
public class TestAction extends ActionSupport implements RequestAware,SessionAware, ApplicationAware { private Map<String, Object> request; private Map<String, Object> session; private Map<String, Object> application; public String execute() { request.put("username", "aaa"); session.put("password", "bbb"); application.put("name", "ccc"); return SUCCESS; } @Override public void setRequest(Map<String, Object> request) { this.request = request; } @Override public void setSession(Map<String, Object> session) { this.session = session; } @Override public void setApplication(Map<String, Object> application) { this.application = application; } }
通过ServletActionContext获取:
public class TestAction extends ActionSupport { private HttpServletRequest request; private HttpSession session; private ServletContext application; public TestAction() { request = ServletActionContext.getRequest(); session = request.getSession(); application = session.getServletContext(); } public String execute() { request.setAttribute("username", "aaa"); session.setAttribute("password", "bbb"); application.setAttribute("name", "ccc"); return SUCCESS; } }
实现HttpRequestAware接口,通过IOC注入获取:
public class TestAction extends ActionSupport implements ServletRequestAware { private HttpServletRequest request; private HttpSession session; private ServletContext application; public String execute() { request.setAttribute("username", "aaa"); session.setAttribute("password", "bbb"); application.setAttribute("name", "ccc"); return SUCCESS; } @Override public void setServletRequest(HttpServletRequest request) { this.request = request; this.session = request.getSession(); this.application = session.getServletContext(); } }
Result
Result标签有两个属性type和name,其中type有4种常用选项,分别为:
dispatcher(默认选项):转发到一个页面
redirect:重定向到一个页面
chain:转发到一个Action
redirectAction :重定向到一个Action
有些页面可以为所有Action服务,例如主页、错误页面等,可以使用<global-results>标签将这些页面的Result设置成全局Result:
<global-results> <result name="error">/error.jsp</result> <result name="main">/index.jsp</result> </global-results>
同时Result也支持动态结果集,用法为"${r}",r代表ValueStack中的一个属性名。例如Action为:
public class UserAction extends ActionSupport { private int type; private String url; public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } public int getType() { return type; } public void setType(int type) { this.type = type; } @Override public String execute() throws Exception { if(type == 1) url="/success.jsp"; else if (type == 2) url="/error.jsp"; return "success"; } }struts.xml中的配置为:
<pre name="code" class="java"><action name="user" class="struts.action.UserAction"> <span style="white-space:pre"> </span><result>${url}</result> </action>
或者用于重定向传递参数:
<action name="user" class="struts.action.UserAction"> <result type="redirect">/user.jsp/type=${type}</result> </action>
相关文章推荐
- [Java Web]Struts2基础总结(一)
- [Java Web]Struts2基础总结(三)
- Java web基础总结二之—— http协议
- Java_WEB开发_struts2学习的总结_Iterate标签遍历
- Java web基础总结九之—— jsp标签
- [Java Web]Hibernate基础总结(二)
- [Java Web]Hibernate基础总结(三)
- 【JavaWeb】基础知识总结02 JSP
- Java web基础总结十之—— jsp EL表达式
- java web B/s的简单实用基础总结(1)
- Java web基础总结八之—— jsp基础
- Java_WEB开发_struts2学习的总结
- java web B/s的简单实用基础总结(2)
- Java web基础总结十之—— jsp EL表达式
- [JavaWeb基础] 009.Struts2 上传文件
- Java web基础总结七之—— Filter与Listener
- 【JavaWeb】基础知识总结04 JS基础
- 【JavaWeb】基础知识总结03 Servlet
- [Java Web]Hibernate基础总结(一)
- [JavaWeb基础] 007.Struts2的配置和简单使用