jsp mvc案例

15 篇文章 0 订阅

 mvc的简单架构:

1.搭建开发环境 

1.1导开发包

    dom4j开发包

    jstl开发包

    beanutils开发包

    log4j开发包

1.2创建组织程序的包 

    cn.it.domin

    cn.it.dao

    cn.it.dao.impl

    cn.it.service

    cn.it.service.impl

    cn.it.web.controller(处理请求的servlet)

    cn.it.web.UI(给用户提供用户界面)

    cn.it.utils

    junit.test

   web-info/jsp (保存网站的jsp)

1.3创建代表数据的xml文件

各代码如下 

Users.xml   充当数据库

<?xml version="1.0" encoding="UTF-8"?>
<users>
	<user id="1001" username="aaa" password="123" email="sina.com" nickname="强子" birthday="1980-09-09"/>


</users>

cn.it.domain下的user.java  javabean

package cn.it.domain;

import java.util.Date;

public class User {
	private String id;
	private String username;
	private String password;
	private String nickname;
	private String email;
	private Date birthday;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getNickname() {
		return nickname;
	}
	public void setNickname(String nickname) {
		this.nickname = nickname;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public Date getBirthday() {
		return birthday;
	}
	public void setBirthday(Date birthday) {
		this.birthday = birthday;
	}


}

cn.it.dao.impl下的UserDaoImpl  对数据库的增删改查 

package cn.it.dao.impl;

import java.text.SimpleDateFormat;
import java.util.Date;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.Node;

import cn.it.dao.UserDao;
import cn.it.domain.User;
import cn.it.utils.XmlUtils;

public class UserDaoImpl implements UserDao {
	/*
	 * (non-Javadoc)
	 * 
	 * @see cn.it.dao.impl.UserDao#add(cn.it.domain.User)
	 */
	public void add(User user) {
		try {
			Document document = XmlUtils.getdocument();
			Element root = document.getRootElement();
			Element p = (Element) root.addElement("user");
			p.setAttributeValue("id", user.getId());
			p.setAttributeValue("username", user.getUsername());
			p.setAttributeValue("password", user.getPassword());
			p.setAttributeValue("email", user.getEmail());
			p.setAttributeValue("nickname", user.getNickname());
			p.setAttributeValue("birthday", user.getBirthday() == null ? ""
					: user.getBirthday().toLocaleString()); 
			XmlUtils.write2xml(document);

		} catch (Exception e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e);
		}

	}

	/*
	 * (non-Javadoc)
	 * 
	 * @see cn.it.dao.impl.UserDao#find(java.lang.String, java.lang.String)
	 */
	public User find(String username, String password) {
		User user = new User();
		try {
			Document document = XmlUtils.getdocument();
			// Element node = (Element)
			// document.selectSingleNode("//user[@username='"+username+"' and @password='"+password+"']");
			Element node = (Element) document
					.selectSingleNode("//user[@username='" + username
							+ "' and @password = '" + password + "']");
			if (node != null) {

				user.setId(node.attributeValue("id"));
				user.setUsername(username);
				user.setPassword(password);
				user.setEmail(node.attributeValue("email"));
				user.setNickname(node.attributeValue("nickname"));
				String data = node.attributeValue("birthday");
				if (data == null || data.equals("")) {
					user.setBirthday(null);
				} else {
					SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");

					user.setBirthday(df.parse(data));
				}

			}

		} catch (Exception e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e);
		}
		return user;

	}

	// 查找注册用户是否在数据库存在
	/*
	 * (non-Javadoc)
	 * 
	 * @see cn.it.dao.impl.UserDao#find(java.lang.String)
	 */
	public boolean find(String username) {
		try {
			Document document = XmlUtils.getdocument();
			Element node = (Element) document
					.selectSingleNode("//user[@username='" + username + "']");
			if (node == null) {
				return false;
			} else {
				return true;
			}

		} catch (Exception e) {
			throw new RuntimeException(e);
		}

	}
}

需要对xml文件进行操作 在cn.it.utils  添加对xml文件进行操作的工具类XmlUtils.java

package cn.it.utils;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.OutputFormat;
import org.dom4j.io.SAXReader;
import org.dom4j.io.XMLWriter;

