JAVA WEB实现图书管理系统 —— 登录、注册页面

tech2022-09-18  97

1、登录: 2、注册:

一、编写User类,封装用户的信息

package entity; public class User { private String username; private String password; private String sex; private String age; public User() { super(); // TODO Auto-generated constructor stub } public User(String username, String password, String sex, String age) { super(); this.username = username; this.password = password; this.sex = sex; this.age = age; } 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 String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } }

二、编写登录、注册界面

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> <center><h3>图书管理系统用户登录</h3></center> <body style="text-align:center"> <form action="${pageContext.request.contextPath}/LoginServlet" method="post"> <table border="0" width="350px" cellpadding="0" cellspacing="0" align="center" style="background:#CFF;"> <tr> <td height="50" align="center">用户名:&nbsp;&nbsp; <input type="text" name="username" />${errorMsg}</td> </tr> <tr> <td height="50" align="center">&nbsp;&nbsp;码:&nbsp;&nbsp; <input type="password" name="password" /></td> </tr> <tr> <td heignt="50"> <input type="checkbox" name="autologin" value="${60*60*24*31}" />自动登录 </td> </tr> <tr> <td height="50"> <input type="submit" value="登录" />&nbsp;&nbsp;&nbsp;&nbsp; <input type="reset" value="重置" />&nbsp;&nbsp;&nbsp;&nbsp; <a href="register.jsp">注册</a> </td> </tr> </table> </form> </body> </html>

register.jsp:

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>注册</title> </head> <center><h3>用户注册</h3></center> <body style="text-align:center;"> <form action="RegisterServlet" method="post"> <table align="center" width="450px" style="background:#CFF;"> <tr> <td height="50" align="center">用户名: <input type="text" name="username" />${errorMsg}</td> </tr> <tr> <td height="50" align="center">&nbsp;&nbsp;码:&nbsp;&nbsp;&nbsp;&nbsp; <input type="password" name="password" /></td> </tr> <tr> <td height="50" align="center">&nbsp;&nbsp;别: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="checkbox" name="sex" value="male " />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="checkbox" name="sex" value="female" /></td> </tr> <tr> <td height="50" align="center">&nbsp;&nbsp;龄:&nbsp;&nbsp;&nbsp;&nbsp; <input type="text" name="age" /></td> </tr> <tr> <td height="50" colspan="2" align="center"> <input type="submit" value="注册" /> &nbsp;&nbsp;&nbsp;&nbsp; <input type="reset" value="重置" /> </td> </tr> </table> </form> </body> </html>

三、编写RegisterServlet和LoginServlet类,实现动态登录、注册

由于要把用户信息存储到数组库中,我们首先要部署JDBC,这部分不再赘述,请参考JAVA访问数据库实例 ,但要注意在开发JAVA WEB中不同的一点是,jar包要保存在lib目录下 创建数据库的语句如下:

create database if not exists users; use users; drop table if exists register; create table register( id int(10) primary key auto_increment, username varchar(45) not null , password varchar(45) not null, sex varchar(15) not null, age varchar(15) not null, unique(username) ); insert into register(username,password,sex,age ) values('Tom','123456','male','18');

实现登录、注册所需要的两个接口:

boolean add(User user); boolean search(String username,String password);

接口实现:

Connection cn; PreparedStatement psm=null; private ResultSet rs; @Override public boolean add(User user) { // TODO Auto-generated method stub boolean flag=false; //连接数据库 DBCon dbcon=new DBCon(); cn=dbcon.getConnection(); String sql="insert into register(username,password,sex,age) values(?,?,?,?)"; try { psm=cn.prepareStatement(sql); psm.setString(1, user.getUsername()); psm.setString(2, user.getPassword()); psm.setString(3, user.getSex()); psm.setString(4, user.getAge()); psm.executeUpdate(); flag=true; cn.close(); psm.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return flag; } @Override public boolean search(String username, String password) { // TODO Auto-generated method stub boolean flag=false; DBCon dbcon=new DBCon(); cn=dbcon.getConnection(); User user=new User(); String sql="select * from register where username=? and password=?"; try { psm=cn.prepareStatement(sql); psm.setString(1, username); psm.setString(2, password); rs=psm.executeQuery(); if(rs.next()) { flag=true; } cn.close(); psm.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return flag; }

RegisterServlet.java

package servlet; import java.io.IOException; 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 daoImp.UserDaoImp; import entity.User; @WebServlet("/RegisterServlet") public class RegisterServlet extends HttpServlet { private static final long serialVersionUID = 1L; public RegisterServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().append("Served at: ").append(request.getContextPath()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取表单信息 String username=request.getParameter("username"); String password=request.getParameter("password"); String sex=request.getParameter("sex"); String age=request.getParameter("age"); User user=new User(); user.setUsername(username); user.setPassword(password); user.setSex(sex); user.setAge(age); //调用接口实现类将注册信息存入数据库 UserDaoImp udi=new UserDaoImp(); if(udi.add(user)) { String url="/bookManage/login.jsp"; response.sendRedirect(url); }else { request.setAttribute("errorMsg", "用户已存在"); request.getRequestDispatcher("/register.jsp").forward(request, response); } } }

LoginServlet.java

package servlet; import java.io.IOException; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.Cookie; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import daoImp.UserDaoImp; import entity.User; @WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet { private static final long serialVersionUID = 1L; public LoginServlet() { super(); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().append("Served at: ").append(request.getContextPath()); } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { String username=request.getParameter("username"); String password=request.getParameter("password"); UserDaoImp udi=new UserDaoImp(); if(udi.search(username, password)) { User user=new User(); user.setUsername(username); user.setPassword(password); //创建session对象,将用户信息保存到服务器,以便后续使用 request.getSession().setAttribute("user", user); //判断用户是否选择了自动登录选项 String autoLogin=request.getParameter("autologin"); //如果用户选择了自动登录,则将用户信息保存到浏览器,待用户下次访问时,可直接根据cookie里的信息直接定位到主页 if(autoLogin!=null) { Cookie cookie=new Cookie("autologin",username+"-"+password); cookie.setMaxAge(Integer.parseInt(autoLogin)); cookie.setPath(request.getContextPath()); response.addCookie(cookie); } //重定位到主页面 response.sendRedirect(request.getContextPath()+"/index.jsp"); }else {//如果用户输入信息和数据库信息不符,则提示输入错误 request.setAttribute("errorMsg", "用户名或密码错误"); request.getRequestDispatcher("/login.jsp").forward(request, response); } } }

关于response.sendRedirect()和request.getRequestDispatcher().forward()的区别看到一个解释的不错的文章

四、配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.5"> <servlet> <servlet-name>LoginServlet</servlet-name> <servlet-class>servlet.LoginServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>LoginServlet</servlet-name> <url-pattern>/bookManage/LoginServlet</url-pattern> </servlet-mapping> <servlet> <servlet-name>RegisterServlet</servlet-name> <servlet-class>servlet.RegisterServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>RegisterServlet</servlet-name> <url-pattern>/bookManage/RegisterServlet</url-pattern> </servlet-mapping> </web-app>

下一步:JAVA WEB实现图书管理系统 —— 主页面 源码下载

最新回复(0)