使用ssh框架写一个基本的登录注册页面

From:
http://blog.csdn.net/lylyyg/article/details/46932493




1、建立数据库和用户表,简单考虑只建立user表,添加user_id、user_name、email、pass四个属性。

2、新建web工程。

3、第一种方法是直接右击项目名称选择Myeclipse一次选择添加structs2、springhibernate包。这种方法在后续编程中有可能造成许多jar包冲突。

  第二种是使用没有冲突的jar包。把structs、spring、Hibernate以及MySQL-connector-java(连接mysql数据库)添加到WebRoot/WEB-INF/bin目录下,并选中项目中要使用的所有jar包文件右击选择builtPath——>Add To Built Path

4、选择MyEclipse Database explorer Perspective。新建一个Database Driver。


上图配置自动在ApplicationContext.xml文件中自动生成dataSorce bean


选择要建立Hibernate反转映射的表右击选择Hibernate reverse Engineering配置表的各项属性后会生成如下文件


5、建立UserDao.java

  1. import java.util.List;  
  2. import com.domain.User;  
  3. public interface UserDao {  
  4.     User get(Integer id);  
  5.     Integer save(User user);  
  6.     void update(User user);  
  7.     void delete(User user);  
  8.     void delete(Integer id);  
  9.       
  10.     List<User> findByNameAndPass(User user);  
  11.     User findByName(String name);  
  12.     User findByEmail(String email);  
  13. }  
import java.util.List;
import com.domain.User;
public interface UserDao {
	User get(Integer id);
	Integer save(User user);
	void update(User user);
	void delete(User user);
	void delete(Integer id);
	
	List<User> findByNameAndPass(User user);
	User findByName(String name);
	User findByEmail(String email);
}

6、UserDaoHibernate.java

  1. package dao.persistence.impl;  
  2.   
  3. import java.util.*;  
  4. import com.common.hibernate3.support.YeekuHibernateDaoSupport;  
  5. import com.domain.*;  
  6. import dao.UserDao;  
  7. public class UserDaoHibernate extends YeekuHibernateDaoSupport implements UserDao{  
  8.     @Override  
  9.     public User get(Integer id){  
  10.         return getHibernateTemplate().get(User.class, id);  
  11.     }  
  12.   
  13.     @Override  
  14.     public Integer save(User user) {  
  15.         // TODO Auto-generated method stub  
  16.         Integer inte = (Integer)getHibernateTemplate().save(user);  
  17.         return inte;  
  18.     }  
  19.   
  20.     @Override  
  21.     public void update(User user) {  
  22.         // TODO Auto-generated method stub  
  23.         getHibernateTemplate().update(user);          
  24.     }  
  25.   
  26.     @Override  
  27.     public void delete(User user) {  
  28.         // TODO Auto-generated method stub  
  29.         getHibernateTemplate().delete(user);  
  30.     }  
  31.       
  32.     @Override  
  33.     public void delete(Integer id) {  
  34.         // TODO Auto-generated method stub  
  35.         getHibernateTemplate().delete(get(id));  
  36.     }  
  37.   
  38.     @SuppressWarnings("unchecked")  
  39.     @Override  
  40.     public List<User> findByNameAndPass(User user) {  
  41.         // TODO Auto-generated method stub  
  42.         return (List<User>)getHibernateTemplate()  
  43.                 .find("from User u where u.userName=? and u.pass=?", user.getUserName(), user.getPass());  
  44.     }  
  45.   
  46.     @Override  
  47.     public User findByName(String name) {  
  48.         // TODO Auto-generated method stub  
  49.         @SuppressWarnings("unchecked")  
  50.         List<User> us = (List<User>)getHibernateTemplate()  
  51.                 .find("from User where userName = ? " , name);  
  52.             if (us!= null && us.size() >= 1)  
  53.             {  
  54.                 return us.get(0);  
  55.             }  
  56.             return null;  
  57.     }  
  58.   
  59.     @Override  
  60.     public User findByEmail(String email) {  
  61.         // TODO Auto-generated method stub  
  62.         @SuppressWarnings("unchecked")  
  63.         List<User> us = (List<User>)getHibernateTemplate()  
  64.                 .find("from User where email = ? " , email);  
  65.             if (us!= null && us.size() >= 1)  
  66.             {  
  67.                 return us.get(0);  
  68.             }  
  69.             return null;  
  70.     }  
  71. }  
