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

Java基础只限于本科时上过Java课。考试成绩60。看了李刚的Java EE有一个月了,今天做一个简单的登录页面。

参考链接

http://wenku.baidu.com/link?url=ZT_y9ERAAZV9UsFFA4Td9FJ0n3747GJ9iIPh57HLvf6FQ1fdyBoO4oHjd-MgzRj7nEyerfw14N78ZQJ4kbvVcaQrput8wWJecZhwMXW7cky

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

2、新建web工程。

3、第一种方法是直接右击项目名称选择Myeclipse一次选择添加structs2、spring、Hibernate包。这种方法在后续编程中有可能造成许多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。

使用ssh框架写一个基本的登录注册页面_第1张图片

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


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


5、建立UserDao.java

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 findByNameAndPass(User user);
	User findByName(String name);
	User findByEmail(String email);
}

6、UserDaoHibernate.java

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 findByNameAndPass(User user) {
		// TODO Auto-generated method stub
		return (List)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 us = (List)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 us = (List)getHibernateTemplate()
				.find("from User where email = ? " , email);
			if (us!= null && us.size() >= 1)
			{
				return us.get(0);
			}
			return null;
	}
}

7、UserService.java

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

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 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

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注入

使用ssh框架写一个基本的登录注册页面_第2张图片

11、配置Action及校验配置

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




	
		
			
				result
			
		
	
	
		
			/login.jsp
			/main.jsp
		
		
			/regist.jsp
			/main.jsp
		

		
			{1}.jsp
		
	

上面的文件为第一个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建立登录页面

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

 
用户名:
密码:

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代码如下:

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<%
	String path = request.getContextPath();
	String basePath = request.getScheme() + "://"
			+ request.getServerName() + ":" + request.getServerPort()
			+ path + "/";
%>


<%@taglib prefix="s" uri="/struts-tags"%>




My JSP 'regist.jsp' starting page





 
 





	註冊
	
邮箱:


用户名:


密码:


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


Java基础只限于本科时上过Java课。考试成绩60。看了李刚的Java EE有一个月了,今天做一个简单的登录页面。

参考链接

http://wenku.baidu.com/link?url=ZT_y9ERAAZV9UsFFA4Td9FJ0n3747GJ9iIPh57HLvf6FQ1fdyBoO4oHjd-MgzRj7nEyerfw14N78ZQJ4kbvVcaQrput8wWJecZhwMXW7cky

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

2、新建web工程。

3、第一种方法是直接右击项目名称选择Myeclipse一次选择添加structs2、spring、Hibernate包。这种方法在后续编程中有可能造成许多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

package dao;

你可能感兴趣的:(Java,EE)