【Struts2集锦】-界面访问取值赋值
2016-01-15 09:48
513 查看
界面传值取值在编写web项目的时候总是避免不了的。最近在看Struts2基础视频,敲代码敲多了,应该补充一下基础知识了。
(1)首先创建User实体
(2)Action实现ModelDriven接口,实现getModel()方法,返回Bean对象
(2)直接定义User对象,创建getset方法
Struts2的Action访问Servlet
1.可以通过ActionContext访问Servlet
* ServletResponseAware取得HttpServletResponse对象
* ServletContextAware取得ServletContext对象(工具类)
举例:
*getRequest();
*getResponse();
*getServletContext();
第一种没有侵入性,剩下的两种有侵入性,但是一般会用第三种比较简单。因为一般Action不复用和测试,所以侵入也没有事儿。
无论做什么事儿,实现的方法总会有很多种,所以我们应该了解所有的方法,选择最合适的一种做法
取值赋值的两种方式
1.采用ModelDriven
举例:(1)首先创建User实体
public class User { private String username; private String password; 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; } }
(2)Action实现ModelDriven接口,实现getModel()方法,返回Bean对象
/** * 功能: 用ModelDriven方法收集数据 * 作者: 宋笑 * 日期: 2016-1-12 下午12:47:56 * */ public class LoginAction implements Action, ModelDriven<User> { private User user = new User(); public String execute() throws Exception { //Action中取值 if ("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())) { return SUCCESS; }else { return ERROR; } } // 实现getModel()方法,返回User对象 public User getModel() { return user; } }界面取值
<body> <form action="login.action"> 用户:<input type="text" name="username"><br> 密码:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> </body>
2.直接对Action中的对象赋值
(1)首先创建User实体(与上述一样)(2)直接定义User对象,创建getset方法
/** * 功能: 直接对Action中的对象赋值 * 作者: 宋笑 * 日期: 2016-1-12 下午12:47:56 * */ public class LoginAction implements Action { //定义User实体对象 private User user; public String execute() throws Exception { //取值 if ("admin".equals(user.getUsername()) && "admin".equals(user.getPassword())) { return SUCCESS; }else { return ERROR; } } public User getUser() { return user; } public void setUser(User user) { this.user = user; } }在html中可以采用如下方式命名输入域
<form action="login.action"> 用户:<input type="text" name="user.username"><br> 密码:<input type="password" name="user.password"><br> <input type="submit" value="登录"> </form>
Struts2的Action访问Servlet
API三种方式
1.可以通过ActionContext访问Servlet
API,获取或存入数据。此种方式没有侵入性
//将登录信息设置到session中 ActionContext.getContext().getSession().put("user", username); //采用如下方式访问request对象 ActionContext.getContext().put("user", username); //采用如下方式访问application对象 ActionContext.getContext().getApplication().put("user", username); //通过request.getParameter()取得数据 String username = (String)ActionContext.getContext().getParameters().get("username");
2.可以通过实现装配接口没,完成对Servlet API的访问
* ServletRequestAware取得HttpServletRequest对象* ServletResponseAware取得HttpServletResponse对象
* ServletContextAware取得ServletContext对象(工具类)
举例:
/** * 功能: 实现 ServletRequestAware,ServletResponseAware接口,访问ServletAPI * 作者: 宋笑 * 日期: 2016-1-12 下午01:02:48 * */ public class LoginAction implements Action, ServletRequestAware, ServletResponseAware { private String username; private String password; //定义request,response对象 private HttpServletRequest request; private HttpServletResponse response; 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 execute() throws Exception { if ("admin".equals(username) && "admin".equals(password)) { //将信息设置到session中 request.getSession().setAttribute("user", username); //采用如下方式访问request对象赋值 request.setAttribute("user", username); //通过request.getParameter()取得数据 request.getParameter("username"); return SUCCESS; }else { return ERROR; } } public void setServletRequest(HttpServletRequest request) { this.request = request; } public void setServletResponse(HttpServletResponse response) { this.response = response; } }
3.可以通过ServletActionContext提供的静态方法取得ServletAPI
*getPageContext();*getRequest();
*getResponse();
*getServletContext();
//session赋值 ServletActionContext.getRequest().getSession().setAttribute("user", username); //赋值 ServletActionContext.getPageContext().setAttribute("user", username); //赋值 ServletActionContext.getServletContext().setAttribute("user", username); //获取数据 ServletActionContext.getRequest().getParameter("username");
第一种没有侵入性,剩下的两种有侵入性,但是一般会用第三种比较简单。因为一般Action不复用和测试,所以侵入也没有事儿。
无论做什么事儿,实现的方法总会有很多种,所以我们应该了解所有的方法,选择最合适的一种做法
相关文章推荐
- XML和JSON相互转换类(JAVA)
- 另外几种Java集合框架详解续
- java简单的文件复制
- Eclipse创建java web工程配置Tomacat和JDK 【转】
- JDK8新特性-Lambda
- Java Web学习总结(3)——Servlet详解
- Java Web学习总结(2)——Servlet入门
- 23种java设计模式例子汇总
- SpringMVC中用@ParamVariable传递的参数包含斜杠(/)时,匹配不了报404错误的解决方案
- Eclipse常用快捷键
- Java Web学习总结(1)——JavaWeb开发入门
- Java Web学习总结(1)——JavaWeb开发入门
- Java Web学习总结(1)——JavaWeb开发入门
- Java Web+Mysql Get请求中文乱码的解决
- Java异常处理和设计
- Java SE 学习 第一节
- Java设计模式—单例设计模式(Singleton Pattern)完全解析
- Apriori算法的JAVA实现
- Spring中Bean的命名问题(id和name区别)及ref和idref之间的区别
- Java遍历Map数据的几种方式