public class XmlUtils {
	private static String filepath;
	static{
		filepath = XmlUtils.class.getClassLoader().getResource("Users.xml").getPath();
		 try {
	            filepath = URLDecoder.decode(filepath,"UTF-8");
	        } catch (UnsupportedEncodingException e) {          
	            e.printStackTrace();
	        }
		
	}
	
	public static Document getdocument() throws DocumentException{
		SAXReader reader = new SAXReader();
        Document document = reader.read(new File(filepath));
		return document;
		
		
	}
	public static void write2xml(Document document) throws IOException{
		 // Pretty print the document to System.out
        OutputFormat format = OutputFormat.createPrettyPrint();
        format.setEncoding("UTF-8");
        XMLWriter writer= new XMLWriter(new FileOutputStream(filepath), format );
        writer.write( document );

        writer.close();
		
	}

}

生成对数据口进行操作的接口  cn.it.dao  UserDao.java

package cn.it.dao;

import cn.it.domain.User;

public interface UserDao {

	void add(User user);

	User find(String username, String password);

	//查找注册用户是否在数据库存在
	boolean find(String username);

}

 

业务逻辑层

cn.it.service.impl   BusinessServiceImpl.java

package cn.it.service.impl;

import cn.it.dao.UserDao;
import cn.it.dao.impl.UserDaoImpl;
import cn.it.domain.User;
import cn.it.exception.UserExistException;
import cn.it.utils.ServiceUtil;

//对web层提供所有的业务 
public class BusinessServiceImpl {

	private UserDao dao = new UserDaoImpl();
	//对web层提供注册服务
	public void register(User user) throws UserExistException{
		//先判断当前用户是否存在  
		if (dao.find(user.getUsername())){
			throw new UserExistException();  //发现要注册的用户已经存在,则给web层抛出编译时异常,提醒web层处理这个异常,给用户友好提示
		}else {
			//将原始密码转化成MD5存于数据库 
			user.setPassword(ServiceUtil.md5(user.getPassword()));
			dao.add(user);
		}
		
	}
	//对外部提供登录服务
	public User login(String username,String password){
		password = ServiceUtil.md5(password);
		return dao.find(username, password);
		
		
		
		
	}
}

写一个工具类将字符串进行md5加密

cn.it.utils  ServiceUtil.java

package cn.it.utils;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

import sun.misc.BASE64Encoder;

public class ServiceUtil {
	public static String md5(String message){
		try {
			MessageDigest md = MessageDigest.getInstance("md5");
			byte md5[] = md.digest(message.getBytes()) ;
			BASE64Encoder encorder = new BASE64Encoder();
			
			return encorder.encode(md5);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e);
		}
		
		
	}
}

web层 :index.jsp 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head> 
    <title>首页</title>
  </head>
  
  <body>
  
  	<h1>xx网站</h1>
  	<br>
  	<div style="text-align: right">
  	<c:if test="${user!=null }">
  	欢迎你:${user.nickname } <a href="${ pageContext.request.contextPath}/servlet/Logoutservlet">注销</a><br>
  	</c:if>
  	<c:if test="${user==null }">
  	<a href="${pageContext.request.contextPath}/servlet/RegesterUIServlet ">注册</a>
    <a href="${pageContext.request.contextPath}/servlet/LoginUIServlet ">登录</a>
  	</c:if>
  	</div>
  <hr>
    
  </body>
</html>

点击注册  -------cn.it.web.UI   RegesterUIServlet.java  跳转到 jsp页面 

package cn.it.web.UI;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

//为用户提供注册界面  
public class RegesterUIServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.getRequestDispatcher("/WEB-INF/jsp/Register.jsp").forward(request, response);
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