package dao.persistence.impl;

import java.util.*;
import com.common.hibernate3.support.YeekuHibernateDaoSupport;
import com.domain.*;
import dao.UserDao;
public class UserDaoHibernate extends YeekuHibernateDaoSupport implements UserDao{
	@Override
	public User get(Integer id){
		return getHibernateTemplate().get(User.class, id);
	}

	@Override
	public Integer save(User user) {
		// TODO Auto-generated method stub
		Integer inte = (Integer)getHibernateTemplate().save(user);
		return inte;
	}

	@Override
	public void update(User user) {
		// TODO Auto-generated method stub
		getHibernateTemplate().update(user);		
	}

	@Override
	public void delete(User user) {
		// TODO Auto-generated method stub
		getHibernateTemplate().delete(user);
	}
	
	@Override
	public void delete(Integer id) {
		// TODO Auto-generated method stub
		getHibernateTemplate().delete(get(id));
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<User> findByNameAndPass(User user) {
		// TODO Auto-generated method stub
		return (List<User>)getHibernateTemplate()
				.find("from User u where u.userName=? and u.pass=?", user.getUserName(), user.getPass());
	}

	@Override
	public User findByName(String name) {
		// TODO Auto-generated method stub
		@SuppressWarnings("unchecked")
		List<User> us = (List<User>)getHibernateTemplate()
				.find("from User where userName = ? " , name);
			if (us!= null && us.size() >= 1)
			{
				return us.get(0);
			}
			return null;
	}

	@Override
	public User findByEmail(String email) {
		// TODO Auto-generated method stub
		@SuppressWarnings("unchecked")
		List<User> us = (List<User>)getHibernateTemplate()
				.find("from User where email = ? " , email);
			if (us!= null && us.size() >= 1)
			{
				return us.get(0);
			}
			return null;
	}
}

7、UserService.java

  1. package com.service;  
  2.   
  3. import com.domain.*;  
  4. import java.util.*;  
  5. public interface UserService {  
  6. public User getByName(String name);  
  7. public User getByEmail(String email);  
  8. public boolean checkUser(User user);  
  9. public boolean addUser(User user);  
  10. }  
package com.service;

import com.domain.*;
import java.util.*;
public interface UserService {
public User getByName(String name);
public User getByEmail(String email);
public boolean checkUser(User user);
public boolean addUser(User user);
}

8、UserManageImpl.java

  1. package com.service.impl;  
  2.   
  3. import java.util.List;  
  4. import com.domain.User;  
  5. import com.service.UserService;  
  6. import dao.*;  
  7.   
  8. public class UserManagerImpl implements UserService {  
  9.   
  10.     private UserDao userdao;  
  11.       
  12.     public UserDao getUserdao() {  
  13.         return userdao;  
  14.     }  
  15.   
  16.     public void setUserdao(UserDao userdao) {  
  17.         this.userdao = userdao;  
  18.     }  
  19.   
  20.     @Override  
  21.     public User getByName(String name) {  
  22.         return userdao.findByName(name);  
  23.     }  
  24.   
  25.     @Override  
  26.     public User getByEmail(String email) {  
  27.         // TODO Auto-generated method stub  
  28.         return userdao.findByEmail(email);  
  29.     }  
  30.   
  31.     public boolean checkUser(User user){  
  32.         List<User> users= (userdao.findByNameAndPass(user));  
  33.         if(users.size()>0)  
  34.             return true;  
  35.         else  
  36.             return false;  
  37.     }  
  38.       
  39.     @Override  
  40.     public boolean addUser(User user) {  
  41.         // TODO Auto-generated method stub  
  42.         Integer ref=(Integer) userdao.save(user);  
  43.         if(ref!=null)  
  44.             return true;  
  45.         else  
  46.             return false;  
  47.     }  
  48.   
  49. }  
package com.service.impl;

import java.util.List;
import com.domain.User;
import com.service.UserService;
import dao.*;

public class UserManagerImpl implements UserService {

