Session小案例------完成用户登录

news/2024/7/7 1:10:27

                              Session小案例------完成用户登录

    在项目开发中,用户登陆功能再平常只是啦,当用户完毕username和password校验后。进入主界面,须要在主界面中显示用户的信息,此时用session来记住用户是最为合适只是了。

功能实现例如以下:
1,完毕用户登陆功能
2,在主界面记住用户
3,完毕用户注销功能

用户类:
package cn.itcast.login;

public class User{
	private String username;
	private String password;
	
	
	public User() {
		super();
		// TODO Auto-generated constructor stub
	}
	public User(String username, String password) {
		super();
		this.username = username;
		this.password = password;
	}
	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;
	}
}

登陆:
package cn.itcast.login;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//处理登陆请求
public class LoginServlet extends HttpServlet {

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

		//request.getAttribute("username");  //从域中取username
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		
		//检測username与password在数据库中是否存在
		List<User> list = DB.getAll();
		for(User user : list){
			if(user.getUsername().equals(username)  && user.getPassword().equals(password)){
				//从数据库中找到匹配用户。让用户登陆成功
				request.getSession().setAttribute("user", user);
				response.sendRedirect("/day07/index.jsp");
				return;
			}
		}
		response.setCharacterEncoding("UTF-8");
		response.setContentType("text/html;charset=UTF-8");
		response.getWriter().write("用户名或密码错误。!");
	}

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

class DB{
	private static List<User> list = new ArrayList();
	static{
		list.add(new User("aaa","123"));
		list.add(new User("bbb","123"));
		list.add(new User("ccc","123"));
		list.add(new User("ddd","123"));
	}
	
	public static List getAll(){
		return list;
	}
}


注销:
package cn.itcast.login;

import java.io.IOException;

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");
		}
		
		response.sendRedirect("/day07/index.jsp");
	}

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

}

登陆页面:
	<form action="/day07/servlet/LoginServlet" method="post">
  		用户名:<input type="text" name="username"><br/>
  		密码:<input type="password" name="password"><br/>
  		<input type="submit" value="登陆">
  	</form>
  

主页面:
 <body>
    欢迎您:
    <% 
    	User user = (User)session.getAttribute("user");
    	if(user!=null)
    		out.write(user.getUsername());
    %>
    
    <a href="/day07/servlet/LogoutServlet">注销</a>
  </body>


版权声明:本文博主原创文章。博客,未经同意不得转载。


http://www.niftyadmin.cn/n/2760053.html

相关文章

[Android]解决android65K方法引用限制

解决方案如下&#xff1a; 1.Google官方的android.support.multidex.jar解决&#xff0c;将当前打成1个dex的方式&#xff0c;打成多个dex。 2.淘宝成熟的atlas解决方案&#xff0c;将主客一些功能全部本地化&#xff0c;减少主客Nativie的代码编译大小。&#xff08;当前手淘正…

比较喜欢的前端ui框架

2019独角兽企业重金招聘Python工程师标准>>> 一、Ext JS 中文 http://extjs.org.cn/node/402 英文 http://www.sencha.com/products/extjs 二、BootStrap 中文网 http://www.bootcss.com/ 英文网 http://getbootstrap.com/ 转载于:https://my.oschina.net…

Citrix XenApp XenApp 6.5的安装

原文出处&#xff1a;http://vdi.so/blog/?p3933 环境要求&#xff1a;准备一台系统为windows server 2008 R2系统的计算机。准备好XenApp 6.5的安装光盘。注意&#xff1a;XenApp安装后需要授权文件激活&#xff0c;否则无法正常使用。部署步骤&#xff1a;首先&#xff0c;准…

CopyU!下一次更新将增加对设备厂商及型号的识别!

CopyU&#xff01;下一版本的更新将加入对设备厂商及型号的识别功能&#xff0c;当用户连接设备时&#xff0c;CopyU&#xff01;将能够辨别出设备的详细型号等&#xff0c;能够在一定程度上帮助用户发现问题设备或仿冒设备。 敬请期待即将到来的新更新&#xff01;

hdu 5432 Pyramid Split 二分

Pyramid Split Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/contest_chineseproblem.php?cid629&pid1001Description 小明是城会玩&#xff0c;他有很多底面是正方形的黄金锥体&#xff0c;我们称之为金字塔&#xff0c;它由…

完美抠图王冰冰!字节实习生开发的AI,实现4K60帧视频实时抠图,连头发丝都根根分明...

点击上方“Github中文社区”&#xff0c;关注触达Github项目鱼羊 明敏 发自 凹非寺量子位 报道 | 公众号 QbitAI看这一头蓬松的秀发&#xff0c;加上帅气的动作&#xff0c;你以为是在绿幕前拍大片&#xff1f;No、No、No这其实是AI拿来视频实时抠图后的效果。没想到吧&#xf…

全局控制发送ICMP包的超时时间

开始不知道怎么弄&#xff0c;后来看看应该是对select()函数的最后一个参数进行设置才对&#xff0c; 改成可以命令行中输入 -w time_out的情况。 不知道对不对哦。 源码在这里&#xff1a;https://github.com/lxlenovostar/m_ping转载于:https://www.cnblogs.com/lxgeek/archi…

Mac大文件分包切割与合并

1. tar czvf testfile.tar.gz testfile.doc 把所需切割文件或目录压缩打包&#xff1b; 2. split -b 40m testfile.tar.gz把压缩打包后的文件切割成每份40m的大小&#xff1b; 3. cat x* > testfile.tar.gz把切割之后的文件合并成压缩打包文件&#xff1b; 4. tar zxvf t…