本人的博客地址www.aogu181.top
本文章僅供參考,適合新手搭建JavaWeb,學習此文章來打打基礎還是可以的,如果有錯誤或者寫的不好的地方,請多多指教,
最后本專案只是提供一個框架和思路,對前端界面不做美化
目錄
開發工具與環境
工具包
功能說明
專案結構
操作步驟
1.創建資料庫
(一)創建資料庫
(二)創建資料表
(三)插入資料
2.創建JavaWeb界面
(一)登入界面
(二)主頁界面
(三)增加學生界面
(四)修改界面
(五)查詢界面
3.創建Java類實作功能
(一)創建物件類
(二)創建資料訪問層(Dao層)
(三)創建servlet
(四)配置過濾器
原始碼
開發工具與環境
1.IntelliJ IDEA 2021.2.2
2.MySQL 8.0.20
3.jdk 1.8.0_144
4.Tomcat
工具包
因為專案需要連接資料庫,所以需要一個連接資料庫的jar包
本專案用的是mysql8.0所以jar對應的就是8.0版本,如圖所示,需要的自取jar包,提取碼:miek
![]()
不同資料庫版本對應的jar包是不一樣的,具體jar包的下載地址:Jar包下載,怎么下載這里就不多介紹了
功能說明
1.登入功能
2.增
3.刪
4.改
5.查
專案結構
專案結構如圖所示:
編譯器的不同具體也不完全相同,但大致一樣就行
src下創建com.公司名. xxx 的形式
bean包下放需要操作的物件
dao包下面放對需要操作物件的操作,例如增刪改查
filter包下放過濾器,一般是放編碼過濾器和權限過濾器
servlet包下放servlet物件
private包下放需要權限的頁面
lib包下放需要匯入的庫(jar包)
web.xml是組態檔

操作步驟
1.創建資料庫
(一)創建資料庫
create database rg56;
(二)創建資料表
這里設定了 id 為主鍵且不為空,其他設定根據自己的需求更改
create table stuno(
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name CHAR(30),
password CHAR(30),
);
最終如下圖所示:

(三)插入資料
INSERT INTO stuno(id, name,password)
VALUES (1,'小方','123456');
結果如下圖所示,如需插入多個可自行選擇,
![]()
2.創建JavaWeb界面
完整專案放在最后,注意事項和解釋全放在代碼段里面了
(一)登入界面

代碼如下:
<%--
Created by IntelliJ IDEA.
User: HARD
Date: 2021/12/12
Time: 16:20
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登入界面</title>
</head>
<body>
<%--如果 condition() 函式回傳為true時才提交表單--%>
<form action="checkLogin.jsp" method="post" onsubmit="return condition()">
<%--這里的 name 和 id 可以隨便取名字,但最好和資料庫的欄位保持一致--%>
學號:<input type="text" name="id" id="id"><br>
密碼:<input type="password" name="password" id="password"><br>
<input type="submit" value="登入">
</form>
<script>
function condition() {
var id_1 = document.getElementById("id").value;//獲取id為id的值
var pwd_2 = document.getElementById("password").value;//獲取id為password的值;
if(id_1==""){
alert("學號不能為空!");
return false;
}
if(pwd_2==""){
alert("密碼不能為空!");
return false;
}
return true;
}
</script>
</body>
</html>
(二)主頁界面

代碼如下:
<%--
Created by IntelliJ IDEA.
User: HARD
Date: 2021/12/12
Time: 16:18
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.bean.Student" %>
<%@ page import="com.dao.StudentDao" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.Iterator" %>
<html>
<head>
<title>學生資訊</title>
</head>
<body>
<table border="2px" align="center" cellspacing="0">
<tr>
<td>學號</td>
<td>姓名</td>
<td>密碼</td>
<td width="200px"><a href="add.jsp">增加學生</a> <a href="searchStudent.jsp">查詢學生</a></td>
</tr>
<%
List<Student> list = StudentDao.getList();
Iterator<Student> iter = list.iterator();
while (iter.hasNext()) {
Student student = iter.next();
%>
<tr>
<td width="75px"><%=student.getId()%>
</td>
<td width="75px"><%=student.getName()%>
</td>
<td width="75px"><%=student.getPassword()%>
</td>
<td width="120px">
<%--將 id 引數傳過去 --%>
<a href="delete.jsp?id=<%=student.getId() %>">洗掉</a>
<%--
因為修改是要先 獲取學號 得到全部資訊
在修改所以傳了一個引數 ?id=<%=student.getId()%>
--%>
<a href="updateStudent.jsp?id=<%=student.getId()%>">修改</a>
</td>
</tr>
<tr>
</tr>
<%
}
%>
</table>
</body>
</html>
(三)增加學生界面