Register.jsp 注册页面 

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>注册界面</title>
    <style type="text/css">
    body {
	background-color: #32a8cf;
	margin: 0px;
	overflow:hidden;
	font-size: 14px;
	color: #FFFFFF
	}
    #main{
    margin-left: 50px;
    margin-top: 30px;
    }
    #notice{
    	width: 70%;
    	line-height: 25px;
    }
    #formtable{
    	font-size: 15px;
    
    }
    .td1{
    	width: 100px;
    }
    #formsubmit{
    	width: 300px;
    	text-align: center;
    	margin-left: 22px;
    }
    .userinput{
    	width: 210px;
    	height: 25px;
    	background-color: #FFFFFF;
    	border: solid 1px #7dbad7;
    	font-size: 16px
    
    }
    .btn{
    background-image: url("image/1.jpg");
    background-position: center;
    font: bold; 12px;
    width: 80ps;
    cursor: hand;
    height: 25px;
    border-width: 0; /*按钮加此参数,才会去掉按钮背景*/
    }
    #footer{
    }
    </style>
  </head>
  
  <body>
    <div id=header><img src="images/head.jpg"></div>
    
    <div id="main">
    	<div id="notice">
    		<h2>注册须知</h2>
    		1.在本站注册的会员~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
    		2.所有在本站发表的文章~~~~~~~~~~~~~~~~~~~~~<br>
    	</div>
    	<form action="${pageContext.request.contextPath}/servlet/RegesterServlet" method="post">
    	<table id="formtable">
    		<tr>
    		<td class="td1">登录账号:</td>
    		<td>
    		<input class="userinput" type="text" name="username">
    		<span class="message">用户名由6-8位数字或字母组成</span>
    		</td>
    		</tr>
    		<tr>
    		<td></td>
    		<td></td>
    		</tr>
    		<tr>
    		<td class="td1">登录密码:</td>
    		<td>
    		<input class="userinput" type="password" name="password">
    		</td>
    		</tr>
    		<tr>
    		<td class="td1">确认密码:</td>
    		<td>
    		<input class="userinput" type="password" name="password2">
    		</td>
    		</tr>
    	
	    	<tr>
	   		<td class="td1">电子邮箱:</td>
	   		<td>
	   		<input class="userinput" type="text" name="email">
	   		</td>
	   		</tr>
    		<tr>
	   		<td class="td1">生日:</td>
	   		<td>
	   		<input class="userinput" type="text" name="birthday">
	   		</td>
	   		</tr>
    		<tr>
    		<td class="td1">您的昵称:</td>
    		<td>
    		<input class="userinput" type="text" name="nickname">
    		</td>
    		</tr>
    		
    		<tr>
    		<td class="td1">图片认证:</td>
    		<td>
    		<input class="userinput" type="text" name="checkcode"><img alt="图形认证码" src="#" height="12px">
    		</td>
    		</tr>

    	
    	</table>
    	
        	<div id="formsubmit">
    		<span><input class="btn" type="reset" name="reset" value="重 置"></span>
    		&nbsp;&nbsp;
    		<span><input class="btn" type="submit" name="submit" value="注 册"></span>
    		</div>
    	</form>
    
    </div>
    <div id="footer">
    </div>
  </body>
</html>

封装表单的formbean  cn.it.web.formbean  RegisterForm.java

package cn.it.web.formbean;

import java.util.HashMap;
import java.util.Map;

import javax.print.attribute.standard.MediaSize.ISO;

import com.sun.org.apache.commons.beanutils.locale.converters.DateLocaleConverter;

