刚開始学习的人非常有用:struts2中将jsp数据传到action的几种方式

Posted slgkaifa

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了刚開始学习的人非常有用:struts2中将jsp数据传到action的几种方式相关的知识,希望对你有一定的参考价值。

先给上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;
/**
 * 方式一:直接在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>username</td>
      <td><input type="text" name="name"></td>
      <td> </td>
     </tr>
     <tr>
      <td>密 码</td>
      <td><input type="text" name="pass"></td>
      <td> </td>
     </tr>
     <tr>
      <td><input type="submit" value="sure" ></td>
      <td><input type="reset" value="reset" ></td>
      <td> </td>
     </tr>
    </table>
   </form>

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

另外一种传參方式:

import com.opensymphony.xwork2.ActionSupport;
/**
* 方式二:把属性封装到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>username</td>
      <td><input type="text" name="user.name"></td>
      <td> </td>
     </tr>
     <tr>
      <td>密 码</td>
      <td><input type="text" name="user.pass"></td>
      <td> </td>
     </tr>
     <tr>
      <td><input type="submit" value="sure" ></td>
      <td><input type="reset" value="reset" ></td>
      <td> </td>
     </tr>
    </table>
   </form>

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

第三种传參方式:

import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
/**
* 方式三:实现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>username</td>
      <td><input type="text" name="name"></td>
      <td> </td>
     </tr>
     <tr>
      <td>密 码</td>
      <td><input type="text" name="pass"></td>
      <td> </td>
     </tr>
     <tr>
      <td><input type="submit" value="sure" ></td>
      <td><input type="reset" value="reset" ></td>
      <td> </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;
}
}


在开发中最经常使用的就是DTO和实现ModelDriven两种。要掌握哟!~

















以上是关于刚開始学习的人非常有用:struts2中将jsp数据传到action的几种方式的主要内容,如果未能解决你的问题,请参考以下文章

为刚開始学习的人答效率的问题

AndroidStudio刚開始学习的人

oracle刚開始学习的人经常使用操作100问

wxWidgets刚開始学习的人导引——wxWidgets学习材料清单

Servlet之生命周期入门版(刚開始学习的人必看)

JavaScript 刚開始学习的人应知的 24 条最佳实践