在struts2中获取请求参数
2016-10-09 22:56
295 查看
在struts2中获取请求参数:
1.属性驱动
(1)方式一:直接将action做一个model,就可以得到请求参数.
问题1:action封装请求参数,会不会存在线程安全问题?
不会:因为每一次请求,都是一个新的action。
缺点:需要单独定义javaBean,将action中属性copy到javaBean中。
优点:简单。
这种方式 ,底层是通过反射来实现的。
(2)方式二:在action中声明一个model。
private User user;提供get/set方法
在页面上使用ognl来描述
优点:简单,解决了第一种封装的问题
缺点:在页面上使用了ognl表达式,页面不通用了。
问题:这种方式,数据是怎样封装的?
是通过struts2中的interceptor进行了数据封装.
2.方式三:模型驱动(在开发中应用比较多)
步骤:
1.让action类实现ModelDriven
2.重写getModel方法
3.在action中实例化一个model对象,让getModel方法返回这个对象。
以下为三个案例的struts.xml文件的内容:
方式一案例:
Login1Action.java文件:
login1.jsp文件:
运行:http://localhost:8080/Struts2_Project/login1.jsp
结果:
输入tom和123得到tom用户名
方式二案例:
Login2Action.java文件:
User.java文件:
login2.jsp文件:
运行:http://localhost:8080/Struts2_Project/login2.jsp
结果:
输入tom和123得到tom用户名
方式三案例:
Login3Action.java文件:
login3.jsp文件:
运行:http://localhost:8080/Struts2_Project/login3.jsp
结果:
输入tom和123得到tom用户名
1.属性驱动
(1)方式一:直接将action做一个model,就可以得到请求参数.
问题1:action封装请求参数,会不会存在线程安全问题?
不会:因为每一次请求,都是一个新的action。
缺点:需要单独定义javaBean,将action中属性copy到javaBean中。
优点:简单。
这种方式 ,底层是通过反射来实现的。
(2)方式二:在action中声明一个model。
private User user;提供get/set方法
在页面上使用ognl来描述
优点:简单,解决了第一种封装的问题
缺点:在页面上使用了ognl表达式,页面不通用了。
问题:这种方式,数据是怎样封装的?
是通过struts2中的interceptor进行了数据封装.
2.方式三:模型驱动(在开发中应用比较多)
步骤:
1.让action类实现ModelDriven
2.重写getModel方法
3.在action中实例化一个model对象,让getModel方法返回这个对象。
public class Login3Action extends ActionSupport implements ModelDriven<User> { private User user = new User(); public User getModel() { return user; } } 优点:解决了属性驱动存在的问题 缺点:一次只能封装一个model对象.
以下为三个案例的struts.xml文件的内容:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <struts> <!-- 开启开发模式 --> <constant name="struts.devMode" value="true" /> <package name="p1" extends="struts-default"> <!-- 配置一个动作 --> <action name="sayHello" class="com.itheima.action.HelloAction" method="sayHello"> <!-- 配置结果视图 --> <result name="success">/success.jsp</result> </action> </package> <package name="default" namespace="/" extends="struts-default"> <action name="login" class="cn.itcast.action.LoginAction"> <result name="failer">/login.jsp</result> <result type="redirect">/success.jsp</result> </action> <action name="login1" class="cn.itcast.action.Login1Action"> <result name="failer">/login1.jsp</result> <result type="redirect">/success.jsp</result> </action> <action name="login2" class="cn.itcast.action.Login2Action"> <result name="failer">/login2.jsp</result> <result type="redirect">/success.jsp</result> </action> <action name="login3" class="cn.itcast.action.Login3Action"> <result name="failer">/login3.jsp</result> <result type="redirect">/success.jsp</result> </action> </package> </struts>
方式一案例:
Login1Action.java文件:
package cn.itcast.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import com.opensymphony.xwork2.ActionSupport; //获取请求参数 属性驱动 第一种,直接将action做为model public class Login1Action extends ActionSupport { 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; } @Override public String execute() throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); // 2.判断用户名与密码是否正确 if ("tom".equals(username) && "123".equals(password)) { request.getSession().setAttribute("username", username); return SUCCESS; } else { request.setAttribute("login.message", "用户名或密码错误"); return "failer"; } } }
login1.jsp文件:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> ${requestScope["login.message"] }<br> <form action="${pageContext.request.contextPath}/login1" method="post"> username:<input type="text" name="username"><br> password:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> </body> </html>
运行:http://localhost:8080/Struts2_Project/login1.jsp
结果:
输入tom和123得到tom用户名
方式二案例:
Login2Action.java文件:
package cn.itcast.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import cn.itcast.domain.User; import com.opensymphony.xwork2.ActionSupport; //获取请求参数 属性驱动 第二种,直接在action声明一个model public class Login2Action extends ActionSupport { private User user; public User getUser() { return user; } public void setUser(User user) { this.user = user; } @Override public String execute() throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); // 2.判断用户名与密码是否正确 if ("tom".equals(user.getUsername()) && "123".equals(user.getPassword())) { request.getSession().setAttribute("username", user.getUsername()); return SUCCESS; } else { request.setAttribute("login.message", "用户名或密码错误"); return "failer"; } } }
User.java文件:
package cn.itcast.domain; 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; } @Override public String toString() { return "User [username=" + username + ", password=" + password + "]"; } }
login2.jsp文件:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> ${requestScope["login.message"] }<br> <form action="${pageContext.request.contextPath}/login2" method="post"> username:<input type="text" name="user.username"><br> password:<input type="password" name="user.password"><br> <input type="submit" value="登录"> </form> </body> </html>
运行:http://localhost:8080/Struts2_Project/login2.jsp
结果:
输入tom和123得到tom用户名
方式三案例:
Login3Action.java文件:
package cn.itcast.action; import javax.servlet.http.HttpServletRequest; import org.apache.struts2.ServletActionContext; import cn.itcast.domain.User; import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.ModelDriven; //获取请求参数 模型驱动 public class Login3Action extends ActionSupport implements ModelDriven<User> { private User user = new User(); public User getModel() { return user; } @Override public String execute() throws Exception { HttpServletRequest request = ServletActionContext.getRequest(); // 2.判断用户名与密码是否正确 if ("tom".equals(user.getUsername()) && "123".equals(user.getPassword())) { request.getSession().setAttribute("username", user.getUsername()); return SUCCESS; } else { request.setAttribute("login.message", "用户名或密码错误"); return "failer"; } } }
login3.jsp文件:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index.jsp' starting page</title> </head> <body> ${requestScope["login.message"] }<br> <form action="${pageContext.request.contextPath}/login3" method="post"> username:<input type="text" name="username"><br> password:<input type="password" name="password"><br> <input type="submit" value="登录"> </form> </body> </html>
运行:http://localhost:8080/Struts2_Project/login3.jsp
结果:
输入tom和123得到tom用户名
相关文章推荐
- struts2之Action获取请求参数与web元素
- 使用Struts2获取请求参数:Ljava.lang.String; cannot be cast to java.lang.String
- Struts2 获取表单请求参数
- struts2拦截器获取http请求参数
- struts2业务控制类(Action)获取页面请求参数的几种方式
- Struts2 HttpServletRequest获取请求参数的过程
- struts2之Action获取请求参数与web元素(四)
- 用el表达式和Struts2 分别获取url请求的参数
- 在struts2中获取请求action名称或参数
- struts2获取请求参数-----属性驱动3种
- 在Struts2拦截器中获取请求action名称及参数
- SSH:Struts2的Action中获取GET请求参数中文乱码问题
- 16_struts2_1请求参数获取和校验
- struts2获取请求参数的三种方式及传递给JSP参数的方式
- Struts2中获取请求参数
- 在Struts2拦截器中获取请求action名称及参数
- struts2中获取请求参数
- struts2之请求参数接收
- Struts2 请求参数的接收
- 传智Struts2笔记(8)接收请求参数