实现用户登录

一、流程图

二、创建用户信息类User

public class User {
	private String username;
	private String 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;
	}
}

三、创建IndexServlet,显示网站首页

        public void doGet(HttpServletRequest request, HttpServletResponse response)               
    		throws ServletException, IOException {                                                
    	    // 解决乱码问题                                                                                 
    	    response.setContentType("text/html;charset=utf-8");                                       
    	    // 创建或者获取保存用户信息的Session对象                                                                 
    	    HttpSession session = request.getSession();                                               
    	    User user = (User) session.getAttribute("user");                                          
    	    if (user == null) {                                                                       
    		response.getWriter().print("您还没有登录,请<a href='"+request.getContextPath()+"/login.html'>登录   </a>");         
    	    } else {                                                                                  
    		response.getWriter().print("您已登录,欢迎你," + user.getUsername() + "!");                   
    		response.getWriter().print("<a href='"+request.getContextPath()+"/LogoutServlet'>退出</a>");              
    		// 创建Cookie存放Session的标识号                                                              
    		Cookie cookie = new Cookie("JSESSIONID", session.getId());                            
    		cookie.setMaxAge(60 * 30);                                                            
    		cookie.setPath(request.getContextPath());                                                         
    		response.addCookie(cookie);                                                           
    	    }                                                                                         
    	}

 如果用户没有登录,那么首页会提示用户登录,否则显示用户已经登录。登录时会把用户信息对象作为Session的一个属性,所以我们要先获取Session对象,再获取属性,然后判断属性是否存在。

这里有一个有意思的现象,在if成立时,并没有创建Cookie对象,更没有把Cookie对象加到响应对象,但在else中把Cookie对象加到响应对象,这是为什么?

因为当执行getSession()的时候,如果之前不存在Session,那么就会创建Session,创建Session时会把含有Session ID 的Cookie对象加到响应对象上

四、创建LoginServlet,验证用户名和密码

public class LoginServlet extends HttpServlet {
	/**
	 * 未添加验证码
	 */
	public void doGet(HttpServletRequest request, 
                          HttpServletResponse response)
			throws ServletException, IOException {
		response.setContentType("text/html;charset=utf-8");
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		PrintWriter pw = response.getWriter();
          //假设正确的用户名 是itcast 密码是123
		if (("itcast").equals(username) && ("123").equals(password)) {
			User user = new User();
			user.setUsername(username);
			user.setPassword(password);
			request.getSession().setAttribute("user", user);
			response.sendRedirect(request.getContextPath()+"/IndexServlet");
		} else {
			pw.write("用户名或密码错误,登录失败");
		}
	}
        
//doPost
	public void doPost(HttpServletRequest request, 
                          HttpServletResponse response)
            throws ServletException, IOException {
		this.doGet(request, response);
		
	}
}

如果用户登录成功,则跳转到网站首页,否则向浏览器输出“用户名或密码错误,登录失败”。

五、创建登录页面

<body>
	<form name="reg" action="/chapter05/LoginServlet" method="post">
		用户名: <input name="username" type="text" /><br/>
		密&nbsp;&nbsp;码:<input name="password" type="password" /><br/>
		<!-- 验证码:<input type="text" name="check_code"> 
               <img src="/chapter05/CheckServlet"><br>	-->	
			    <input type="submit" value="提交" id="bt" /> 
	</form>
</body>

 六,启动项目,测试显示首页和登录功能

http://localhost:8080/chapter05/IndexServlet

 点击登录

点击提交

如果用户名或者密码错误

 七、创建LogoutServlet,注销用户

public class LogoutServlet extends HttpServlet {
	public void doGet(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		// 将Session对象中的User对象移除
		request.getSession().removeAttribute("user");
		response.sendRedirect(request.getContextPath()+"/IndexServlet");
	}
 
	public void doPost(HttpServletRequest request, HttpServletResponse response) 
			throws ServletException, IOException {
		doGet(request, response);
	}
}

当用户单击退出时,该类会将Session对象中的user属性移除,之后跳转到首页

八、测试退出功能

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot 是一个开源的Java框架,它简化了基于Spring框架的应用程序的开发。通过使用Spring Boot,我们可以快速搭建一个独立的、可运行的、生产级的应用程序,并且可以与其他框架(如MyBatis、Hibernate等)无缝集成。 实现用户登录注册功能,我们可以使用Spring Boot提供的一些特性来简化开发流程。首先,我们需要定义一个User实体类,用于存储用户的信息,如用户名、密码等。可以使用JPA(Java Persistence API)来简化数据库操作,通过注解方式映射实体类到数据库表。 接下来,我们可以使用Spring Security来实现用户认证和授权功能。Spring Security是一个功能强大的安全框架,它可以帮助我们实现用户登录并验证其身份。我们可以定义一个自定义的UserDetailService,用于从数据库中查询用户信息进行认证。 在用户注册功能中,我们可以提供一个注册页面,接收用户输入的用户名、密码等信息,并将其保存到数据库中。可以使用Thymeleaf模板引擎来实现前后端的交互。 此外,我们还可以使用CSDN提供的API接口来实现第三方登录功能,如使用CSDN账号登录。可以在Spring Boot中集成第三方登录SDK,并根据SDK提供的文档完成相应的配置和代码实现。 总之,通过Spring Boot,我们可以快速、简便地实现用户登录注册功能,并且可以方便地与其他技术进行集成,如数据库、前端框架、第三方登录等。这样就可以让用户在CSDN上进行登录和注册,并且保证其身份安全。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值