【郭林专刊】Struts2三种传参方式(从jsp页面传到Action) .

本文介绍了Struts2框架中的三种传参方式:直接在Action中写属性并提供set/get方法;将属性封装到DTO中并通过DTO传递;实现ModelDriven接口进行传参。此外还介绍了一种通过HttpServletRequest对象获取请求参数的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

多的不说,直接上代码;

struts.xml代码:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
"http://struts.apache.org/dtds/struts-2.1.dtd">
<struts>
<package name="login" namespace="/user" extends="struts-default">
<action name="*_*" class="com.wepull.struts2.action.{1}Action"
method="{2}">
<result name="success">{1}_{2}.jsp</result>
<result name="input">User_toLogin.jsp</result>
</action>
</package>
</struts>

第一种传参方式:

import com.opensymphony.xwork2.ActionSupport;
/**
* Struts2三种传参方式(从jsp页面传到Action)
*
* 方式一:直接在action中写属性,然后写set、get方法
*1.在Action里添加属性,属性名要对应jsp上的属性名
* 2.添加相应的set方法
*
*/
public class UserAction extends ActionSupport {
private String name;
private String pass;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}


public String doLogin(){
String forward="input";
//System.out.println(name+" "+pass);
if("wepull".equalsIgnoreCase(name)&&"123".equalsIgnoreCase(pass)){
return SUCCESS; //登录成功,返回成功页面
}else{
return forward; //登录失败,返回重新登录
}
}

public String toLogin(){
return SUCCESS; //进入登录页面
}


}

------------------------------------------------------------------------------------------------------------------------------

User_toLogin.jsp页面:

<form action="user/User_doLogin">
<table>
<tr>
<td>用户名</td>
<td><input type="text" name="name"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>密 码</td>
<td><input type="text" name="pass"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><input type="submit" value="sure" ></td>
<td><input type="reset" value="reset" ></td>
<td>&nbsp;</td>
</tr>
</table>
</form>

##########################################################################

第二种传参方式:

import com.opensymphony.xwork2.ActionSupport;
/**
* Struts2三种传参方式(从jsp页面传到Action)
*
* 方式二:把属性封装到dto中,传值时以dto名字.其中属性
*1.在Action里添加属性,属性名要对应jsp上的属性名
* 2.添加相应的set方法
*
*/
public class UserAction extends ActionSupport {
private UserDTO user;
public UserDTO getUser() {
return user;
}
public void setUser(UserDTO user) {
this.user = user;
}

public String doLogin(){
String forward="input";
//System.out.println(user.getName()+" "+user.getPass());
if("wepull".equalsIgnoreCase(user.getName())&&"123".equalsIgnoreCase(user.getPass())){
return SUCCESS;
}else{
return forward;
}
}

public String toLogin(){
return SUCCESS;
}
}

------------------------------------------------------------------------------------------------------------------------------

UserDTO.java代码

public class UserDTO {
private String id;
private String name;
private String pass;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
}

------------------------------------------------------------------------------------------------------------------------------

User_toLogin.jsp页面:

<form action="user/User_doLogin">
<table>
<tr>
<td>用户名</td>
<td><input type="text" name="user.name"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>密 码</td>
<td><input type="text" name="user.pass"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><input type="submit" value="sure" ></td>
<td><input type="reset" value="reset" ></td>
<td>&nbsp;</td>
</tr>
</table>
</form>

##########################################################################

第三种传参方式:

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
* Struts2三种传参方式(从jsp页面传到Action)
*
* 方式三:实现ModelDriven
*实现ModelDriven接口
*
*/
public class UserAction extends ActionSupport implements ModelDriven<UserDTO>{
private UserDTO user;

public UserDTO getUser() {
return user;
}
public void setUser(UserDTO user) {
this.user = user;
}

public String doLogin(){
String forward="input";
//System.out.println(user.getName()+" "+user.getPass());
if("wepull".equalsIgnoreCase(user.getName())&&"123".equalsIgnoreCase(user.getPass())){
return SUCCESS;
}else{
return forward;
}
}

public String toLogin(){
return SUCCESS;
}
public UserDTO getModel() {
if(user==null){
user=new UserDTO();
}
return user;
}
}

------------------------------------------------------------------------------------------------------------------------------

User_toLogin.jsp页面:

<form action="user/User_doLogin">
<table>
<tr>
<td>用户名</td>
<td><input type="text" name="name"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td>密 码</td>
<td><input type="text" name="pass"></td>
<td>&nbsp;</td>
</tr>
<tr>
<td><input type="submit" value="sure" ></td>
<td><input type="reset" value="reset" ></td>
<td>&nbsp;</td>
</tr>
</table>
</form>

&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

另外,在介绍一种通过HttpServletRequest request 传参方式

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
* 获取request参数的方式
*HttpServletRequest request 传参方式
*
*/
public class UserAction extends ActionSupport{


public String doLogin(){
//获取request对象
HttpServletRequest request=ServletActionContext.getRequest();
//获取session对象
//HttpSession session=request.getSession();
String name=request.getParameter("name");
String pass=request.getParameter("pass");
String forward="input";
if("wepull".equalsIgnoreCase(name)&&"123".equalsIgnoreCase(pass)){
return SUCCESS;
}else{
return forward;
}
}

public String toLogin(){
return SUCCESS;
}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值