一.功能
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();