目录
整理了四种接受参数的方法 用的框架是struts2 推荐第四种 简单而且适合参数的多的情况
这里附上测试用的jsp
- <%@ page contentType="text/html;charset=UTF-8" language="java" %>
- <html>
- <head>
- <title>action的参数传递</title>
- </head>
- <body>
- <form action="${pageContext.request.contextPath}/login.action" method="post">
- 用户名<input type="text" name="name"><br>
- 密码<input type="password" name="password"><br>
- <input type="submit" value="登录">
- </form>
- <!-- 第三种方式 -->
- <%--<form action="${pageContext.request.contextPath}/login.action" method="post">
- 用户名<input type="text" name="user.name"><br>
- 密码<input type="password" name="user.password"><br>
- <input type="submit" value="登录">
- </form>--%>
- </body>
- </html>
通过ServletActionContext.getRequest()取得Request实例后直接获取参数
- import javax.servlet.http.HttpServletRequest;
- import org.apache.struts2.ServletActionContext;
- import com.opensymphony.xwork2.ActionSupport;
- public class LoginAction extends ActionSupport {
- public String login() {
- //通过request对象获取请求参数
- HttpServletRequest request = ServletActionContext.getRequest();
- String name = request.getParameter("name");
- String password = request.getParameter("password");
- //打印属性
- System.out.println(name);
- System.out.println(password);
- return NONE;
- }
- }
这里一定要设置set方法 因为拦截器会调用属性的set方法对其赋值
- package com.xin.action;
- import com.opensymphony.xwork2.ActionSupport;
- public class LoginAction2 extends ActionSupport{
- private String name;
- private String password;
- //通过set方法的println方法可知struts2会自动调用set方法
- public void setPassword(String password) {
- System.out.println("setPassword");
- this.password = password;
- }
- public void setName(String name) {
- System.out.println("setname");
- this.name = name;
- }
- public String login(){
- //第二种方式:通过属性的set注入获取请求参数
- System.out.println(name);
- System.out.println(password);
- return NONE;
- }
- }
这里也需要模型User的get和set方法 而且在jsp的表单中还需要对参数进行更改(加上模型的前缀)jsp在前面
- import com.opensymphony.xwork2.ActionSupport;
- import domain.User;
- public class LoginAction3 extends ActionSupport{
- private User user;
- public User getUser() {
- return user;
- }
- public void setUser(User user) {
- this.user = user;
- }
- public String login(){
- //第三种方式:通过模型的set注入获取请求参数
- System.out.println(user.getName());
- System.out.println(user.getPassword());
- return NONE;
- }
- }
创建的模型(实体类User)
- public class User{
- private String name;
- private String password;
- public String getPassword() {
- return password;
- }
- public void setPassword(String password) {
- this.password = password;
- }
- public String getName() {
- return name;
- }
- public void setName(String name) {
- this.name = name;
- }
- @Override
- public String toString() {
- return "User{" +
- "name='" + name + '\'' +
- ", password='" + password + '\'' +
- '}';
- }
- }
模型驱动(ModelDriven)是struts2提供的接口 实现此接口的类只需要提供模型(自己创建的User类)就可以了
User类在第三种方法提供了 一般实际开发以此种方法为多 还有注意要创建实例
- import com.opensymphony.xwork2.ActionSupport;
- import com.opensymphony.xwork2.ModelDriven;
- import domain.User;
- public class LoginAction4 extends ActionSupport implements ModelDriven<User> {
- private User user=new User();//这里注意要创建实例 否则找不到实例传不了值
- //实现了模型驱动后不需要提供getset方法 但是需要在getModel中返回实例对象
- public String login(){
- // 第四种方式:通过通过模型驱动的方法注入获取请求参数
- System.out.println(user);
- return NONE;
- }
- @Override
- public User getModel() {
- return user;
- }
- }
struts2.3.37 IDEA Tomcat8.5 JDK1.8
联系客服