public class RegisterForm {
	private String username;
	private String password;
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}

	private String password2;
	private String email;
	private String birthday;
	private String nickname;
	private String checkcode;
	
	private Map errors = new HashMap();
	public Map getErrors() {
		return errors;
	}
	public void setErrors(Map errors) {
		this.errors = errors;
	}

	
	
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	
	public String getPassword2() {
		return password2;
	}
	public void setPassword2(String password2) {
		this.password2 = password2;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getBirthday() {
		return birthday;
	}
	public void setBirthday(String birthday) {
		this.birthday = birthday;
	}
	public String getNickname() {
		return nickname;
	}
	public void setNickname(String nickname) {
		this.nickname = nickname;
	}
	public String getCheckcode() {
		return checkcode;
	}
	public void setCheckcode(String checkcode) {
		this.checkcode = checkcode;
	}

	//用户名不能为空,并且是3-8位字母
	//密码不能为空并且是2-8为数字
	//重复密码与密码相同
	//电子邮箱不能为空,并且要是一个格式合法的邮箱 
	//生日可以为空 不为空时必须要是一个日期
	//昵称不可以为空,并且要是汉字 
	public boolean validate(){
		boolean isOk = true;
		if (this.username==null || this.username.trim().equals("")){
			isOk = false;
			errors.put("username", "用户名不能为空");
		}else {
			if(!this.username.matches("[A-Za-z]{3,8}")){
				isOk = false;
				errors.put("username", "用户名必须是3到8位字母");
			}
		}
		
		if (this.password==null || this.password.trim().equals("")){
			isOk = false;
			errors.put("password", "密码不能为空");
		}else {
			if(!this.username.matches("\\d{3,8}")){
				isOk = false;
				errors.put("password", "密码必须是3-8位数字");
			}
		}
		
		if (this.password2==null || this.password2.trim().equals("")){
			isOk = false;
			errors.put("password2", "密码不能为空");
		}else {
			if(!this.password.equals(this.password2)){
				isOk = false;
				errors.put("password2", "两次密码必须一致");
			}
		}
		
		if (this.email==null || this.email.trim().equals("")){
			isOk = false;
			errors.put("email", "邮箱不能为空");
		}else {
			if(!this.email.matches("\\w+@\\w+(\\.\\w+)+")){
				isOk = false;
				errors.put("email", "请输入正确的邮箱");
			}
		}
		
		if(this.birthday !=null && !this.birthday.trim().equals("")){
			
			try {
				DateLocaleConverter dlc = new DateLocaleConverter();
				dlc.convert(this.birthday, "yyyy-MM-dd");
			} catch (Exception e) {
				isOk=false;
				errors.put("birthday", "日期格式不正确");
			}
		}
		

		if (this.nickname==null || this.nickname.trim().equals("")){
			isOk = false;
			errors.put("nickname", "昵称不能为空");
		}else {
			if(!this.nickname.matches("(^[\u4e00-\u9fa5]+)$")){
				isOk = false;
				errors.put("nickname", "昵称必须是汉字");
			}
		}
		
		
		return isOk;
		
	}
	
	
}

处理用户注册请求的servlet  cn.it.web.controller RegesterServlet.java

package cn.it.web.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.it.domain.User;
import cn.it.exception.UserExistException;
import cn.it.service.impl.BusinessServiceImpl;
import cn.it.utils.WebUtils;
import cn.it.web.formbean.RegisterForm;
//处理用户注册请求
public class RegesterServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		
		request.setCharacterEncoding("UTF-8");
		//1.对表单字段进行合法性校验  [formbean](把表单数据封装到formbean)
		RegisterForm form = WebUtils.request2Bean(request, RegisterForm.class);
		boolean b = form.validate();
		//2.如果校验失败 跳回表单页面,并且回写校验失败信息 
		
		if(!b){
			request.setAttribute("form", form);
			request.getRequestDispatcher("/WEB-INF/jsp/Register2.jsp").forward(request, response);
			return;
		}
		//3.校验成功,调用service层,处理注册请求
		BusinessServiceImpl service = new BusinessServiceImpl();
		User user = new User();
		WebUtils.copyBean(form, user);
		user.setId(WebUtils.generateId());
		try {
			service.register(user);
			//6.如果service处理成功,跳转到网站的全局消息显示页面,显示用户注册成功的消息。
			request.setAttribute("message", "恭喜你注册成功");
			request.getRequestDispatcher("/message.jsp").forward(request, response);
			return;
			
		} catch (UserExistException e) {
			//4.如果service处理失败,斌给不成功的原因是注册用户已经存在,跳回注册页面,显示主页页面已经存在 
			request.setAttribute("message", "注册的用户名已经存在");
			//form.getErrors().put("username", "注册的用户已经存在")
			request.getRequestDispatcher("/WEB-INF/jsp/Resister2.jsp").forward(request, response);
			return;
		} catch (Exception e) {
			//5.如果service处理失败,并且不成功的原因是其他原因,跳转到网站的全局消息显示页面,为用户显示友好错误消息 
			request.setAttribute("message", "服务器出现未知错误");
			request.getRequestDispatcher("/message。jsp").forward(request, response);
			e.printStackTrace();
			return;
		}
		
		
		
		
		
		
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		doGet(request, response);
	}

}

对formbean进行封装的工具类 cn.it.utils WebUtils.java

package cn.it.utils;

import java.lang.reflect.InvocationTargetException;
import java.sql.Date;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Enumeration;
import java.util.UUID;