<%--
Created by IntelliJ IDEA.
User: HARD
Date: 2021/12/12
Time: 20:35
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>添加學生</title>
</head>
<body>
<form action="addCheck.jsp" method="post" onsubmit="return condition()">
學號:<input type="text" id="id" name="id"><br>
姓名:<input type="text" id="name" name="name"><br>
密碼:<input type="password" id="password" name="password"><br>
<input type="submit" value="提交">
<input type="reset" value="重置">
</form>
<script>
function condition() {
var id_1 = document.getElementById("id").value;//獲取id為id的值
var name_2 = document.getElementById("name").value;//獲取id為name的值
var pwd_3 = document.getElementById("password").value;//獲取id為password的值;
if(id_1==""){
alert("學號不能為空!");
return false;
}
if(name_2==""){
alert("姓名不能為空!");
return false;
}
if(pwd_3==""){
alert("密碼不能為空!");
return false;
}
return true;
}
</script>
</body>
</html>
(四)修改界面

代碼如下:
<%--
Created by IntelliJ IDEA.
User: HARD
Date: 2021/12/12
Time: 21:05
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.dao.StudentDao" %>
<%@ page import="com.bean.Student" %>
<html>
<head>
<title>修改學生資訊</title>
</head>
<body>
<%
int id = Integer.parseInt(request.getParameter("id"));//獲取學號
Student stu = StudentDao.getStudent(id);//根據學號獲取完整的物件
%>
<form action="updateCheck.jsp?id=<%=id%>" method="post">
學號: <input type="text" name="id" value="<%=stu.getId()%>"><br>
姓名: <input type="text" name="name" value="<%=stu.getName()%>"><br>
密碼: <input type="text" name="password" value="<%=stu.getPassword()%>"><br>
<input type="submit" value="修改">
<input type="reset" value="重置">
</form>
</body>
</html>
(五)查詢界面

