通过jsp实现用户登陆和注销(通过session保存用户信息)

3 篇文章 0 订阅

一.功能要求

构建以下三个页面:

1,login.jsp:完成登陆表单的显示,同时向页面本身进行数据提交,以完成登陆的验证,如果登陆成功(用户名和密码固定:sdnu/1234),则保存属性;如果登陆失败,则显示登陆失败的信息.

2.welcome.jsp:此页面要求在用户登陆完成之后才可以显示登陆成功的信息,如果没有登陆,则要给出未登陆的提示,同时给出一个登陆的连接地址。

3.logout.jsp:此功能完成登陆的注销,注销之后,页面要跳转回login.jsp,,等待用户继续登陆。

 

二.代码及解释

1.login.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>登陆界面</title>
</head>
<body>

	<form method="post" action="login.jsp">
	
		用户名<input type="text" name="username"><br>
		
		密&nbsp;&nbsp;&nbsp;&nbsp;码<input type="password" name="passward"><br>
		
		
		<input type="submit" value="提交">
	
	</form>
	
	<%
		String s1 = request.getParameter("username");
	
		String s2 = request.getParameter("passward");
		
		
		if(s1 == null&& s2 == null){
			
			
		}else if(s1.equals("sdnu")&& s2.equals("1234")){
			
			
			session.setAttribute("username", s1);
			
			session.setAttribute("password", s2);
			
			out.println("登陆成功" + "<br>");
			
			out.println("<a href='welcome.jsp'>" + "点击这里返回主页面" + "</a>");
			
			/*
			out.println(s1 + " , " + s2);
			
			out.println("用户名或密码错误");
			*/
			
		}
		
		else{
			
			//out.println(s1 + " , " + s2);
			
			out.println("用户名或密码错误");
			
			/*
			session.setAttribute("username", s1);
			
			session.setAttribute("password", s2);
			
			out.println("登陆成功");
			*/
			
			
			
		}
		
		
	
	%>

</body>
</html>

 

2.welcome.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>欢迎来到我们网站</title>
</head>
<body>

	<%
		String s1 = (String)session.getAttribute("username");
	
		
		if(s1 != null){
			
			out.println("欢迎用户: " + s1 + "<br>");
			
			out.println("<a href='logout.jsp'>" + "点击这里进行用户的注销" + "</a>");
			
			
		}else{
			
			
			out.println("您还没有进行登陆<br>");
			
			out.println("<a href='login.jsp'>" + "点击这里进行用户登陆" + "</a>");
			
		}
	
	%>

</body>
</html>

通过检查session对象的username属性是否存在来判断用户是否已经登陆.

 

3.logout.jsp

<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>用户注销</title>
<script type="text/javascript">
	function zX(){
		
		sessionStorage.removeItem("username");
		
		
		sessionStorage.removeItem("password");
		
		window.location.href = "login.jsp";
		
		
	}



</script>
</head>
<body>

	<button type="button" name="button1" value="注销" onClick="zX()">注销</button>

</body>
</html>

通过给按钮绑定一个点击事件来删除session对象的属性值,点击事件需要使用js代码编写.

以下是一个简单的基于JSP实现用户登录、注册、注销退出的示例代码: 登录页面 login.jsp: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Login</title> </head> <body> <h1>Login</h1> <form method="post" action="login.do"> <label>Username:</label><input type="text" name="username"><br> <label>Password:</label><input type="password" name="password"><br> <input type="submit" value="Login"> </form> <a href="register.jsp">Register</a> </body> </html> ``` 注册页面 register.jsp: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Register</title> </head> <body> <h1>Register</h1> <form method="post" action="register.do"> <label>Username:</label><input type="text" name="username"><br> <label>Password:</label><input type="password" name="password"><br> <input type="submit" value="Register"> </form> <a href="login.jsp">Login</a> </body> </html> ``` 登录、注册、注销退出的Java代码 LoginServlet.java: ```java import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; @WebServlet("/login.do") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; private static final Map<String, String> userDatabase = new HashMap<>(); static { userDatabase.put("user1", "password1"); userDatabase.put("user2", "password2"); userDatabase.put("user3", "password3"); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); if (userDatabase.containsKey(username) && userDatabase.get(username).equals(password)) { HttpSession session = request.getSession(); session.setAttribute("username", username); response.sendRedirect("home.jsp"); } else { response.sendRedirect("login.jsp"); } } } @WebServlet("/register.do") public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username = request.getParameter("username"); String password = request.getParameter("password"); if (!username.isEmpty() && !password.isEmpty()) { LoginServlet.userDatabase.put(username, password); response.sendRedirect("login.jsp"); } else { response.sendRedirect("register.jsp"); } } } @WebServlet("/logout.do") public class LogoutServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getSession().invalidate(); response.sendRedirect("login.jsp"); } } @WebServlet("/home.jsp") public class HomeServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { HttpSession session = request.getSession(false); if (session != null && session.getAttribute("username") != null) { request.getRequestDispatcher("home.jsp").forward(request, response); } else { response.sendRedirect("login.jsp"); } } } ``` 其中,LoginServlet实现用户登录功能,RegisterServlet实现用户注册功能,LogoutServlet实现用户注销功能,HomeServlet实现用户登录后的主页。登录成功后,会将用户保存到HttpSession中,注销时将HttpSession失效。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值