版权声明:本文为博主原创文章,遵循 CC 4.0 BY 版权协议,转载请附上原文出处链接和本声明。
方式一:通过request获取
①、LoginAction.java
文件
package cn.hestyle.web.action;
import org.apache.struts2.ServletActionContext;
import javax.servlet.http.HttpServletRequest;
public class LoginAction {
private String username;
private String password;
public String login(){
//通过ServletActionContext获取request
HttpServletRequest request = ServletActionContext.getRequest();
//通过request获取参数
username = request.getParameter("username");
password = request.getParameter("password");
System.out.println("username=" + username + "\tpassword=" + password);
return "success";
}
}
②、对应的struts.xml
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="user" extends="struts-default">
<!-- 申明login动作,并使用LoginAction类中的login方法进行处理 -->
<action name="login" class="cn.hestyle.web.action.LoginAction" method="login"></action>
</package>
</struts>
③、前端index.jsp
界面
<%--
Created by IntelliJ IDEA.
User: hestyle
Date: 2019/10/20
Time: 2:35 下午
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/login.action" method="post">
<table border="1px">
<tr>
<td>用户名</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit"></td>
</tr>
</table>
</form>
</body>
</html>
④、浏览器访问
方式二:通过Action的属性的set方法注入
①、LoginAction.java
文件
package cn.hestyle.web.action;
public class LoginAction {
//通过set注入必须实现属性的setter方法!!!
private String username;
private String password;
public String login(){
System.out.println("username=" + username + "\tpassword=" + password);
return "success";
}
public void setUsername(String username) {
this.username = username;
System.out.println("调用了setUsername方法");
}
public void setPassword(String password) {
this.password = password;
System.out.println("调用了setPassword方法");
}
}
②、对应的struts.xml
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="user" extends="struts-default">
<!-- 申明login动作,并使用LoginAction类中的login方法进行处理 -->
<action name="login" class="cn.hestyle.web.action.LoginAction" method="login"></action>
</package>
</struts>
③、前端index.jsp
界面
<%--
Created by IntelliJ IDEA.
User: hestyle
Date: 2019/10/20
Time: 2:35 下午
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/login.action" method="post">
<table border="1px">
<tr>
<td>用户名</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit"></td>
</tr>
</table>
</form>
</body>
</html>
④、浏览器访问
方式三:通过Action的属性的set模型注入
该方法特点,需要将表单封装成一个model(类),并且前端表单项需要加上模型属性的前缀。
①、LoginAction.java
文件
package cn.hestyle.web.action;
import cn.hestyle.model.User;
public class LoginAction {
//user的各个属性必须实现getter、setter方法
private User user;
public User getUser() {
System.out.println("调用了getUser方法");
return user;
}
public void setUser(User user) {
System.out.println("调用了setUser方法");
this.user = user;
}
public String login(){
System.out.println(user);
return "success";
}
}
②、对应的struts.xml
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="user" extends="struts-default">
<!-- 申明login动作,并使用LoginAction类中的login方法进行处理 -->
<action name="login" class="cn.hestyle.web.action.LoginAction" method="login"></action>
</package>
</struts>
③、前端index.jsp
界面
<%--
Created by IntelliJ IDEA.
User: hestyle
Date: 2019/10/20
Time: 2:35 下午
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/login.action" method="post">
<table border="1px">
<tr>
<td>用户名</td>
<!-- 表单参数username需要加上user前缀 -->
<td><input type="text" name="user.username"></td>
</tr>
<tr>
<td>密码</td>
<!-- 表单参数password需要加上user前缀 -->
<td><input type="password" name="user.password"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit"></td>
</tr>
</table>
</form>
</body>
</html>
④、浏览器访问
方式四:通过Action模型驱动封装( )
该方法特点,需要将表单封装成一个model(类),需要实现ModelDriven接口。
①、LoginAction.java
文件
package cn.hestyle.web.action;
import cn.hestyle.model.User;
import com.opensymphony.xwork2.ModelDriven;
/**
* 通过实现ModelDriven<User>接口
*/
public class LoginAction implements ModelDriven<User> {
//user的各个属性必须实现getter、setter方法,并且user需要手动new出来
private User user = new User();
public String login(){
System.out.println(user);
return "success";
}
@Override
public User getModel() {
System.out.println("调用了getModel方法");
return user;
}
}
②、对应的struts.xml
配置文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
"http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
<package name="user" extends="struts-default">
<!-- 申明login动作,并使用LoginAction类中的login方法进行处理 -->
<action name="login" class="cn.hestyle.web.action.LoginAction" method="login"></action>
</package>
</struts>
③、前端index.jsp
界面
<%--
Created by IntelliJ IDEA.
User: hestyle
Date: 2019/10/20
Time: 2:35 下午
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>用户登录</title>
</head>
<body>
<form action="${pageContext.request.contextPath}/login.action" method="post">
<table border="1px">
<tr>
<td>用户名</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit"></td>
</tr>
</table>
</form>
</body>
</html>
④、浏览器访问
参数注入原理:
ParametersInterceptor
、ModelDrivenInterceptor
两个拦截器
第四种方式最为简介,推荐使用第四种。
以上就是Struts2框架之Action获取请求参数的四种方式,各位道友给个关注、点个赞再走呗~