	private UserDao userdao;
	
	public UserDao getUserdao() {
		return userdao;
	}

	public void setUserdao(UserDao userdao) {
		this.userdao = userdao;
	}

	@Override
	public User getByName(String name) {
		return userdao.findByName(name);
	}

	@Override
	public User getByEmail(String email) {
		// TODO Auto-generated method stub
		return userdao.findByEmail(email);
	}

	public boolean checkUser(User user){
		List<User> users= (userdao.findByNameAndPass(user));
		if(users.size()>0)
			return true;
		else
			return false;
	}
	
	@Override
	public boolean addUser(User user) {
		// TODO Auto-generated method stub
		Integer ref=(Integer) userdao.save(user);
		if(ref!=null)
			return true;
		else
			return false;
	}

}

9、UserAction.java

  1. <pre name="code" class="java">package com.action;  
  2.   
  3. import net.sf.json.JSONObject;  
  4. import com.domain.User;  
  5. import com.opensymphony.xwork2.ActionSupport;  
  6. import com.opensymphony.xwork2.ModelDriven;  
  7. import com.service.UserService;  
  8.   
  9. @SuppressWarnings("serial")  
  10. public class UserAction extends ActionSupport implements ModelDriven {  
  11.     private String result;  
  12.     private UserService userservice;  
  13.     private User user;  
  14.   
  15.     public User getUser() {  
  16.         return user;  
  17.     }  
  18.   
  19.     public void setUser(User user) {  
  20.         this.user.setUserName(user.getUserName());  
  21.         this.user.setPass(user.getPass());  
  22.         this.user = user;  
  23.     }  
  24.   
  25.     public UserService getUserservice() {  
  26.         return userservice;  
  27.     }  
  28.   
  29.     public void setUserservice(UserService userservice) {  
  30.         this.userservice = userservice;  
  31.     }  
  32.   
  33.     public String getResult() {  
  34.         return result;  
  35.     }  
  36.   
  37.     public void setResult(String result) {  
  38.         this.result = result;  
  39.     }  
  40.   
  41.     @Override  
  42.     public Object getModel() {  
  43.         // TODO Auto-generated method stub  
  44.         if (user == null)  
  45.             user = new User();  
  46.         return user;  
  47.     }  
  48.   
  49.     public String checkUserName() {  
  50.         String warnMsg = "";  
  51.         User user = userservice.getByName(this.user.getUserName());  
  52.         if (user == null)  
  53.             warnMsg = "该用户名可用";  
  54.         else  
  55.             warnMsg = "该用户名已经存在";  
  56.         JSONObject jo = new JSONObject();  
  57.         jo.put("warnMsg", warnMsg);  
  58.         result = jo.toString();//向jsp页面传递一个result值  
  59.         return SUCCESS;  
  60.     }  
  61.   
  62.     public String checkUserEmail() {  
  63.         User user = userservice.getByEmail(this.user.getEmail());  
  64.         String warnMsg = "";  
  65.         if (user == null)  
  66.             warnMsg = "该邮箱可用";  
  67.         else  
  68.             warnMsg = "该邮箱已注册";  
  69.         JSONObject jo = new JSONObject();  
  70.         jo.put("warnMsg", warnMsg);  
  71.         result = jo.toString();  
  72.         return SUCCESS;  
  73.     }  
  74.   
  75.     public String login() {  
  76.         if (userservice.checkUser(user))  
  77.             return "success";  
  78.         else  
  79.             return "input";  
  80.     }  
  81.   
  82.     public String add() {  
  83.         if (userservice.addUser(user) == true)  
  84.             return "success";  
  85.         else  
  86.             return "input";  
  87.   
  88.     }  
  89.   
  90. }  
<pre name="code" class="java">package com.action;

import net.sf.json.JSONObject;
import com.domain.User;
import com.opensymphony.xwork2.ActionSupport;
import com.opensymphony.xwork2.ModelDriven;
import com.service.UserService;

@SuppressWarnings("serial")
public class UserAction extends ActionSupport implements ModelDriven {
	private String result;
	private UserService userservice;
	private User user;