代碼如下:
<%--
Created by IntelliJ IDEA.
User: HARD
Date: 2021/12/12
Time: 20:42
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page import="com.bean.Student" %>
<%@ page import="com.dao.StudentDao" %>
<html>
<head>
<title>檢查添加學生資訊</title>
</head>
<body>
<%
request.setCharacterEncoding("UTF-8");
//獲取來自 add.jsp 的表單
int id = Integer.parseInt(request.getParameter("id")) ;
String name = request.getParameter("name");
String password = request.getParameter("password");
//創建 student 物件
Student student = new Student();
student.setId(id);
student.setName(name);
student.setPassword(password);
StudentDao.add(student);
//添加完成就回傳查看頁面
response.sendRedirect("index.jsp");
%>
</body>
</html>
3.創建Java類實作功能
(一)創建物件類
代碼如下:
package com.bean;
public class Student {
private int id;
private String password;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
(二)創建資料訪問層(Dao層)
1.創建連接資料庫操作物件類,BaseDao.java
package com.dao;
import java.sql.*;
/*
* 連接資料庫
*
* */
public class BaseDao {
static{
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection conn = null;
try {
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/rg56?useUnicode=yes&characterEncoding=utf8", "root", "131488");
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void closeAll(ResultSet rs,PreparedStatement pStmt,Connection conn){
if(rs != null){
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(pStmt != null){
try {
pStmt.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
(二)創建操作物件類
package com.dao;
import com.bean.Student;
import java.sql.*;
import java.util.ArrayList;
import java.util.List;
/*
* 用來對學生進行操作
* */
public class StudentDao {
//獲取學生資訊串列
public static List<Student> getList() {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
List<Student> list = new ArrayList<>();
try {
conn = BaseDao.getConnection();
stmt = conn.prepareStatement("SELECT * FROM stuno");
rs = stmt.executeQuery();
while (rs.next()) {
Student stu = new Student();
stu.setId(rs.getInt(1));
stu.setName(rs.getString(2));
stu.setPassword(rs.getString(3));
list.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeAll(rs, stmt, conn);
}
return list;
}
//增加學生資訊
public static void add(Student stu) {
Connection con = null;
PreparedStatement pStmt = null;
ResultSet rs = null;
try {
con = BaseDao.getConnection();
pStmt = con.prepareStatement("insert into stuno(id,name,password) values(?,?,?)");
pStmt.setInt(1, stu.getId());
pStmt.setString(2, stu.getName());
pStmt.setString(3, stu.getPassword());
pStmt.executeUpdate();//更新資料
} catch (SQLException e) {
e.printStackTrace();
}
}
//根據學號洗掉學生資訊
public static void delete(int id) {
Connection con = null;
PreparedStatement pStmt = null;
try {
con = BaseDao.getConnection();
pStmt = con.prepareStatement("delete from stuno where id=?");
pStmt.setInt(1, id);
pStmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}
}
//獲取單個學生物件
public static Student getStudent(int id) {
Student s = new Student();
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = BaseDao.getConnection();
stmt = conn.prepareStatement("select * from stuno where id=?");
stmt.setInt(1, id);
rs = stmt.executeQuery();
if (rs.next()) {
s.setId(rs.getInt("id"));
s.setName(rs.getString("name"));
s.setPassword(rs.getString("password"));
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeAll(rs, stmt, conn);
}
return s;
}
//修改功能
public static void updateStudent(Student student) {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
try {
conn = BaseDao.getConnection();
String sql = "UPDATE stuno SET id=?,name=?,password=? where id=?";
stmt = conn.prepareStatement(sql);
stmt.setInt(1, student.getId());
stmt.setString(2, student.getName());
stmt.setString(3, student.getPassword());
stmt.setInt(4, student.getId());
stmt.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeAll(rs, stmt, conn);
}
}
//查詢功能,根據模糊查詢學號回傳所有學生資訊
public static List<Student> getStudentList(int id) {
Connection conn = null;
PreparedStatement stmt = null;
ResultSet rs = null;
List<Student> allStudent = new ArrayList<>();
try {
conn = BaseDao.getConnection();
stmt = conn.prepareStatement("select * from stuno where id like ?");
stmt.setString(1, "%" + id + "%");
rs = stmt.executeQuery();
while (rs.next()) {
Student stu = new Student();
stu.setId(rs.getInt(1));
stu.setName(rs.getString(2));
stu.setPassword(rs.getString(3));
allStudent.add(stu);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
BaseDao.closeAll(rs, stmt, conn);
}
return allStudent;
}
}
(三)創建servlet
我只把查找功能交給了servlet,可根據自己需求添加
package com.sevlet;
import com.dao.StudentDao;
import com.bean.Student;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebFilter;
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 java.io.PrintWriter;
import java.util.List;
/**
* /search 是注解也可以在 web.xml中配置servlet
*
*/
@WebServlet("/search")
public class SearchSevlet extends HttpServlet {
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("UTF-8");
resp.setContentType("text/html;charset=UTF-8");
PrintWriter out = resp.getWriter();
int id = Integer.parseInt(req.getParameter("id"));
List<Student> list = StudentDao.getStudentList(id);
req.setAttribute("list", list);
req.getRequestDispatcher("searchStudent.jsp").forward(req, resp);
super.doPost(req, resp);
}
}
(四)配置過濾器
1.配置字符碼過濾器
package com.filter;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
public class EncodingFilter implements Filter {
private static String encoding; // 定義變數接收初始化的值
public void destroy() {
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain) throws IOException, ServletException {
// 設定字符編碼鏈鎖
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
chain.doFilter(request, response);
}
// 初始化
public void init(FilterConfig config) throws ServletException {
// 接收web.xml組態檔中的初始引數
encoding = config.getInitParameter("CharsetEncoding");
}
}
創建完了還需要在web.xml中配置
<filter>
<filter-name>charsetEncodingFilter</filter-name>
<filter-class>com.filter.EncodingFilter</filter-class>
<init-param>
<param-name>CharsetEncoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>charsetEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
(2)創建權限過濾器
package com.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class PrivateFilter implements Filter {
private FilterConfig filterConfig;
@Override
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
HttpSession session = request.getSession();
//這里的 name 是登入成功后在登入成功界面加一個 session.setAttribute("name","xxx");
String name = (String) session.getAttribute("name");
if (name == null) {
if (request.getRequestURI().indexOf("../firstLogin.jsp") > -1) {
filterChain.doFilter(servletRequest, servletResponse);
} else {
response.sendRedirect("../firstLogin.jsp");
}
} else {
request.getRequestDispatcher("index.jsp").forward(request,response);
return;
}
}
@Override
public void destroy() {
}
}
同樣需要在web.xml中配置
<filter>
<filter-name>PrivateFilter</filter-name>
<filter-class>com.filter.PrivateFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>PrivateFilter</filter-name>
<!-- 需要過濾的路徑-->
<url-pattern>/private/*</url-pattern>
</filter-mapping>
原始碼
最后大致就大功完成了,感謝支持,喜歡了可以幫忙點個贊哦
最后附上我自己學習時做的班費管理系統班費管理系統
本篇文章的原始碼也附上鏈接:原始碼
提取碼:hx38
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/385578.html
標籤:其他
