[实验任务] 使用jsp页面完成注册、登录并显示
[任务介绍]
1.任务描述
网上购物是人们日常生活的重要事情之一。在超市中有很多日常生活的用品,如电饭煲、蒸锅、洗衣机、电冰箱等。
本任务要求,通过所学Servlet、JavaBean和JDBC知识读取数据库数据,以JSP页面的形式呈现数据,用于数据浏览。
备注:
1)本任务需要编写4个JSP页面、6个Servlet文件(注册、登录、显示、验证码、修改、删除)、1个JavaBean文件、1个dao文件(用于实现增删改查功能)、1个数据库连接文件;
2)本任务所需要的类文件,需要按如下图所示结构创建;
3)用户先进行注册,注册成功跳转到登录页面,输入用户名和密码进行登录;登录成功跳转到显示页面,登录不成功则需要重新登录。
2.运行结果
图1 注册页面
图2 登录界面
图3 用户列表页面
图4 修改用户页面
图5 修改成功页面
图6 数据表
[任务目标]
- 掌握Servlet和JSP运行原理;
- 掌握JavaBean、EL表达式和JSP标签库(JSTL)的使用;
- 熟练应用Servlet技术、JavaBean技术完成数据访问。
[实现思路]
- 先建立登录界面,通过调用数据库用户账号和密码,如果账号或密码正确,进入用户信息列表界面。
- 用户信息列表通过调用UserDao中的findALL方法,将对应数据库中的数据取出。
- 添加用户信息,同样调用UserDao中的insert方法,将数据插入数据库中,并跳转回用户信息界面
- 修改用户信息,调用UserDao中的update方法,修改数据库中的数据,并跳转回用户信息界面
- 删除用户信息,调用UserDao中的delete方法,删除数据库中对应的数据。
[实现代码以及运行效果]
最重要的当然是连接数据库啦~
注意:
String url = "jdbc:mysql://localhost:3306/users?useUnicode=true&characterEncoding=utf-8";
这里面users是自己建的数据库哦(⊙o⊙)
如下所示为我建的数据库users,以及数据表user
id为自动编号!!!
最后一定要导入jar包!!!(打圈圈的那个哦,这个jar包网上可以下载,如果MySQL版本比较高,可能得导入8.0.27的)
废话不多说,直接上代码!!!
✨GetDBConnection.java✨
package conn;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class GetDBConnection {
private static Connection con;
public static Connection getConnection() {
try {
Class.forName("com.mysql.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/users?useUnicode=true&characterEncoding=utf-8";
String username = "root";
String password = "root";
con = DriverManager.getConnection(url, username, password);
} catch (Exception e) {
e.printStackTrace();
}
return con;
}
public static void release(Statement stat,Connection con){
if(stat!=null){
try{
stat.close();
}
catch(Exception e){
e.printStackTrace();
}
stat=null;
}
if(con!=null){
try{
con.close();
}
catch(Exception e){
e.printStackTrace();
}
con=null;
}
}
public static void release(ResultSet rs,Statement stat,Connection con){
if(rs!=null){
try{
rs.close();
}
catch(Exception e){
e.printStackTrace();
}
rs=null;
}
if(stat!=null){
try{
stat.close();
}
catch(Exception e){
e.printStackTrace();
}
stat=null;
}
if(con!=null){
try{
con.close();
}
catch(Exception e){
e.printStackTrace();
}
con=null;
}
}
}
✨User.java✨
package javabean;
public class User {
private int id;
private String username;
private String password;
private String realname;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
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 getRealname() {
return realname;
}
public void setRealname(String realname) {
this.realname = realname;
}
}
✨UserDao.java✨
package javabean;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import conn.GetDBConnection;
public class UserDao {
private Connection con = null;
PreparedStatement preStat = null;
private ResultSet rs = null;
public ArrayList findAll(){
ArrayList list = new ArrayList();
String sql = "select * from user";
con = GetDBConnection.getConnection();
try{
preStat = con.prepareStatement(sql);
rs = preStat.executeQuery();
while (rs.next()){
User user = new User();
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
user.setRealname(rs.getString(4));
list.add(user);
}
return list;
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
GetDBConnection.release(rs, preStat, con);
}
return null;
}
//查找
public User findByName(String name){
User user = new User();
try{
con = GetDBConnection.getConnection();
String sql = "select * from user where username=?";
preStat = con.prepareStatement(sql);
preStat.setString(1, name);
rs = preStat.executeQuery();
if (rs.next()){
user.setUsername(rs.getString(2));
user.setPassword(rs.getString(3));
user.setRealname(rs.getString(4));
}
return user;
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
GetDBConnection.release(preStat, con);
}
return null;
}
//登录
public boolean Login(String name, String pwd){
try{
con = GetDBConnection.getConnection();
String sql = "select * from user where username=? and password=?";
preStat = con.prepareStatement(sql);
preStat.setString(1, name);
preStat.setString(2, pwd);
rs = preStat.executeQuery();
if (rs.next()) return true;
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
GetDBConnection.getConnection();
}
return false;
}
//插入
public boolean insert(User user){
try{
con = GetDBConnection.getConnection();
String sql = "insert into user values(null,?,?,?)";
preStat = con.prepareStatement(sql);
preStat.setString(1, user.getUsername());
preStat.setString(2, user.getPassword());
preStat.setString(3, user.getRealname());
if (preStat.executeUpdate() == 1) return true;
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
GetDBConnection.release(preStat, con);
}
return false;
}
//更新
public boolean update(User user) {
try{
con = GetDBConnection.getConnection();
String sql = "update user set password=?,realname=? where username=?";
preStat = con.prepareStatement(sql);
preStat.setString(1, user.getPassword());
preStat.setString(2, user.getRealname());
preStat.setString(3, user.getUsername());
if (preStat.executeUpdate() == 1) return true;
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
GetDBConnection.release(preStat, con);
}
return false;
}
//删除
public boolean delete(String name){
try{
con = GetDBConnection.getConnection();
String sql = "delete from user where username=?";
preStat = con.prepareStatement(sql);
preStat.setString(1, name);
if (preStat.executeUpdate() == 1) return true;
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
finally{
GetDBConnection.release(preStat, con);
}
return false;
}
}
✨LoginServlet.java✨
package MyServlet;
import java.io.IOException;
import java.io.PrintWriter;
import javabean.UserDao;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class LoginServlet extends HttpServlet {
public LoginServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String username = request.getParameter("username");//帐号
String password = request.getParameter("password");//密码
if(username != null && !username.equals("")){
UserDao userdao = new UserDao();
boolean falg=userdao.Login(username, password);
if(falg == false){
request.setAttribute("msg1", "帐号或密码输入有误,登录失败!");
RequestDispatcher dispatcher = request.getRequestDispatcher("/index.jsp");
dispatcher.forward(request, response);
}else{
//request.setAttribute("msg1", "登录成功!");
request.getSession().setAttribute("userid",username);
response.sendRedirect("ListUserServlet");
}
}
}
public void init() throws ServletException {
// Put your code here
}
}
✨registerUser.java✨
package MyServlet;
import java.io.IOException;
import java.io.PrintWriter;
import javabean.User;
import javabean.UserDao;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class registerUser extends HttpServlet {
public registerUser() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("");
out.println("");
out.println(" A Servlet ");
out.println(" ");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" ");
out.println("");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
String realname = request.getParameter("realname");
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setRealname(realname);
UserDao userDao = new UserDao();
boolean flag = userDao.insert(user);
if (flag){
out.println("用户添加成功!");
request.getRequestDispatcher("/index.jsp").forward(request, response);
}else {
out.println("用户添加失败!");
}
}
public void init() throws ServletException {
// Put your code here
}
}
✨ListUserServlet.java✨
package MyServlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import javabean.User;
import javabean.UserDao;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ListUserServlet extends HttpServlet {
public ListUserServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
UserDao userDao = new UserDao();
ArrayList list = userDao.findAll();
request.setAttribute("list", list);
request.getRequestDispatcher("/UserList.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
public void init() throws ServletException {
// Put your code here
}
}
✨addUserServlet.java✨
package MyServlet;
import java.io.IOException;
import java.io.PrintWriter;
import javabean.User;
import javabean.UserDao;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class addUserServlet extends HttpServlet {
public addUserServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("");
out.println("");
out.println(" A Servlet ");
out.println(" ");
out.print(" This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println(" ");
out.println("");
out.flush();
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
String realname = request.getParameter("realname");
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setRealname(realname);
UserDao userDao = new UserDao();
boolean flag = userDao.insert(user);
if (flag){
out.println("用户添加成功!");
response.sendRedirect("../servlet/ListUserServlet");
}else {
out.println("用户添加失败!");
}
}
public void init() throws ServletException {
// Put your code here
}
}
✨delUserServlet.java✨
package MyServlet;
import java.io.IOException;
import java.io.PrintWriter;
import javabean.UserDao;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class delUserServlet extends HttpServlet {
public delUserServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charste=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("id");
UserDao userDao = new UserDao();
boolean flag = userDao.delete(username);
if (flag){
out.println("用户删除成功!");
response.sendRedirect("../servlet/ListUserServlet");
}else{
out.println("用户删除失败!");
}
}
public void init() throws ServletException {
// Put your code here
}
}
✨updateUserServlet.java✨
package MyServlet;
import java.io.IOException;
import java.io.PrintWriter;
import javabean.User;
import javabean.UserDao;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class updateUserServlet extends HttpServlet {
public updateUserServlet() {
super();
}
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=utf-8");
String username = request.getParameter("id");
UserDao userDao = new UserDao();
User user = new User();
user = userDao.findByName(username);
request.setAttribute("user", user);
request.getRequestDispatcher("/updateUser.jsp").forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
request.setCharacterEncoding("utf-8");
PrintWriter out = response.getWriter();
String username = request.getParameter("username");
String password = request.getParameter("password");
String realname = request.getParameter("realname");
User user = new User();
user.setUsername(username);
user.setPassword(password);
user.setRealname(realname);
UserDao userDao = new UserDao();
boolean flag = userDao.update(user);
if (flag){
out.println("用户修改成功!");
response.sendRedirect("ListUserServlet");
}else{
out.println("用户修改失败!");
}
}
public void init() throws ServletException {
// Put your code here
}
}
✨jsp部分✨
小剧场~
你:在登录部分为啥没有验证码❓❗❗❗给我写出来
我:咋就是说,不会/(ㄒoㄒ)/~~俺也不知道杂肥事,产生的验证码是个“❌”
所以的所以,果断没有写验证码臘♀️
友友们可以自己尝试,写出来Q我一下,救救我ಥ_ಥ
李index.jsp(登录界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
register.jsp(注册界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
My JSP 'register.jsp' starting page
UserList.jsp(显示用户信息界面)
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
My JSP 'UserList.jsp' starting page
添加用户
用户信息列表
用户名
密码
真实姓名
${user.username }
${user.password }
${user.realname }
修改 删除
后面增加、修改用户信息界面没有美化,可自行创作(●'◡'●)
addUser.jsp(增加用户信息界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
updateUser.jsp(更新用户信息界面)
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
Insert title here
登录界面
当用户名或密码错误时,提示“账号或密码输入有误,登录失败!”
当点击注册时,跳转到注册界面(点击登录跳转到登录界面)。
当登录成功后进入用户信息显示界面。
点击“添加用户”跳转到添加界面。
点击添加按钮后回到用户信息显示界面,在界面中新增了一条记录,如下图所示:
点击修改按钮进入修改界面。
点击修改按钮回到用户信息显示界面,此时列表中的信息已被更改。
点击删除按钮,将对应行删除。
[总结或感悟](对运行结果所作的分析以及本次调试程序所取得的经验。如果程序未能通过,分析其原因。)
这部分不给康看



