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>
<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>
<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);
}
}