【JavaWeb】JAVABean+Session实现JSP登录注册(List模型数据库用户信息存储+商品展示)

编程入门 行业动态 更新时间:2024-10-19 23:41:24

【JavaWeb】JAVABean+Session实现JSP登录注册(List模型数据库<a href=https://www.elefans.com/category/jswz/34/1766089.html style=用户信息存储+商品展示)"/>

【JavaWeb】JAVABean+Session实现JSP登录注册(List模型数据库用户信息存储+商品展示)

        先说说这个题目吧,好端端的数据库不连,偏偏喜欢要整一个JavaBean和List来模拟数据库,虽然说这样的做法非常的愚蠢,但没办法,毕竟是主人的任务是吧doge。作者其实已经做了一版,但是这代码写的实在是。。。于是乎作者使用了MVC框架后整理了一个新的。(如果你学了servlet,那会发现和它的结构和思想非常的像)

实现效果图

总体思路

  1. 尽量做到前后端分离,前端页面有什么页面就写什么,前端页面需要什么实体对象和业务对象后端就写什么。
  2. 后端涉及到的有实体对象(商品、用户)和业务处理(登录、注册)
  3. 前端涉及到的有登录、注册、商品展示页面。以及登录与注册相关的处理、成功/失败的结果页面

项目工程文件结构

 

后端

pojo文件存储的是实体类,该实体类为JAVABean,特点是  属性private+属性getter()/setter()方法+无参构造方法,代码如下。

用户实体类

package week8.pojo;public class User {private String username;private String password;public User() {}public User(String username, String password) {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 week8.pojo;public class Good {public String tName;public int tPrince;public int tNum;public Good(String tName, int tPrince, int tNum){this.tName=tName;this.tNum=tNum;this.tPrince=tPrince;}public Good() {}public String gettName() {return tName;}public void settName(String tName) {this.tName = tName;}public int gettPrince() {return tPrince;}public void settPrince(int tPrince) {this.tPrince = tPrince;}public int gettNum() {return tNum;}public void settNum(int tNum) {this.tNum = tNum;}@Overridepublic String toString() {return "thing{" +"tName='" + tName + '\'' +", tPrince=" + tPrince +", tNum=" + tNum +'}';}
}

商品集实体类

package week8.pojo;import test.thing;import java.util.ArrayList;public class Repository {private ArrayList<Good> repo;public Repository(ArrayList<Good> repo) {this.repo = repo;}public Repository() {}public ArrayList<Good> getRepo() {return repo;}public void setRepo(ArrayList<Good> repo) {this.repo = repo;}
}

service文件主要存储的是业务类,尤其要注意UserService里有一个List对象来模拟数据库,且必须加static

package week8.service;import week8.pojo.User;import java.util.ArrayList;public class UserService {//初始化定义一个list数据库private static ArrayList<User> userArrayList=new ArrayList<>();//登录业务public static User loginService(User user){String username= user.getUsername();String passwrod= user.getPassword();if(username==null|passwrod==null){return null;}for(User user1:userArrayList){System.out.println(user1.toString());System.out.println(username);System.out.println(user1.getUsername());System.out.println(passwrod);System.out.println(user1.getPassword());if(username.equals(user1.getUsername())&passwrod.equals(user1.getPassword()))return user1;}return null;}//注册业务public  User registerService(User user){//若以username为候选键,则其必定为UNIQUEString username= user.getUsername();for(User user1:userArrayList){if(username.equals(user1.getUsername())){return null;}}userArrayList.add(user);return user;}}

前端

登录页面

登录展示页面-->业务处理页面-->处理结果页面

登录展示页面,主要用于用户数据的接受

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>登录</title>
</head>
<body>
登录
<form action="<%=request.getContextPath()%>/week8/login_handler.jsp" method="post">用户名:<input type="text" name="username"><br/>密&nbsp;码:<input type="password" name="password"><br/><input type="submit" value="提交"/>
</form>
<a href="<%=request.getContextPath()%>/week8/register.jsp">如果您未注册,请先点击注册</a></body>
</html>

        业务处理页面,使用UserService对象的中的登录注册判定方法,从而决定要跳转到哪一个结果页面。如果用户账号密码登录成功,那就跳转到商品展示页面,所以可以在此页面对商品数据进行初始化。

<%@ page import="week8.pojo.User" %>
<%@ page import="week8.service.UserService" %>
<%@ page import="week8.pojo.Repository" %>
<%@ page import="week8.pojo.Good" %>
<%@ page import="java.util.ArrayList" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%//初始化业务对象类,方便后续使用其方法UserService userService=new UserService();request.setCharacterEncoding("utf8");       // 设置字符集,避免出现乱码String username= request.getParameter("username");String password= request.getParameter("password");User user=new User();user.setUsername(username);user.setPassword(password);User loginUser=UserService.loginService(user);if(loginUser!=null){//登录成功建立Session会话session.setAttribute("user",loginUser);//初始化商品信息Repository repo=new Repository();ArrayList<Good> arrayList=new ArrayList<Good>();for (int i =0;i<20;i++){Good t=new Good();t.tName="旺仔牛奶";t.tPrince=56;t.tNum=98;arrayList.add(t);}repo.setRepo(arrayList);session.setAttribute("repo",repo);response.sendRedirect("show.jsp");}else{request.setAttribute("msg","您输入的账号或密码有错误");request.getRequestDispatcher("/week8/login_error.jsp").forward(request,response);}
%>

登录失败页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<p style="color: red;font-size: 30px;text-align: center">登录失败:<%=request.getAttribute("msg")%></p>
<a href="login.jsp">重新登录</a>

登录成功页面,显示商品信息

<%@ page import="week8.pojo.Repository" %>
<%@ page import="week8.pojo.Good" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Iterator" %>
<%@ page import="week8.pojo.User" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>Title</title>
</head>
<body>
<%User u1=(User)session.getAttribute("user");if(u1!=null){%><a href="login_quit.jsp">退出登录</a><%Repository repo=(Repository)session.getAttribute("repo");ArrayList<Good> thingArrayList=repo.getRepo();Iterator<Good> thingIterator=thingArrayList.iterator();Good t=null;%>
<table><tr><th>名字</th><th>库存</th><th>价格</th></tr><%while(thingIterator.hasNext()){t=thingIterator.next();%><tr><td><%=t.gettName()%></td><td><%=t.gettNum()%></td><td><%=t.gettPrince()%></td></tr><br/>
</table>
<%} }else{%>
<a href="login.jsp">请先登录!</a>
<%}%>
</body>
</html>

注册页面

注册展示页面-->注册业务处理页面-->处理结果页面

注册展示页面,主要用于接受用户注册信息

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head><title>注册</title>
</head>
<body>
注册
<form action="<%=request.getContextPath()%>/week8/register_handler.jsp" method="post">用户名:<input type="text" name="username"><br/>密&nbsp;码:<input type="password" name="password"><br/><input type="submit" value="提交"/>
</form></body>
</html>

注册业务处理页面,使用UserService来对注册的用户名和密码进行处理,因为只需要显示是否登录成功,所以在业务处理之后,在本页面直接显示结果

<%@ page import="week8.pojo.User" %>
<%@ page import="week8.service.UserService" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %><%UserService userService=new UserService();request.setCharacterEncoding("utf8");String username=request.getParameter("username");String password=request.getParameter("password");User user=new User();user.setPassword(password);user.setUsername(username);User loginUser=userService.registerService(user);if (loginUser!=null){out.print("注册成功");%>
<a href="<%=request.getContextPath()%>/week8/login.jsp">去登录</a>
<%}else{out.print("注册失败!");
%>
<a href="<%=request.getContextPath()%>/week8/register.jsp">重新注册</a>
<%}%>

退出登录页面

注意此时session已经把所要连接的对象删除了,所以此时直接进入show.jsp商品展示页面不会显示出商品,只有返回登录的链接。


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%session.invalidate();response.sendRedirect("login.jsp");
%>

更多推荐

【JavaWeb】JAVABean+Session实现JSP登录注册(List模型数据库用户信息存储+商品展示)

本文发布于:2024-02-11 20:11:03,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1683174.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:用户信息   模型   数据库   商品   JAVABean

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!