import javax.servlet.http.HttpServletRequest;
import javax.xml.ws.WebFault;

import com.sun.org.apache.commons.beanutils.BeanUtils;
import com.sun.org.apache.commons.beanutils.ConvertUtils;
import com.sun.org.apache.commons.beanutils.Converter;

import cn.it.web.formbean.RegisterForm;


//将表单数据封装到forbean中 
public class WebUtils {
	public static <T> T request2Bean(HttpServletRequest request,Class<T> beanclass){
		
		
		try {
			//创建要封装数据的bean
			T bean = beanclass.newInstance();
			//2.把request中的数据封装到bean中
			Enumeration e =request.getParameterNames();
			while (e.hasMoreElements()) {
				String  name = (String)e.nextElement();
				String value = request.getParameter(name);
				BeanUtils.setProperty(bean, name, value);
				
			}
			
			return bean;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e);
		}	
	}
	
	public static void copyBean(Object src,Object dest){
		//将formbean中的属性复制到user对象中 
		/*private String username;
		private String password1;
		private String password2;
		private String email;
		private String birthday;
		private String nickname;
		private String checkcode;*/
		
		/*private String id;
		private String username;
		private String password;
		private String nickname;
		private String email;
		private Date birthday;*/
		
		//注册日期转换器 
		ConvertUtils.register(new Converter() {
			
			@Override
			public Object convert(Class type, Object value) {
				if(value==null){
					return null;
				}
				String str = (String)value;
				if(str.trim().equals("")){
					return null;
				}
				SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
				try {
					return df.parse(str);
				} catch (ParseException e) {
					// TODO Auto-generated catch block
					throw new RuntimeException(e);
				}
			}
		}, Date.class);
		
		
		try {
			BeanUtils.copyProperties(src, dest);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			throw new RuntimeException(e);
		} 
		
	}
	//产生一个唯一的id;
	public static String generateId(){
		return UUID.randomUUID().toString();  //理论上这个id值是唯一的,
		
		
		
	}
	
}

 全局消息美化页面

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>全局消息美化页面</title>
    

  </head>
  
  <body>
    ${message} 
  </body>
</html>

Resister2.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title>注册界面</title>
    <style type="text/css">
    body {
	background-color: #32a8cf;
	margin: 0px;
	overflow:hidden;
	font-size: 14px;
	color: #FFFFFF
	}
    #main{
    margin-left: 50px;
    margin-top: 30px;
    }
    #notice{
    	width: 70%;
    	line-height: 25px;
    }
    #formtable{
    	font-size: 15px;
    
    }
    .td1{
    	width: 100px;
    }
    #formsubmit{
    	width: 300px;
    	text-align: center;
    	margin-left: 22px;
    }
    .userinput{
    	width: 210px;
    	height: 25px;
    	background-color: #FFFFFF;
    	border: solid 1px #7dbad7;
    	font-size: 16px
    
    }
    .btn{
    background-image: url("image/1.jpg");
    background-position: center;
    font: bold; 12px;
    width: 80ps;
    cursor: hand;
    height: 25px;
    border-width: 0; /*按钮加此参数,才会去掉按钮背景*/
    }
    #footer{
    }
    </style>
  </head>
  
  <body>
    <div id=header><img src="images/head.jpg"></div>
    
    <div id="main">
    	<div id="notice">
    		<h2>注册须知</h2>
    		1.在本站注册的会员~~~~~~~~~~~~~~~~~~~~~~~~~~<br>
    		2.所有在本站发表的文章~~~~~~~~~~~~~~~~~~~~~<br>
    	</div>
    	<form action="${pageContext.request.contextPath}/servlet/RegesterServlet" method="post">
    	<table id="formtable">
    		<tr>
    		<td class="td1">登录账号:</td>
    		<td>
    		<input class="userinput" type="text" name="username" value="${form.username }">
    		<span class="message">${form.errors.username}</span>
    		</td>
    		</tr>
    		<tr>
    		<td></td>
    		<td></td>
    		</tr>
    		<tr>
    		<td class="td1">登录密码:</td>
    		<td>
    		<input class="userinput" type="password" name="password" value="${form.password}">
    		<span class="message">${form.errors.password1}</span>
    		</td>
    		</tr>
    		<tr>
    		<td class="td1">确认密码:</td>
    		<td>
    		<input class="userinput" type="password" name="password2" value="${form.password2}">
    		<span class="message">${form.errors.password2}</span>
    		</td>
    		</tr>
    	
	    	<tr>
	   		<td class="td1">电子邮箱:</td>
	   		<td>
	   		<input class="userinput" type="text" name="email" value="${form.email }">
	   		<span class="message">${form.errors.email}</span>
	   		</td>
	   		</tr>
    		<tr>
	   		<td class="td1">生日:</td>
	   		<td>
	   		<input class="userinput" type="text" name="birthday" value="${form.birthday }">
	   		<span class="message">${form.errors.birthday}</span>
	   		</td>
	   		</tr>
    		<tr>
    		<td class="td1">您的昵称:</td>
    		<td>
    		<input class="userinput" type="text" name="nickname" value="${form.nickname}">
    		<span class="message">${form.errors.nickname}</span>
    		</td>
    		</tr>
    		
    		<tr>
    		<td class="td1">图片认证:</td>
    		<td>
    		<input class="userinput" type="text" name="checkcode"><img alt="图形认证码" src="#" height="12px">
    		</td>
    		</tr>

    	
    	</table>
    	
        	<div id="formsubmit">
    		<span><input class="btn" type="reset" name="reset" value="重 置"></span>
    		&nbsp;&nbsp;
    		<span><input class="btn" type="submit" name="submit" value="注 册"></span>
    		</div>
    	</form>
    
    </div>
    <div id="footer">
    </div>
  </body>
