打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
关于Action接受参数的四种方法

目录

第一种:通过request对象获取请求参数

第二种:通过属性的set注入获取请求参数

第三种:通过模型的set注入获取请求参数

第四种:通过通过模型驱动的方法注入获取请求参数


整理了四种接受参数的方法 用的框架是struts2 推荐第四种 简单而且适合参数的多的情况

这里附上测试用的jsp

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>action的参数传递</title>
  5. </head>
  6. <body>
  7. <form action="${pageContext.request.contextPath}/login.action" method="post">
  8. 用户名<input type="text" name="name"><br>
  9. 密码<input type="password" name="password"><br>
  10. <input type="submit" value="登录">
  11. </form>
  12. <!-- 第三种方式 -->
  13. <%--<form action="${pageContext.request.contextPath}/login.action" method="post">
  14. 用户名<input type="text" name="user.name"><br>
  15. 密码<input type="password" name="user.password"><br>
  16. <input type="submit" value="登录">
  17. </form>--%>
  18. </body>
  19. </html>

第一种:通过request对象获取请求参数

通过ServletActionContext.getRequest()取得Request实例后直接获取参数

  1. import javax.servlet.http.HttpServletRequest;
  2. import org.apache.struts2.ServletActionContext;
  3. import com.opensymphony.xwork2.ActionSupport;
  4. public class LoginAction extends ActionSupport {
  5. public String login() {
  6. //通过request对象获取请求参数
  7. HttpServletRequest request = ServletActionContext.getRequest();
  8. String name = request.getParameter("name");
  9. String password = request.getParameter("password");
  10. //打印属性
  11. System.out.println(name);
  12. System.out.println(password);
  13. return NONE;
  14. }
  15. }

第二种:通过属性的set注入获取请求参数

这里一定要设置set方法 因为拦截器会调用属性的set方法对其赋值

  1. package com.xin.action;
  2. import com.opensymphony.xwork2.ActionSupport;
  3. public class LoginAction2 extends ActionSupport{
  4. private String name;
  5. private String password;
  6. //通过set方法的println方法可知struts2会自动调用set方法
  7. public void setPassword(String password) {
  8. System.out.println("setPassword");
  9. this.password = password;
  10. }
  11. public void setName(String name) {
  12. System.out.println("setname");
  13. this.name = name;
  14. }
  15. public String login(){
  16. //第二种方式:通过属性的set注入获取请求参数
  17. System.out.println(name);
  18. System.out.println(password);
  19. return NONE;
  20. }
  21. }

第三种:通过模型的set注入获取请求参数

这里也需要模型User的get和set方法 而且在jsp的表单中还需要对参数进行更改(加上模型的前缀)jsp在前面

  1. import com.opensymphony.xwork2.ActionSupport;
  2. import domain.User;
  3. public class LoginAction3 extends ActionSupport{
  4. private User user;
  5. public User getUser() {
  6. return user;
  7. }
  8. public void setUser(User user) {
  9. this.user = user;
  10. }
  11. public String login(){
  12. //第三种方式:通过模型的set注入获取请求参数
  13. System.out.println(user.getName());
  14. System.out.println(user.getPassword());
  15. return NONE;
  16. }
  17. }

创建的模型(实体类User)

  1. public class User{
  2. private String name;
  3. private String password;
  4. public String getPassword() {
  5. return password;
  6. }
  7. public void setPassword(String password) {
  8. this.password = password;
  9. }
  10. public String getName() {
  11. return name;
  12. }
  13. public void setName(String name) {
  14. this.name = name;
  15. }
  16. @Override
  17. public String toString() {
  18. return "User{" +
  19. "name='" + name + '\'' +
  20. ", password='" + password + '\'' +
  21. '}';
  22. }
  23. }

第四种:通过通过模型驱动的方法注入获取请求参数

模型驱动(ModelDriven)是struts2提供的接口 实现此接口的类只需要提供模型(自己创建的User类)就可以了

User类在第三种方法提供了 一般实际开发以此种方法为多 还有注意要创建实例

  1. import com.opensymphony.xwork2.ActionSupport;
  2. import com.opensymphony.xwork2.ModelDriven;
  3. import domain.User;
  4. public class LoginAction4 extends ActionSupport implements ModelDriven<User> {
  5. private User user=new User();//这里注意要创建实例 否则找不到实例传不了值
  6. //实现了模型驱动后不需要提供getset方法 但是需要在getModel中返回实例对象
  7. public String login(){
  8. // 第四种方式:通过通过模型驱动的方法注入获取请求参数
  9. System.out.println(user);
  10. return NONE;
  11. }
  12. @Override
  13. public User getModel() {
  14. return user;
  15. }
  16. }

测试环境

struts2.3.37 IDEA Tomcat8.5 JDK1.8

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
Action接收URL中的参数
Struts2教程
Struts2和JSP之间,List对象的传递
第二章 一个简单的Login 应用程序(Struts2)
Struts2的拦截器机制
Struts2教程9:实现自已的拦截器
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服