	public User getUser() {
		return user;
	}

	public void setUser(User user) {
		this.user.setUserName(user.getUserName());
		this.user.setPass(user.getPass());
		this.user = user;
	}

	public UserService getUserservice() {
		return userservice;
	}

	public void setUserservice(UserService userservice) {
		this.userservice = userservice;
	}

	public String getResult() {
		return result;
	}

	public void setResult(String result) {
		this.result = result;
	}

	@Override
	public Object getModel() {
		// TODO Auto-generated method stub
		if (user == null)
			user = new User();
		return user;
	}

	public String checkUserName() {
		String warnMsg = "";
		User user = userservice.getByName(this.user.getUserName());
		if (user == null)
			warnMsg = "该用户名可用";
		else
			warnMsg = "该用户名已经存在";
		JSONObject jo = new JSONObject();
		jo.put("warnMsg", warnMsg);
		result = jo.toString();//向jsp页面传递一个result值
		return SUCCESS;
	}

	public String checkUserEmail() {
		User user = userservice.getByEmail(this.user.getEmail());
		String warnMsg = "";
		if (user == null)
			warnMsg = "该邮箱可用";
		else
			warnMsg = "该邮箱已注册";
		JSONObject jo = new JSONObject();
		jo.put("warnMsg", warnMsg);
		result = jo.toString();
		return SUCCESS;
	}

	public String login() {
		if (userservice.checkUser(user))
			return "success";
		else
			return "input";
	}

	public String add() {
		if (userservice.addUser(user) == true)
			return "success";
		else
			return "input";

	}

}

 10、Bean注入 
 

11、配置Action及校验配置

为了完成登录校验使用了Ajax技术,首先要为Structs添加JSON插件,将Structs解压缩目录的lib子目录下的structs-json-plugin-2.2.1.jar文件复制到web应用的WEB-INF、lib目录下。

  1. <?xml version="1.0" encoding="UTF-8" ?>  
  2. <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">  
  3. <struts>  
  4.     <package name="userjson" namespace="/" extends="json-default">  
  5.         <action name="userJSONAction_*" method="{1}" class="UserA">  
  6.             <result type="json">  
  7.                 <param name="root">result</param>  
  8.             </result>  
  9.         </action>  
  10.     </package>  
  11.     <package name="default" extends="struts-default" namespace="/">  
  12.         <action name="Login" class="UserA" method="login">  
  13.             <result name="input">/login.jsp</result>  
  14.             <result name="success">/main.jsp</result>  
  15.         </action>  
  16.         <action name="regist" class="UserA" method="add">  
  17.             <result name="input">/regist.jsp</result>  
  18.             <result name="success">/main.jsp</result>  
  19.         </action>  
  20.   
  21.         <action name="*">  
  22.             <result>{1}.jsp</result>  
  23.         </action>  
  24.     </package>  
  25. </struts>  
<?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="userjson" namespace="/" extends="json-default">
		<action name="userJSONAction_*" method="{1}" class="UserA">
			<result type="json">
				<param name="root">result</param>
			</result>
		</action>
	</package>
	<package name="default" extends="struts-default" namespace="/">
		<action name="Login" class="UserA" method="login">
			<result name="input">/login.jsp</result>
			<result name="success">/main.jsp</result>
		</action>
		<action name="regist" class="UserA" method="add">
			<result name="input">/regist.jsp</result>
			<result name="success">/main.jsp</result>
		</action>

