JavaEE——网络留言板(未完)

初学 JavaEE

​ 之前学过一点点 Servlet,现在学校开了 JavaEE,正好复习了一下之前的知识

什么是 JavaEE

​ JavaEE 可以理解为一套使用 java 为主体的、课跨平台的、快速设计并进行企业级 Web 应用开发的标准

​ JavaEE 开发应用程序有两种主要方式——JavaWeb 开发和 Java 框架开发

Java Web 开发

​ 这是传统的开发方式,核心技术是 JSP、Servlet、JavaBean。这种开发模式的缺点是:没有一套有效的开发规范来约束 JSP 程序员,整个应用系统结构不清晰,项目规模越大越难维护

###Java 框架开发

​ 在开发中使用现成的的框架可减少代码量、大大降低编程难度,同时也使开发出来的应用系统结构清晰、易于维护

JavaEE 初体验——留言板

​ 采用 Java Web 开发,使用 JSP + Servlet + JavaBean 完成

MVC 模式

​ MVC 模式中,应用程序被划分成:模型层(Model)、视图层(View)、控制层(Controller)三部分,MVC 模型就是把一个应用程序的开发按照业务逻辑、数据、视图进行分离分层并组织代码,在这种模式下,Servlet 负责处理用户请求,JSP 负责显示数据和界面、JavaBean 负责封装数据

​ 在这种架构模式下,模型层(Model)定义了数据模型和业务逻辑,为了将数据访问与业务逻辑分离,模型层又具体划分为 DAO 层和业务层,DAO 即 Data Access Object,主要作用是把数据封装起来变成 JavaBean;业务层是整个系统的核心,几乎所有的数据处理、获取到的原始数据都在这一层发生

项目目录结构

Project

.idea

out

src

JDBC

jdbcConn.java

MainServlet

LybServlet

ServletTest01

ZcServlet

UserDao

UserDao

Users

Users

web

WEB-INF

lib

mysql-connector-java-8.0.16.jar

web.xml

index.jsp

LYB.jsp

MAIN.jsp

ZC.jsp

FirstServlet.iml

项目介绍

​ JDBC 类中为 mysql JDBC 驱动,所有需要连接数据库的代码都从此处获得连接

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package JDBC;

import java.sql.Connection;
import java.sql.DriverManager;

public class JdbcConn {

static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/servletdemo?serverTimezone=UTC";

// 数据库的用户名与密码,需要根据自己的设置
static final String USER = "root";
static final String PASS = "lmh12358";

public Connection GetConn () {
Connection conn;
try {
System.out.println("开始尝试连接数据库");
Class.forName(JDBC_DRIVER);
System.out.println("注册驱动成功");
conn = DriverManager.getConnection(DB_URL, USER, PASS);
System.out.println("连接数据库成功");
return conn;
}
catch (Exception e) {
e.printStackTrace();
}
return null;
}

}

​ MainServlet 包下为所有用到的 Servlet,在这些 Servlet 负责控制调度后台 DAO 层的方法

​ ServletTest01 负责控制登陆界面,调用 UserDao 中的 check 方法来检验用户名密码是否匹配

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package MainServlet;

import javax.servlet.ServletException;
import javax.sql.rowset.serial.SerialException;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import Users.Users;
import UserDao.UserDao;

public class ServletTest01 extends javax.servlet.http.HttpServlet {

private String message = "hello this is Servlet";

protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

}

protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, IOException {

String index01 = request.getParameter("dl");
String index02 = request.getParameter("zc");
String username=request.getParameter("name");
String password=request.getParameter("password");

if (index02 == null) {
Users u = new Users();
u.setName(username);
u.setPassword(password);
UserDao us = new UserDao();
boolean t = us.check(u);
if(t == true){
System.out.println("检验成功");
response.sendRedirect("MAIN.jsp");
}else{
System.out.println("失败");
}
}
if (index01 == null) {
response.sendRedirect("ZC.jsp");
}
}

public void init(){

}


}

​ LybServlet 用来控制留言板页面,留言提交功能通过调用 CommitLY 方法来控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package MainServlet;

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 java.io.IOException;

import UserDao.UserDao;

@WebServlet(name = "LybServlet")
public class LybServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String name=request.getParameter("username");
String ly=request.getParameter("content");
UserDao us = new UserDao();
boolean t = us.CommitLY(name, ly);
if (t = true){
System.out.println("留言成功!");
response.sendRedirect("MAIN.jsp");
}

else
System.out.println("servlet失败!");
}
}

​ ZcServlet 用来控制注册界面中,提交用户名密码由 ZcUser 方法来控制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
package MainServlet;

import UserDao.UserDao;
import Users.Users;

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 java.io.IOException;

@WebServlet(name = "ZcServlet")
public class ZcServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username=request.getParameter("name");
String password=request.getParameter("password");
Users u = new Users();
u.setName(username);
u.setPassword(password);
UserDao us = new UserDao();
boolean t = us.ZcUser(u);
if (t == true) {
System.out.println("注册成功");
response.sendRedirect("index.jsp");
}

else
System.out.println("注册失败");
}
}

​ DAO 层定义了 UserDao 类用来定义所有 Servlet 调用的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
package UserDao;

import java.sql.*;

import Users.Users;
import JDBC.JdbcConn;

public class UserDao {

public JdbcConn NewConn = new JdbcConn();

public boolean check(Users user) {

int x = 0;
try {
Connection conn = NewConn.GetConn();
Statement stmt = conn.createStatement();
String sql = "select name,password from user";
ResultSet rs = stmt.executeQuery(sql);

while(rs.next()){
System.out.println(user.getName()+rs.getString(1));
if(user.getName().equals(rs.getString(1))){
System.out.println("能比较用户名了");
if(user.getPassword().equals(rs.getString(2))){
System.out.println("匹配成功了");
x=1;
break;
}
}
}
}
catch (Exception e) {
e.printStackTrace();
}
if(x==1)
return true;
else
return false;
}

public boolean CommitLY(String name, String ly) {
try {
Connection conn = NewConn.GetConn();
String sql = "insert into ly values ('" + name + "' ,'" + ly + "');";
PreparedStatement ps;
ps = conn.prepareStatement(sql);
ps.executeUpdate();
System.out.println("留言成功");
return true;
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("留言失败");
return false;
}

public boolean ZcUser(Users u) {
try {
Connection conn = NewConn.GetConn();
String sql = "insert into USER (NAME, PASSWORD) values ('" + u.getName() + "' ,'" + u.getPassword() + "');";
PreparedStatement ps;
ps = conn.prepareStatement(sql);
ps.executeUpdate();
System.out.println("注册成功");
return true;
}
catch (Exception e) {
e.printStackTrace();
}
System.out.println("注册失败");
return false;
}
}

​ Model 层定义了 Users 类,把用户信息封装成 JavaBean

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
package Users;

public class Users {
private String UserName;
private String PassWord;

public String getName() {
return UserName;
}
public void setName(String name) {
UserName = name;
}
public String getPassword() {
return PassWord;
}
public void setPassword(String password) {
PassWord = password;
}
}
-------------本文结束感谢您的阅读-------------