根據上一片文章Struts2環境配置中的用戶登陸小例子記錄三種方式
用戶登陸界面
該用戶界面下面的$.post提交方式適合於下面介紹的1)和2)兩種方式
(接收屬性和ModelDriven方式)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jslib/jquery-3.0.0.js"></script>
<script type="text/javascript">
$(function(){
$("[type='button']").click(function(){
$.post("checkLogin",{userName:$("[name='user']").val(),pwd:$("[name='pwd']").val()},function(data){
if(data=="1")
{
$("#info").html("用戶名或者密碼錯誤,請重新輸入");
}
else
{
location.href="main.jsp";
}
})
})
})
</script>
</head>
<body>
<table>
<tr><td>用戶名</td><td><input type="text" name="user"></td></tr>
<tr><td>密碼</td><td><input type="password" name="pwd"></td></tr>
<tr><td colspan="2"><input type="button" value="登陸"></td></tr>
</table>
<div id="info"></div>
</body>
</html>
$.post提交屬性到action用下面不同的3種方式來接收
1)繼承ModelDriven接口的方式
package action;
import java.io.PrintWriter;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import dao.UserDAO;
import model.User;
public class checkLoginAction extends ActionSupport implements ModelDriven<User>{
private UserDAO dao = new UserDAO();
private User user=new User();//定義並初始化一個模型
public User getUser() {
return user;
}
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
PrintWriter out = ServletActionContext.getResponse().getWriter();
HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("USER", user);
if(dao.checkLogin(user))
{
out.print("1");
}
return null;
}
//給模型添加屬性
@Override
public User getModel() {
// TODO Auto-generated method stub
return user;
}
}
2)接收屬性的方式
package action;
import java.io.PrintWriter;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import dao.UserDAO;
import model.User;
public class checkLoginAction extends ActionSupport{
private UserDAO dao = new UserDAO();
private String userName;
private String pwd;
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
PrintWriter out = ServletActionContext.getResponse().getWriter();
HttpSession session = ServletActionContext.getRequest().getSession();
User user = new User();
user.setUserName(userName);
user.setPwd(pwd);
session.setAttribute("USER", user);
if(dao.checkLogin(user))
{
out.print("1");
}
return null;
}
}
3)domain model方式(域模型)
與以上2種方式不同的是,這種方式需要在提交屬性的時候指定它的所屬對象,才能正確的封裝到該對象
如下$.post提交時需要提交的屬性是user.xxx屬性
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="jslib/jquery-3.0.0.js"></script>
<script type="text/javascript">
$(function(){
$("[type='button']").click(function(){
//提交屬性指定所屬對象
$.post("checkLogin",{"user.userName":$("[name='user']").val(),"user.pwd":$("[name='pwd']").val()},function(data){
if(data=="1")
{
$("#info").html("用戶名或者密碼錯誤,請重新輸入");
}
else
{
location.href="main.jsp";
}
})
})
})
</script>
</head>
<body>
<table>
<tr><td>用戶名</td><td><input type="text" name="user"></td></tr>
<tr><td>密碼</td><td><input type="password" name="pwd"></td></tr>
<tr><td colspan="2"><input type="button" value="登陸"></td></tr>
</table>
<div id="info"></div>
</body>
</html>
package action;
import java.io.PrintWriter;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionSupport;
import dao.UserDAO;
import model.User;
public class checkLoginAction extends ActionSupport{
private UserDAO dao = new UserDAO();
private User user;
public User getUser() {
return user;
}
//注入屬性
public void setUser(User user) {
this.user = user;
}
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
PrintWriter out = ServletActionContext.getResponse().getWriter();
HttpSession session = ServletActionContext.getRequest().getSession();
session.setAttribute("USER", user);
if(dao.checkLogin(user))
{
out.print("1");
}
return null;
}
}