		<action name="*">
			<result>{1}.jsp</result>
		</action>
	</package>
</struts>

上面的文件为第一个action配置了返回值为Json(JavaScript Object Notation即javascript对象符号)类型的result。json插件可以将action中的状态信息序列化成json格式的字符串,并将该字符串返回给客户端的浏览器。在客户端页面就可以用JavaScript异步调用Action,并且Action可以不使用视图资源来显示该Action里的状态信息。通过这种方式就可以完成Ajax(Asynchronous JavaScript And XML即异步JavaScript和XML技术)交互。

配置json数据类型的result时还配置了root参数,该参数可以为OGNL表达式,确定Action内的某个属性。配置该参数说明不再把整个Action对象序列化成JSON字符串,而是只将该参数指定的Action属性序列化成JSON字符串返回给客户端。



12、login.jsp建立登录页面

主要的提交数据表单代码如下:

  1. <form method="post" action="Login.action">  
  2.     用户名:<input name="username" type="text"><br/>  
  3.     密码:<input name="password" type="password"> <br/>  
  4.     <input name="Submits" type="submit" value="登录"/>  
  5.     <input name="ReSet" type="reset" value="重置"/>  
  6.        <a href="regist.jsp"><input type="button"  value="注册"/></a>  
  7.       
  8.    </form>  
 <form method="post" action="Login.action">
    	用户名:<input name="username" type="text"><br/>
    	密码:<input name="password" type="password"> <br/>
    	<input name="Submits" type="submit" value="登录"/>
    	<input name="ReSet" type="reset" value="重置"/>
        <a href="regist.jsp"><input type="button"  value="注册"/></a>
    	
