Struts2(四.注册时检查用户名是否存在及Action获取数据的三种方式)

一.功能

1.用户注册页面

<%@ 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>注册</title>
<script type="text/javascript" src="jslib/jquery-1.11.1.js"></script>
<script type="text/javascript">
$(function(){
    $("[name='user.userName']").blur(function(){
        if($.trim($(this).val())=="")
        {
            $("[name='user.userName']").select();
            $("[name='user.userName']").focus();
            $("#msg").html("请输入用户名!");
            return false;
        }
        $.post("${pageContext.request.contextPath}/user/checkExists",{"user.userName":$(this).val()},function(data){
            $("[name='isExists']").val(data)
            if(data=="1")
            {
                $("#msg").html("用户名已存在,请重新输入!");
            }
        });
    });
});
</script>
</head>
<body>
用户注册
<br>
<br>
<form method="post" action="${pageContext.request.contextPath}/user/add">
<table>
<tr><td>用户名:</td><td><input type="text" name="user.userName"></td></tr>
<tr><td>密码:</td><td><input type="password" name="user.pwd"></td></tr>
<tr><td colspan="2"><input type="submit" value="提交"></td></tr>
</table>
</form>
<!-- 隐藏变量,用来判断用户名是否重复,不写在表单中,因为action中没有接收的属性-->
<input type="hidden" name="isExists" value="0"/>
<div id="msg"></div>
<br>
<br>
<a href="${pageContext.request.contextPath}/main.jsp">返回主页面</a>
</body>
</html>

2.UserAction

package myuser;

import java.io.PrintWriter;
import java.sql.SQLException;
import java.util.ArrayList;
import javax.naming.NamingException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import org.apache.struts2.ServletActionContext;
import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionSupport;
import mypicture.Picture;
import mypicture.PictureDAO;


/**
 * @author wanghaoran create 2018年4月8日下午3:18:55
 * 为了比较方便继承ActionSupport
 */
public class UserAction extends ActionSupport {
    
    /**
     * action运行的时候的servlet环境
     * 获取response
     */
    HttpServletResponse response=ServletActionContext.getResponse();
    /**
     * 获取request,再获取session
     */
    HttpServletRequest request=ServletActionContext.getRequest();
    HttpSession session=request.getSession();
    PrintWriter out;
    
    /**
     * 向action注入数据的方式,通常使用Domain Model的方式
     */
    private User user;
    
    public User getUser() {
        return user;
    }
    public void setUser(User user) {
        this.user = user;
    }
        /**
     * 检查与用户名是否重复
     * @return
     * @throws Exception
     */
    public String checkExists() throws Exception {
        out=response.getWriter();
        UserDAO dao=new UserDAO();
        if(dao.checkExists(user))
        {
            out.print("1");
        }
        else
        {
            out.print("0");
        }
        return null;
    }
}        

3.UserDAO

/**
     * 检查用户名是否重复
     * @param user
     * @return
     * @throws SQLException
     */
    public boolean checkExists(User user) throws SQLException
    {
        sql="select * from users where userName=?";
        boolean flag=false;
        ps=conn.prepareStatement(sql);
        ps.setString(1, user.getUserName());
        ResultSet rs=ps.executeQuery();
        if(rs.next())
        {
            flag=true;
        }
        conn.close();
        return flag;
    }

二.Action获取数据的三种方式

1.注入属性

UserAction:

private String userName;

private String getUserName(){
    return userName;
}
private void setUserName(String userName){
    this.userName=userName;
}

@Override
public String checkExists() throws Exception {
    User user = new User();
    user.setUserName(userName);
    UserDAO dao=new UserDAO();
    if(dao.checkExists(user))
    {
        out.print("1");
    }
    else
    {
        out.print("0");
    }
    return null;
}

前端:

$.post("checkExists.action",{"userName":$(this).val()},function(data)

2.Domain Model 这是一般常用的方式(工作中常用,本项目也使用此方法)

private User user;
然后做setter和getter

3.ModelDriven(使用很少)

(1)Action实现ModelDriven<User>接口并添加抽象方法
  public User getModel()
  {
    return user;
  }
(2)定义并初始化一个模型并生成setter和getter
  private User user = new User();

猜你喜欢

转载自www.cnblogs.com/zizi-tothemoon/p/9316786.html
今日推荐