1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 使用JSP实现简单的登录注册功能 并且使用Session跟踪用户登录信息

使用JSP实现简单的登录注册功能 并且使用Session跟踪用户登录信息

时间:2022-03-31 08:13:54

相关推荐

使用JSP实现简单的登录注册功能 并且使用Session跟踪用户登录信息

使用JSP实现简单的登录注册功能,并且使用了Session来跟踪用户的登录信息,这个是用纯JSP来实现此功能的,由于没有连接数据库,所以使用List来模拟数据库。

第一步:创建web项目

如果有不会创建web项目的,可以点击下面这个链接去看。

idea创建第一个web项目

实现登录注册功能,用到以下7个jsp文件和两个类。

login.jsp是登录页面;register.jsp是注册页面;doLogin.jsp是在login.jsp页面的表单提交后在doLogin.jsp页面做效验,如果输入的用户名和密码能在List集合中找到,那么就是登录成功,否则,登录失败;doRegister.jsp是在register.jsp页面的表单提交后向List中添加;error.jsp是在doLogin.jsp页面做效验时,如果输入的用户名和密码在List集合中找不到或者账号和密码输入错误,就会跳转到error.jsp页面;index.jsp页面是首页,登录成功后就会跳到index.jsp页面;session.jsp页面主要是用来将设置的session失效,来实现跟踪用户的登录信息功能;

User类是创建的实体类,其中的属性与用户输入的信息所对应;

UserService是写的业务层,进行具体的业务操作。

第二步: 编写User类,有用户名和密码两个属性

public class User {private String username;private String password;@Overridepublic String toString() {return "User{" +"username='" + username + '\'' +", 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;}public User() {}public User(String username, String password) {this.username = username;this.password = password;}}

第三步:编写UserService类

public class UserService {private static Set<User> userList = new HashSet<>();static{//初始化用户,模拟数据库数据userList.add(new User("zhang","123456"));userList.add(new User("wang","123456"));}// 注册public void register(User user){userList.add(user);}// 登录public User login(User user){String username = user.getUsername();// 获取用户输入的username和passwordString password = user.getPassword();if(username == null || password == null){// 如果有一个为空,就返回nullreturn null;}for (User user1 : userList) {// 如果用户输入的username和password和List中的所对应,那么就返回该userif(username.equals(user1.getUsername()) && password.equals(user1.getPassword())){return user1;}}return null;}}

第四步:编写登录页面 login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>登录</title><style>label{font-size: 25px;margin-top: 20px;}#username,#password{width: 200px;height: 25px;margin-top: 20px;}#submit{width: 50px;height: 25px;margin-top: 20px;}a{font-size: 20px;margin-left: 50px;}</style><script></script></head><body><div style="text-align: center"><form action="doLogin.jsp" method="post"> <%-- 提交请求到doLogin页面--%><label>用户名:</label><input id="username" type="text" name="username"><br/><label>密码:</label><input id="password" type="password" name="password"><br/><input id="submit" type="submit" name="登录"><a href="register.jsp">注册</a></form></div></body></html>

第五步:编写doLogin.jsp页面,来对login.jsp页面提交的数据做效验

<%@ page import="com.wdzl.pojo.User" %> <%@ page import="com.wdzl.service.UserService" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><%request.setCharacterEncoding("utf8"); // 设置字符集,避免出现乱码String username = request.getParameter("username"); // 获取用户输入的usernameString password = request.getParameter("password"); // 获取用户输入的passwordUser user = new User();user.setUsername(username);user.setPassword(password);UserService userService = new UserService();User loginUser = userService.login(user); // 在业务层中做处理,如果找到,返回user,未找到,返回nullif(loginUser != null){// 通过session实现会话跟踪session.setAttribute("username",loginUser.getUsername());// 登录成功,使用重定向跳转页面response.sendRedirect("index.jsp");}else{// 登录失败,向作用域中存错误信息,便于在error.jsp中获取request.setAttribute("msg","您输入的账号或密码错误");// 这里用转发的目的就是为了在error.jsp页面获取request存储的信息request.getRequestDispatcher("error.jsp").forward(request,response);}%></body></html>

第六步:编写error.jsp页面,在doLogin.jsp页面做效验,如果效验失败则跳转到此页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title></title></head><body><p style="color: red;font-size: 30px;text-align: center">登录失败:<%=request.getAttribute("msg")%></p> //在作用域中取值</body></html>

第七步:编写register.jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>注册</title><style>label{font-size: 25px;margin-top: 20px;}#username,#password{width: 200px;height: 25px;margin-top: 20px;}#submit{width: 50px;height: 25px;margin-top: 20px;}a{font-size: 20px;margin-left: 50px;}</style></head><body><div style="text-align: center"><form action="doRegister.jsp" method="post"><%-- 提交请求到doRegister.jsp页面--%><label>用户名:</label><input id="username" type="text" name="username"><br/><label>密码:</label><input id="password" type="password" name="password"><br/><input id="submit" type="submit" name="提交"></form></div></body></html>

第八步:编写doRegister.jsp页面,主要处理register.jsp页面提交的表单信息,添加到List中

<%@ page import="com.wdzl.pojo.User" %><%@ page import="com.wdzl.service.UserService" %><%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>Title</title></head><body><%request.setCharacterEncoding("utf8");String username = request.getParameter("username");String password = request.getParameter("password");User user = new User();user.setUsername(username);user.setPassword(password);UserService userService = new UserService();userService.register(user);%><div style="text-align: center"><h1 >注册成功!用户名为<%=username%></h1><a href="login.jsp" style="font-size: 30px">去登录</a></div></body></html>

第九步:编写index.jsp页面,这里可以实现用户登录信息的跟踪。

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>首页</title></head><body><div style="text-align: center;font-size: 25px"><%-- 判断session中取的用户名是否为空,若为空,则显示去登录,若不为空,则可以在session中取到用户名,并且可以注销,注销后,用户名不在显示--%><%if(session.getAttribute("username") != null){%><%=session.getAttribute("username")%>来到首页<br><a href="session.jsp" οnclick="return confirm('您确定注销么?')" >注销</a><%}else{%><br/><a href="login.jsp">去登录</a><%}%></div></body></html>

第十步:编写session.jsp,主要来清空session的,也是实现会话跟踪必不可少的元素。

<%@ page contentType="text/html;charset=UTF-8" language="java" %><html><head><title>注销</title></head><body><%session.invalidate(); // 清空session // 重定向response.sendRedirect("index.jsp");%></body></html>

以上就是使用jsp简单实现的登录注册功能,这个做的这个就是简单的练练手,之后会使用servlet来重写写登录注册功能,与现在写的登录注册作对比。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。