所花时间:4h
代码量(行):350
了解到的知识点:用SERVLET实现不同用户身份的-注册-登录-系统页面,知识点有数据库 JSP SERVLET HTML SQL等,
主要集中在表单处理方面,jsp和servlet,sql都涉及到表单处理的知识
参考了菜鸟教程:Servlet:https://www.runoob.com/servlet/servlet-database-access.html
JSP:https://www.runoob.com/jsp/jsp-database-access.html
SQL:https://www.runoob.com/sql/sql-select.html
HTML表单:https://www.runoob.com/html/html-forms.html
今天成功做到了用SERVLET实现不同用户身份的-注册-登录-系统页面。可以区分不同用户,实现注册账户并登录,不同的身份会进入不同的页面,而注册的身份信息则会存储进入数据库中。(题目可以见我前几天的博客)代码我会放在下面。
今天重新复学了Servlet和SQL,JSP,HTML的相关知识,并以JAVA本学期开学课前测试的题目为练习。今天可以说是收获颇丰。
项目截图和数据库截图(截至今天进度):
进入网页后可以进入登录页面
输入正确的账号密码可以进入不同的页面:分别是:用户页面,撰稿人页面,管理员页面,点注册可以进入注册页面,注册后显示“注册成功”,点击可以返回。
登录时输入账号密码身份若有误,会分别显示账号错误,密码错误或者是身份错误。点击确定后能返回登录页面重新登录
主要代码:
login.java
1 package Test.test1;
2
3 import Test.com.Bean;
4 import Test.com.Database;
5
6 import javax.servlet.ServletException;
7 import javax.servlet.annotation.WebServlet;
8 import javax.servlet.http.HttpServlet;
9 import javax.servlet.http.HttpServletRequest;
10 import javax.servlet.http.HttpServletResponse;
11 import java.io.IOException;
12 import java.io.PrintWriter;
13 import java.sql.*;
14
15
16 @WebServlet("/login")
17 public class login extends HttpServlet {
18 private static final long serialVersionUID = 1L;
19 Connection conn = null;
20 Statement stmt = null;
21 @Override
22 public void init() throws ServletException {
23 String dburl = "jdbc:mysql://localhost:3306/test001?useSSL=false&serverTimezone=UTC";
24 String username = "root";
25 String password = "1506583922";
26 try{
27 Class.forName("com.mysql.cj.jdbc.Driver");
28 conn = DriverManager.getConnection(dburl,username,password);
29 stmt = conn.createStatement();
30 }catch(SQLException se){
31 // 处理 JDBC 错误
32 se.printStackTrace();
33 }catch(Exception e){
34 // 处理 Class.forName 错误
35 e.printStackTrace();
36 }
37 }
38 @Override
39 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
40 // 设置响应内容类型
41 response.setContentType("text/html;charset=UTF-8");
42
43 PrintWriter out = response.getWriter();
44 String title = "登录页面";
45
46 String put_name =new String(request.getParameter("put_name").getBytes("ISO8859-1"),"UTF-8");
47 String put_password = new String(request.getParameter("put_password").getBytes("ISO8859-1"),"UTF-8");
48 String put_identity = new String(request.getParameter("put_identity").getBytes("ISO8859-1"),"UTF-8");
49
50
51
52 String sql="select * from user_info where user_name="+"'"+put_name+"'";//定义一个查询语句
53 Database c = new Database();
54 ResultSet rs=c.executeQuery(sql);//执行查询语句
55 try {
56 if(rs.next())
57 {
58 //将输入的密码与数据库密码相比对,执行相应操作
59 if(put_password.equals(rs.getObject("user_password")))
60 {
61 if(put_identity.equals(rs.getObject("user_identity")))
62 {
63 switch (put_identity){
64 case "普通用户":response.sendRedirect("normal_user.jsp"); break;
65 case "撰稿人":response.sendRedirect("writer.jsp"); break;
66 case "管理员":response.sendRedirect("admin.jsp"); break;
67 }
68 }
69 else{
70 out.print("<script language='javaScript'> alert('登陆身份错误');</script>");
71 response.setHeader("refresh", "0;url=login1.jsp");
72 }
73
74 }
75 else{
76 out.print("<script language='javaScript'> alert('密码错误');</script>");
77 response.setHeader("refresh", "0;url=login1.jsp");
78 }
79 }
80 else {
81 out.print("<script language='javaScript'> alert('用户名错误');</script>");
82 response.setHeader("refresh", "0;url=login1.jsp");
83 }
84 } catch (SQLException e) {
85 throw new RuntimeException(e);
86 }
87
88
89 }
90
91 @Override
92 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
93 doGet(request, response);
94 }
95
96 @Override
97 public void destroy() {
98 try {
99 conn.close();
100 }catch (Exception e){
101 e.printStackTrace();
102 }
103 }
104 }
register.java
1 package Test.test1;
2
3 import Test.com.Bean;
4 import Test.com.Database;
5 import javax.servlet.ServletException;
6 import javax.servlet.annotation.WebServlet;
7 import javax.servlet.http.HttpServlet;
8 import javax.servlet.http.HttpServletRequest;
9 import javax.servlet.http.HttpServletResponse;
10 import java.io.IOException;
11 import java.io.PrintWriter;
12 import java.sql.*;
13
14
15 @WebServlet("/register")
16 public class register extends HttpServlet {
17 private static final long serialVersionUID = 1L;
18 Connection conn = null;
19 Statement stmt = null;
20 @Override
21 public void init() throws ServletException {
22 String dburl = "jdbc:mysql://localhost:3306/test001?useSSL=false&serverTimezone=UTC";
23 String username = "root";
24 String password = "1506583922";
25 try{
26 Class.forName("com.mysql.cj.jdbc.Driver");
27 conn = DriverManager.getConnection(dburl,username,password);
28 stmt = conn.createStatement();
29 }catch(SQLException se){
30 // 处理 JDBC 错误
31 se.printStackTrace();
32 }catch(Exception e){
33 // 处理 Class.forName 错误
34 e.printStackTrace();
35 }
36 }
37 public void addin(String user_name,String user_password,String user_identity){
38
39 PreparedStatement preparedStatement=null;
40 try {
41 String sql = "INSERT INTO user_info (user_name,user_password,user_identity) values (?,?,?)";
42 preparedStatement=conn.prepareStatement(sql);
43 preparedStatement.setString(1,user_name);
44 preparedStatement.setString(2,user_password);
45 preparedStatement.setString(3,user_identity);
46 preparedStatement.executeUpdate();
47 //System.out.println("添加成功");
48
49 } catch (SQLException e) {
50 e.printStackTrace();
51 }finally{
52
53 }
54 }
55 @Override
56 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
57 // 设置响应内容类型
58 response.setContentType("text/html;charset=UTF-8");
59 request.setCharacterEncoding("UTF-8");
60 PrintWriter out = response.getWriter();
61
62 String reg_name =new String(request.getParameter("reg_name"));
63 String reg_password = new String(request.getParameter("reg_password"));
64 String reg_identity = new String(request.getParameter("reg_identity"));
65
66 addin(reg_name,reg_password,reg_identity);
67
68
69 String site = new String("http://localhost:8080/Test01_war_exploded/mess.jsp");
70 response.setStatus(response.SC_MOVED_TEMPORARILY);
71 response.setHeader("Location", site);
72 }
73
74 @Override
75 protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
76 doGet(request, response);
77 }
78
79 @Override
80 public void destroy() {
81 try {
82 conn.close();
83 }catch (Exception e){
84 e.printStackTrace();
85 }
86 }
87 }
login1.jsp
1 <%-- 2 Created by IntelliJ IDEA. 3 User: 23944 4 Date: 2023/2/21 5 Time: 16:33 6 To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page contentType="text/html;charset=UTF-8" language="java" %> 9 <!DOCTYPE html> 10 <html> 11 <head> 12 <meta charset="utf-8"> 13 <title>登陆页面</title> 14 </head> 15 <body> 16 <form action="login" method="POST"> 17 <table border="0"> 18 <tr> 19 <td>账号:</td> 20 <td><input type="text" name="put_name"></td> 21 </tr> 22 <tr> 23 <td>密码:</td> 24 <td><input type="password" name="put_password"></td> 25 </tr> 26 </table> 27 <td>登录身份:</td> 28 <input type="radio" name="put_identity" value="普通用户">普通用户 29 <input type="radio" name="put_identity" value="撰稿人">撰稿人 30 <input type="radio" name="put_identity" value="管理员">管理员 31 <br> 32 <input type="submit" value="登录"> 33 34 </form> 35 <input type="submit" value="注册"onclick="location.href='register0.jsp'"> 36 </body> 37 </html>
register0.jsp
1 <%-- 2 Created by IntelliJ IDEA. 3 User: 23944 4 Date: 2023/2/21 5 Time: 16:33 6 To change this template use File | Settings | File Templates. 7 --%> 8 <%@ page language="java" contentType="text/html; charset=UTF-8" 9 pageEncoding="UTF-8"%> 10 <!DOCTYPE html> 11 <html> 12 <head> 13 <meta charset="UTF-8"> 14 <title>注册</title> 15 </head> 16 <body> 17 <form action="register" method="POST"> 18 <p style="text-align:center;color: black; font-family: 宋体; font-size: 20px"> 19 20 <font face="楷体" size="2" color=black> 账号:</font> 21 <input type="text" name="reg_name" maxlength="8"> 22 <br> 23 <br> 24 <font face="楷体" size="2" color="black">密码:</font> 25 <input type="password" name="reg_password" maxlength="50"> 26 <br> 27 <br> 28 <font face="楷体" size="2" color="black">身份:</font> 29 <input type="radio" size="2" name="reg_identity" value="普通用户" checked>普通用户 30 <input type="radio" size="2" name="reg_identity" value="撰稿人" checked>撰稿人 31 32 <br> 33 34 <br><input type="submit" value="提交" /> 35 <br> 36 <br> <input type="button" value="返回" onclick="location.href='login1.jsp'" /> <br> 37 </p> 38 </form> 39 </body> 40 </html>
Database.java
package Test.com;
import java.sql.*;
public class Database {
private Connection conn = null;
private Statement stmt = null;
private String driverStr = "com.mysql.jdbc.Driver";
private String dburl = "jdbc:mysql://localhost:3306/test001?useSSL=false&serverTimezone=UTC";
private String username = "root";
private String password = "1506583922";
public Database() {
try {
Class.forName(driverStr);
conn = DriverManager.getConnection(dburl, username, password);
stmt = conn.createStatement();
} catch (SQLException se) {
// 处理 JDBC 错误
se.printStackTrace();
} catch (Exception e) {
// 处理 Class.forName 错误
e.printStackTrace();
}
}
public ResultSet executeQuery(String s){
ResultSet rs = null;
System.out.print("--查询语句:" + s + "\n");
try {
rs = stmt.executeQuery(s);
} catch (Exception ex) {
System.out.println("执行查询错误!");
}
return rs;
}
public void close() {
try {
stmt.close();
conn.close();
} catch (Exception e) {
}
}
}
继续努力!





浙公网安备 33010602011771号