</html>

编写注册界面

cn.it.web.UI LoginUIServlet.java  

package cn.it.web.UI;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import sun.reflect.ReflectionFactory.GetReflectionFactoryAction;


//提供登录界面
public class LoginUIServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		request.getRequestDispatcher("/WEB-INF/jsp/Login.jsp").forward(request, response);
	}

	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    
    <title>My JSP 'Login.jsp' starting page</title>
 	<link rel="stylesheet" type="/text/css"  href="${ pageContext.request.contextPath}/css/login.css">
  </head>
  
  <body>
    <div id="container">
    <div id="login"></div>
    <div id="form">
    	<form action="${pageContext.request.contextPath }/servlet/Loginservlet" method="post">
    	<div id="input">
    	用 户:<input type="text" name="username"/><br>
    	密 码:<input type="password" name="password/"><br>
    	</div>
    	<div id="btn">
    	<input type="submit" value="登录"/>
    	<input type="button" value="注册" onclick="window.location.href='register.jsp'"/>
    	</div>
    	</form>
    </div>
    
    </div>
  </body>
</html>

处理用户登录的servlet 

cn.it.web.controller Loginservlet.java

package cn.it.web.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import cn.it.domain.User;
import cn.it.service.impl.BusinessServiceImpl;

public class Loginservlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//验证传递过来的用户名和密码,用户名和密码正确,登录成功,否则输出您输入的用户名不存在或者您输入的密码有误。
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		BusinessServiceImpl service = new BusinessServiceImpl();
		User user = service.login(username, password);
		
		if(user !=null){
			request.getSession().setAttribute("user", user);
			//用户登录成功跳转带首页
			response.sendRedirect(request.getContextPath() + "/index.jsp");
			return;
			
			
			
		}else {
			request.setAttribute("message", "用户名或密错误");
			request.getRequestDispatcher("/message.jsp").forward(request, response);
		}
		
		
		
		
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);

	}

}

处理用户注销的servlet cn.it.web.controller  Logoutservlet.java

package cn.it.web.controller;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

public class Logoutservlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		HttpSession session = request.getSession(false);
		if(session !=null){
			session.removeAttribute("user");
			
			//注销陈宫,跳到全局消息显示页面,显示注销成功消息,并控制消息显示页面过3秒后跳转到首页
			
			
		}
		request.setAttribute("message", "注销成功!!浏览器将在10秒后跳转,<meta http-equiv='refresh' content='10;url="+ request.getContextPath()+"/index.jsp'>");
		request.getRequestDispatcher("/message.jsp").forward(request, response);
	}


	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}

}

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值