您的位置:首页 > 编程语言 > Java开发

struts2笔记之共享数据的3种方式和请求参数封装

2017-11-16 14:27 525 查看
sruts2的数据共享的三种方式
第一种方式
ServletActionContext类
ServletActionContext.getRequest():获取Request对象:request.setAttribute("key", value)
ServletActionContext.getRequest().getSession() :获取Session对象:session.setAttribute("key", value)
ServletActionContext.getServletContext() :获取ServletContext对象servletContext.setAttribute("key", value)
该方式依赖servlet的api,耦合比较高

第二种方式
ActionContext类:ActionContext actionContext = ActionContext.getContext();
actionContext .getContextMap():获取操作request域对象数据的map集合
actionContext .getSession():获取操作session域对象数据的map集合
actionContext .getApplication():获取操作context域对象数据的map集合
不依赖servlet的api,耦合性低
actionContext对象在Action对象被Struts2创建后,才被框架创建
第三种方式
RequestAware,SessionAware,ApplicationAware 接口
不依赖servlet的api
可以在Action对象的所有方法中共享Map集合
sruts2请求参数数据的封装
1.直接赋值给简单数据类型
public class UserAction extends ActionSupport{
//参数赋值(注入方式)
private String name; //变量名要和jsp页面的name值一一对应
private String password;
private String gender;
private String[] hobit;
//参数通过这个set方法注入到Action中
public void setName(String name) {
this.name = name;
}
public void setPassword(String password) {
this.password = password;
}
public void setGender(String gender) {
this.gender = gender;
}
public void setHobit(String[] hobit) {
this.hobit = hobit;
}

2.赋值给一个javabean对象
<form action="${pageContext.request.contextPath }/data/user_register.action" method="post">
用户名: <input type="text" name="user.name"/><br/>
密码: <input type="password" name="user.password"/><br/>
性别: <input type="radio" name="user.gender" value="男"/>男
<input type="radio" name="user.gender" value="女"/>女<br/>
爱好:
<input type="checkbox" name="user.hobit" value="篮球"/>篮球
<input type="checkbox" name="user.hobit" value="足球"/>足球
<input type="checkbox" name="user.hobit" value="羽毛球"/>羽毛球<br/>
<input type="submit" value="注册"/>
</form>
public class UserAction2 extends ActionSupport{
private User user; //使用一个javabean对象接收,变量名要和jsp页面的name一一对应

public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
请求参数的封装通过struts2的ParametersInterceptor拦截器进行赋值.
action执行的时候会先执行validate方法对参数进行一些列的验证,如果他发现当前对象包含fieldError信息,就会直接给你跳转到input视图
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  struts2.0
相关文章推荐