    </form>

13、regist.jsp页面中使用了Ajax和jQuery检测用户名和注册邮箱是否重复。

http://www.2cto.com/kf/201308/238557.html(网上的另一种实现)

上面的UserService和UserDao中都已经定义了findByUserName和findByEmail方法。在UserAction中写checkUsername和checkUserEmail方法,前台的js代码把取得的username和email分别使用Json数据传递给后台调用check方法,check方法给warnMes赋值并在此使用Json格式传递。

regist.jsp代码如下:

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%  
  3.     String path = request.getContextPath();  
  4.     String basePath = request.getScheme() + "://"  
  5.             + request.getServerName() + ":" + request.getServerPort()  
  6.             + path + "/";  
  7. %>  
  8.   
  9. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
  10. <%@taglib prefix="s" uri="/struts-tags"%>  
  11. <html>  
  12. <head>  
  13. <base href="<%=basePath%>">  
  14.   
  15. <title>My JSP 'regist.jsp' starting page</title>  
  16.   
  17. <meta http-equiv="pragma" content="no-cache">  
  18. <meta http-equiv="cache-control" content="no-cache">  
  19. <meta http-equiv="expires" content="0">  
  20. <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
  21. <meta http-equiv="description" content="This is my page">   
  22. <script src="js/jQuery.js"></script>   
  23. <script type="text/javascript">  
  24. function checkEmail(){  
  25. var emailifo=$("#email").val();  
  26.          $.ajax({  
  27.              type: "GET",  
  28.              url: "userJSONAction_checkUserEmail.action",  
  29.              data: {email:emailifo},  
  30.              dataType: "json",  
  31.              success: function(data){  
  32.              var obj=$.parseJSON(data);  
  33.              $("#emailMes").html("");  
  34.              $("#emailMes").text(obj.warnMsg);  
  35.              }  
  36.              });  
  37. }  
  38. function checkUserName(){  
  39. var nameInfo=$("#userName").val();  
  40.          $.ajax({  
  41.              type: "GET",  
  42.              url: "userJSONAction_checkUserName.action",  
  43.              data: {userName:nameInfo},  
  44.              dataType: "json",  
  45.              success: function(data){  
  46.              var obj=$.parseJSON(data);  
  47.              $("#nameMes").html("");  
  48.              $("#nameMes").text(obj.warnMsg);  
  49.              }  
  50.              });  
  51. }  
  52. </script>  
  53. <!-- 
  54.     <link rel="stylesheet" type="text/css" href="styles.css"> 
  55.     -->  
  56. </head>  
  57.   
  58. <body>  
  59.     註冊  
  60.     <br>  
  61.     <form action="regist.action" method="post">  
  62.         邮箱:<input type="text" id="email" name="email" onblur="checkEmail()"><p id="emailMes"></p>  
  63.         <br /> 用户名:<input type="text" id="userName" name="userName" onblur="checkUserName()"><p id="nameMes"></p> <br /> 密码:<input  
  64.             type="text" name="pass" value="">  
  65.         <br /> <input type="submit" name="submit" value="注册">  
  66.     </form>  
  67. </body>  
  68. </html>  
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<%@taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'regist.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page"> 
<script src="js/jQuery.js"></script> 
<script type="text/javascript">
function checkEmail(){
var emailifo=$("#email").val();
         $.ajax({
             type: "GET",
             url: "userJSONAction_checkUserEmail.action",
             data: {email:emailifo},
             dataType: "json",
             success: function(data){
             var obj=$.parseJSON(data);
             $("#emailMes").html("");
             $("#emailMes").text(obj.warnMsg);
             }
             });
}
function checkUserName(){
var nameInfo=$("#userName").val();
         $.ajax({
             type: "GET",
             url: "userJSONAction_checkUserName.action",
             data: {userName:nameInfo},
             dataType: "json",
             success: function(data){
             var obj=$.parseJSON(data);
             $("#nameMes").html("");
             $("#nameMes").text(obj.warnMsg);
             }
             });
}
</script>
<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->
</head>

<body>
	註冊
	<br>
	<form action="regist.action" method="post">
		邮箱:<input type="text" id="email" name="email" οnblur="checkEmail()"><p id="emailMes"></p>
		<br /> 用户名:<input type="text" id="userName" name="userName" οnblur="checkUserName()"><p id="nameMes"></p> <br /> 密码:<input
			type="text" name="pass" value="">
		<br /> <input type="submit" name="submit" value="注册">
	</form>
</body>
</html>


初学还有很多不足,欢迎大家批评指正。

参考链接</p><p>http://wenku.baidu.com/link?url=ZT_y9ERAAZV9UsFFA4Td9FJ0n3747GJ9iIPh57HLvf6FQ1fdyBoO4oHjd-MgzRj7nEyerfw14N78ZQJ4kbvVcaQrput8wWJecZhwMXW7cky</p><p></p><p>1、建立数据库和用户表,简单考虑只建立user表,添加user_id、user_name、email、pass四个属性。</p><p>2、新建web工程。</p><p>3、第一种方法是直接右击项目名称选择Myeclipse一次选择添加structs2、spring、Hibernate包。这种方法在后续编程中有可能造成许多jar包冲突。</p><p> 
    第二种是使用没有冲突的jar包。把structs、spring、Hibernate以及mysql-connector-java(连接mysql数据库)添加到WebRoot/WEB-INF/bin目录下,并选中项目中要使用的所有jar包文件右击选择builtPath——>Add To Built Path</p><p>4、选择MyEclipse Database explorer Perspective。新建一个Database Driver。</p><p><img src="" alt="" /></p><p>上图配置自动在ApplicationContext.xml文件中自动生成dataSorce
bean</p><p><img src="" alt="" /></p><p>选择要建立Hibernate反转映射的表右击选择Hibernate reverse


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值