会话管理之Session案例:用户登录

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guyan1111/article/details/54967815

此案例能够实现简单的用户登录和注销登录,学习session基础的参考

第一步:创建数据库

<?xml version="1.0" encoding="utf-8"?>
<user-list>
	<user id="1">
		<name>张三</name>
		<password>123456</password>	
	</user>
	<user id="2">
		<name>李四</name>
		<password>1234567</password>	
	</user>
	<user id="3">
		<name>王五</name>
		<password>12345678</password>	
	</user>

</user-list>

第二步:在entity中创建实体类

package zdh.cn.entity;

public class User {
	private  String id;
	private  String name;
	private  String password;
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	@Override
	public String toString() {
		return "User [id=" + id + ", name=" + name + ", password=" + password
				+ "]";
	}
	
}


第三步:导入解析xml文档工具类

此步骤需要导入两个jar包

dom4j-1.6.1.jar
jaxen-1.1-beta-6.jar

public class XMLUtil {
	/**
	 * 读取xml文件,返回document对象
	 */
	public static Document getDocument(){
		try {
			Document doc = new SAXReader().read(new File("e:/user.xml"));
			return doc;
		} catch (DocumentException e) {
			e.printStackTrace();
			//把转换为运行时异常抛出即可!
			throw new RuntimeException(e);
		}
	}
	
	/**
	 * 传如docuemnt对象,写出到xml文件中
	 */
	public static void write2xml(Document doc){
		try {
			OutputStream out = new FileOutputStream("e:/user.xml");
			OutputFormat format = OutputFormat.createPrettyPrint();
			XMLWriter writer = new XMLWriter(out,format);
			writer.write(doc);
			writer.close();
		} catch (Exception e) {
			e.printStackTrace();
			//把转换为运行时异常抛出即可!
			throw new RuntimeException(e);
		}
	}
}

第四步:在dao中创建数据库的工具类

扫描二维码关注公众号,回复: 3015664 查看本文章

public class UserDao {
	//根据用户名查找该用户,返回用户对象
	public User findByName(String name){
		Document doc = XMLUtil.getDocument();
		Element nameEle = (Element)doc.selectSingleNode("//name[text()='"+name+"']");
		User user = null;
		if(nameEle!=null){
			user=new User();
			Element userEle = nameEle.getParent();
			user.setId(userEle.attributeValue("id"));
			user.setName(userEle.elementText("name"));
			user.setPassword(userEle.elementText("password"));
		}
		return user;
		
	}
	public static void main(String[] args) {//测试工具是否能用
		UserDao u = new UserDao();

		System.out.println(	u.findByName("张三"));
		
	}
}
第五步:创建html文件

<!DOCTYPE html>
<html>
  <head>
    <title>login.html</title>
	
    <meta name="keywords" content="keyword1,keyword2,keyword3">
    <meta name="description" content="this is my page">
    <meta name="content-type" content="text/html; charset=UTF-8">
    
    <!--<link rel="stylesheet" type="text/css" href="./styles.css">-->

  </head>
  
  <body>
   	<form action ="/SessionLoginDemo/LoginServlet" method="post">
   		用户名:<input type="text" name="name"><br/>
   		密 码:<input type="password" name="password"><br/>
   		<input type="submit" value="登录"/>	
   	</form>
  </body>
</html>


第六步:创建servlet类

用户登录:


public class LoginServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
			doPost(request, response);		
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		//解决post提交的参数的中文乱码问题
		request.setCharacterEncoding("utf-8");
		//解决输出问题的中文乱码问题
		response.setContentType("text/html;charset=utf-8");
		
		String name = request.getParameter("name");
		String password = request.getParameter("password");
		
		UserDao dao = new UserDao(); 
		User user = dao.findByName(name);
		if(user!=null){
			//说明存在此用户
			if(user.getPassword().equals(password)){
				//说明账号和密码正确
			HttpSession session = request.getSession(true);
			session.setAttribute("User", user);
	
			response.sendRedirect(request.getContextPath()+"/UserindexServlet");			
			}
			else{
				response.getWriter().write("用户名存在,但是密码输入有误!"+"<a href='"+request.getContextPath()+"/login.html'>返回登录页面</a>");
			}		
		}else{
				response.getWriter().write("用户不存在!"+"<a href='"+request.getContextPath()+"/login.html'>返回登录页面</a>");
			}
	}
}

登录后的首页:

public class UserindexServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doPost(request, response);
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		HttpSession session = request.getSession(false);

		if (session == null) {
			// 没有登录成功过
			response.sendRedirect(request.getContextPath() + "/login.html");
			return;
		} else {
			User user = (User) session.getAttribute("User");
			if (user != null) {
				// 成功登录过
				response.getWriter().write("欢迎回来:" + user.getName());
				response.getWriter().write("<a href='"+request.getContextPath()+"/LoutServlet'>安全退出</a>");
			} else {
				// 没有成功登录过
				response.sendRedirect(request.getContextPath() + "/login.html");
				return;
			}
		}
	}
}
注销:

public class LoutServlet extends HttpServlet {

	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		HttpSession session = request.getSession(false);
		if (session == null) {
			response.sendRedirect(request.getContextPath() + "/login.html");
			return;
			
		}else{
			session.removeAttribute("User");//不能使用session.invalidate();方法,此方法将删除所有的session信息,这里只删除user信息
			response.getWriter().write("注销成功"+"<a href='"+request.getContextPath()+"/login.html'>返回登录页面</a>");
		}	
	}
	public void doPost(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {
		doGet(request, response);
	}
}


猜你喜欢

转载自blog.csdn.net/guyan1111/article/details/54967815
今日推荐