Struts2框架(三)

action获取表单提交数据

在struts2框架中关于Action处理请求参数有两种方案(三个方式),表单属性的名称应该和在Action类中定义的成员属性或者在JavaBean中定义的成员属性名称一样。下面所有实例都是以登录页面为例进行讲解。

 

为了能够顺利完成这部分的内容,大家要准备如以下几个工作。

1、数据库类的创建(https://mp.csdn.net/console/editor/html/105462490

2、数据表的实体类的创建(https://mp.csdn.net/console/editor/html/105462490

3、数据表的业务类的创建(https://mp.csdn.net/console/editor/html/105462574

在业务类中要添加以下检测用户的方法,代码如下。

/**

 * 该方法用于检测指定的用户名和密码是否存在若存在返回true,否则返回fase

 * @param name 要检测的用户名

 * @param pass 要检测的密码

 * @return 若用户存在则返回true,否则返回false

 */

public static boolean checkUser(String name,String pass){

//定义要执行的sql命令

String sql="select id,name,pass from login where name=? and pass=?";

//设置命令参数值

Object[] para=new Object[]{new String(name),new String(pass)};

//创建数据表的实体类的对象

LoginEntity login=new LoginEntity();

//调用数据库类DataConnection中的query()方法返回数据集

List<LoginEntity> list= new DataConnection().query(login.getClass(), sql, para);

if(list.size()>0){

return true;

}else{

return false;

}

}

 

一、属性驱动

1、直接在Action类中定义成员属性来接收请求参数 (将Action当成javaBean),在Action中还需要定义成员属性的setter方法。

(1)、创建一个登录表单login.html,代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

<link rel="stylesheet" type="text/css" href="js/themes/default/easyui.css">

<link rel="stylesheet" type="text/css" href="js/themes/icon.css">

<script type="text/javascript" src="js/jquery.min.js"></script>

<script type="text/javascript" src="js/jquery.easyui.min.js"></script>

<script type="text/javascript" src="js/easyui-lang-zh_CN.js"></script>

<script type="text/javascript">

$(function(){

//在这里编写jquery easyui的代码

$('#ff').dialog({    

    title: '登录界面',    

    width: 300,    

    height: 160,    

    closed: false,    

    cache: false,    

    modal: true,

    buttons:[{

text:'登录',

handler:function(){

$('#ff').form('submit', {    

    url:"login",    //这是Action的名称

    onSubmit: function(){    

        if($("#name").val()=="")  {

         $.messager.alert('提示','用户名不能为空'); 

         return false;

        }  

        if($("#pass").val()=="")  {

         $.messager.alert('提示','用户密码不能为空'); 

         return false;

        }  

    },    

    success:function(data){    

        alert(data)    

    }    

});      

}

},{

text:'关闭',

handler:function(){

$.messager.alert('提示','你单击了关闭按钮');    

}

}]

});    

});

</script>

</head>

<body>

<form id="ff" method="post">

<table>

<tr>

<td>用户名:</td>

<td><input type="text" id="name" name="name" /><!--这里的name一定要和Action类中定义的name属性要一样-->

</tr>

<tr>

<td>密码:</td>

<td><input type="password" id="pass" name="pass" /><!--这里的pass一定要和Action类中定义的pass属性要一样-->

</tr>

</table>

</form>

</body>

</html>

 

 

(2)创建action,LoginAction.java文件的代码如下。

package action;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

import bussiness.Blogin;

public class LoginAction extends ActionSupport {

private HttpServletResponse response;// 用于获取servlet中的请求对象。便于向客户反馈信息 

private HttpServletRequest request;// 用于获取servlet中的请求对象。便于获取表单传送过来的各种数据,如删除或更新时传送过来的关键字id的值

private String name;//这个成员变量名要和表单中的用户输入域中的name一样,且要有get和set

private String pass; //这个成员变量名要和表单中的用户输入域中的pass一样,且要有get和set

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 LoginAction(){//该构造方法用于初始化接收信息和输出信息的编码为utf-8,避免中文出现乱码

response=ServletActionContext.getResponse();//获取Response对象

request=ServletActionContext.getRequest();//获取Request对象

try {

request.setCharacterEncoding("utf-8");//设置接数据的编码为utf-8

response.setContentType("text/html;charset=utf-8");//设置输出编码为utf-8,以防出现乱码

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

@Override

public String execute() throws Exception {

if(Blogin.checkUser(name, pass)){

response.getWriter().println("登录成功");

}else{

response.getWriter().println("登录失败");

}

return null;

}

}

 

(3)struts.xml文件代码如下。

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<constant name="struts.devMode" value="true" />

<package name="default" namespace="/" extends="struts-default">

         <action name="login" class="action.LoginAction">

         </action>

     </package>

</struts>

运行程序,如下图所示。

 

2、直接将javaBean做为Action的属性,即用login数据表的实体类作为Action的属性

(1)、创建一个登录表单login.html,代码如下:

 

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

<link rel="stylesheet" type="text/css" href="js/themes/default/easyui.css">

<link rel="stylesheet" type="text/css" href="js/themes/icon.css">

 

<script type="text/javascript" src="js/jquery.min.js"></script>

<script type="text/javascript" src="js/jquery.easyui.min.js"></script>

<script type="text/javascript" src="js/easyui-lang-zh_CN.js"></script>

 

<script type="text/javascript">

$(function(){

//在这里编写jquery easyui的代码

$('#ff').dialog({    

    title: '登录界面',    

    width: 300,    

    height: 160,    

    closed: false,    

    cache: false,    

    modal: true,

    buttons:[{

text:'登录',

handler:function(){

$('#ff').form('submit', {    

    url:"login",    

    onSubmit: function(){    

        if($("#name").val()=="")  {

         $.messager.alert('提示','用户名不能为空'); 

         return false;

        }  

        if($("#pass").val()=="")  {

         $.messager.alert('提示','用户密码不能为空'); 

         return false;

        }  

    },    

    success:function(data){    

        alert(data)    

    }    

});      

}

},{

text:'关闭',

handler:function(){

$('#ff').dialog("close");    

}

}]

});    

});

 

</script>

</head>

<body>

<form id="ff" method="post">

<table>

<tr>

<td>用户名:</td>

<td><input type="text" id="name" name="loginEntity.name" /><!--这里的loginEntity.name一定要和Action类中定义的loginEntity.name属性要一样-->

</tr>

<tr>

<td>密码:</td>

<td><input type="password" id="pass" name="loginEntity.pass" /><!--这里的loginEntity.pass一定要和Action类中定义的loginEntity.pass属性要一样-->

</tr>

</table>

</form>

</body>

</html>

(2)创建action,LoginAction.java文件的代码如下。

package action;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

import bussiness.Blogin;

import entity.LoginEntity;

 

public class LoginAction extends ActionSupport {

private HttpServletResponse response;// 用于获取servlet中的请求对象。便于向客户反馈信息 

private HttpServletRequest request;// 用于获取servlet中的请求对象。便于获取表单传送过来的各种数据,如删除或更新时传送过来的关键字id的值

private LoginEntity loginEntity;//这个成员变量必须要有get和set,且和表单中的输入域名称要一样

public LoginEntity getLoginEntity() {

return loginEntity;

}

public void setLoginEntity(LoginEntity loginEntity) {

this.loginEntity = loginEntity;

}

 

public LoginAction(){//该构造方法用于初始化接收信息和输出信息的编码为utf-8,避免中文出现乱码

response=ServletActionContext.getResponse();//获取Response对象

request=ServletActionContext.getRequest();//获取Request对象

try {

request.setCharacterEncoding("utf-8");//设置接数据的编码为utf-8

response.setContentType("text/html;charset=utf-8");//设置输出编码为utf-8,以防出现乱码

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

@Override

public String execute() throws Exception {

if(Blogin.checkUser(loginEntity.getName(), loginEntity.getPass())){

response.getWriter().println("登录成功");

}else{

response.getWriter().println("登录失败");

}

return null;

}

}

(3)struts.xml文件代码如下。

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>

<constant name="struts.devMode" value="true" />

<package name="default" namespace="/" extends="struts-default">

         <action name="login" class="action.LoginAction">

         </action>

     </package>

</struts>

运行结果如下图所示。

3、模型驱动

(1)、创建一个登录表单login.html,代码如下:

<!DOCTYPE html>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

<link rel="stylesheet" type="text/css" href="js/themes/default/easyui.css">

<link rel="stylesheet" type="text/css" href="js/themes/icon.css">

 

<script type="text/javascript" src="js/jquery.min.js"></script>

<script type="text/javascript" src="js/jquery.easyui.min.js"></script>

<script type="text/javascript" src="js/easyui-lang-zh_CN.js"></script>

 

<script type="text/javascript">

$(function(){

//在这里编写jquery easyui的代码

$('#ff').dialog({    

    title: '登录界面',    

    width: 300,    

    height: 160,    

    closed: false,    

    cache: false,    

    modal: true,

    buttons:[{

text:'登录',

handler:function(){

$('#ff').form('submit', {    

    url:"login",    

    onSubmit: function(){    

        if($("#name").val()=="")  {

         $.messager.alert('提示','用户名不能为空'); 

         return false;

        }  

        if($("#pass").val()=="")  {

         $.messager.alert('提示','用户密码不能为空'); 

         return false;

        }  

    },    

    success:function(data){    

        alert(data)    

    }    

});      

}

},{

text:'关闭',

handler:function(){

$('#ff').dialog("close");    

}

}]

});    

});

 

</script>

</head>

<body>

<form id="ff" method="post">

<table>

<tr>

<td>用户名:</td>

<td><input type="text" id="name" name="loginEntity.name" /><!--这里的loginEntity.name一定要和Action类中定义的loginEntity.name属性要一样-->

</tr>

<tr>

<td>密码:</td>

<td><input type="password" id="pass" name="loginEntity.pass" /><!--这里的loginEntity.pass一定要和Action类中定义的loginEntity.pass属性要一样-->

</tr>

</table>

</form>

</body>

</html>

(2)创建action,LoginAction.java文件的代码如下。

package action;

import java.io.IOException;

import java.io.UnsupportedEncodingException;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ModelDriven;

import bussiness.Blogin;

import entity.LoginEntity;

public class LoginAction implements ModelDriven {

private HttpServletResponse response;// 用于获取servlet中的请求对象。便于向客户反馈信息

private HttpServletRequest request;// 用于获取servlet中的请求对象。便于获取表单传送过来的各种数据,如删除或更新时传送过来的关键字id的值

private LoginEntity loginEntity=new LoginEntity();//在这里必须进行实例化

public LoginEntity getLoginEntity() {

return loginEntity;

}

public void setLoginEntity(LoginEntity loginEntity) {

this.loginEntity = loginEntity;

}

@Override

public Object getModel() {

// TODO Auto-generated method stub

return loginEntity;

}

public LoginAction(){

response=ServletActionContext.getResponse();//获取Response对象

request=ServletActionContext.getRequest();//获取Request对象

try {

request.setCharacterEncoding("utf-8");//设置接数据的编码为utf-8

response.setContentType("text/html;charset=utf-8");//设置输出编码为utf-8,以防出现乱码

} catch (UnsupportedEncodingException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

public String execute() throws IOException{

if(Blogin.checkUser(loginEntity.getName(), loginEntity.getPass())){

response.getWriter().println("登录成功");

}else{

response.getWriter().println("登录失败");

}

return null;

}

}

(3)struts.xml文件内容如下。

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE struts PUBLIC

"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"

"http://struts.apache.org/dtds/struts-2.3.dtd">

 

<struts>

<constant name="struts.enable.DynamicMethodInvocation" value="true" />

<constant name="struts.devMode" value="true" />

<package name="default" namespace="/" extends="struts-default">

         <action name="login" class="action.LoginAction">

         </action>

     </package>

</struts>

运行结果如下。

转存失败重新上传取消

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值