## **2.創建utils包,包名為com.baishenghua100.utils**
在該包下創建以下類:
### **2.1 創建圖片驗證碼類**
>創建圖片驗證碼類,首先這個類是一個servlet。命名為:CheckCode100.java
參見圖片[驗證碼類](http://cms.yiniuedu.com/javawebstudy/2472193)

### **2.2創建數據庫連接工具類**
>創建數據庫連接工具類DBConnection.java
```
package com.baishenghua300.utils;
import java.sql.*;
public class DBConnection300 {
public static Connection getConn300() {
Connection conn = null;
try {
Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/wms200?user=root&password=123456&useUnicode=true&characterEncoding=UTF-8");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
public static void main(String[] args) {
getConn300();
}
public static void close(Connection con,Statement stmt, PreparedStatement pstmt,ResultSet rs){
try {
if(con != null){
con.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(stmt != null){
stmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(pstmt != null){
pstmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(rs != null){
rs.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
}
```
## **3.創建dao包,包名為:com.baishenghua100.dao**
在該包下創建以下類:
### **3.1創建導航菜單數據處理接口**
>創建IMenuDao100接口,里面定義增刪改查和一些復雜查詢方法
查詢所有菜單
根據條件查詢部分菜單
查詢指定的某個菜單
更新菜單
添加菜單
刪除菜單

```
package com.baishenghua100.dao;
import java.util.List;
import com.baishenghua100.pojo.Menu100;
/**
* IMenuDao100.java(導航菜單數據處理接口)
* @desc 主要定義一些方法:查詢所有導航菜單、條件查詢菜單、根據序號查詢導航菜單以及添加、修改和刪除菜單。
* @author 柏圣華
* @date 2021-10-21
*
*/
public interface IMenuDao100 {
public List<Menu100> queryAll100();//查詢所有導航菜單
public List<Menu100> queryByCond100(String condition100);//條件查詢導航菜單
public Menu100 query100(Menu100 menu100);//根據序號查詢導航菜單
public Menu100 add100(Menu100 menu100);//添加導航菜單
public Menu100 update100(Menu100 menu100);//修改導航菜單
public Menu100 delete100(Menu100 menu100);//刪除導航菜單
}
```
### **3.2創建公司信息數據處理接口**
>創建ICompanyInfomationDao300接口,里面定義增刪改查和一些復雜查詢方法主要定義一些方法
查詢所有公司信息
條件查詢公司信息
序號查詢公司信息
添加公司信息
修改公司信息
刪除公司信息。
```
package com.baishenghua300.dao;
import java.util.List;
import com.baishenghua300.pojo.CompanyInfomation300;
/**
* ICompanyInfomationDao300.java(公司信息數據處理接口)
* @desc 主要定義一些方法:查詢所有公司信息、條件查詢公司信息、序號查詢以及添加、修改和刪除公司信息。
* @author 柏圣華
* @date 2021-11-22
*
*/
public interface ICompanyInfomationDao300 {
public List<CompanyInfomation300> queryAll300();//查詢所有公司信息
public List<CompanyInfomation300> queryByCond300(String condition300);//條件查詢公司信息
public CompanyInfomation300 query300(CompanyInfomation300 ci300);//根據序號查詢公司信息
public int add300(CompanyInfomation300 ci300);//添加公司信息
public int update300(CompanyInfomation300 ci300);//修改公司信息
public int delete300(CompanyInfomation300 ci300);//刪除公司信息
}
```
### **3.3創建用戶信息數據處理接口**
>創建 IUserDao300接口,里面定義增刪改查和一些復雜查詢方法主要定義一些方法
```
package com.baishenghua300.dao;
import java.util.List;
import java.util.Map;
import com.baishenghua300.pojo.User300;
/**
* IUserDao300.java(用戶數據處理接口)
*
* @desc 主要定義一些方法:查詢所有、條件查詢、序號查詢以及添加、修改和刪除等方法。
* @author 柏圣華
* @date 2021-11-26
*
*/
public interface IUserDao300 {
public List<User300> findAll();// 查詢所有
User300 findUserByUsernameAndPassword(String username, String password);//用戶登錄驗證
void add(User300 user);//添加方法
void delete(int id);//刪除方法
User300 findById(int i);//根據序號查詢方法
void update(User300 user);//更新方法
/**
* 查詢總記錄數
*
* @return
* @param condition
*/
int findTotalCount(Map<String, String[]> condition);
/**
* 分頁查詢每頁記錄
*
* @param start
* @param rows
* @param condition
* @return
*/
List<User300> findByPage(int start, int rows, Map<String, String[]> condition);
}
```
## **4.創建dao的實現包impl,包名為:com.baishenghua100.dao.impl**
在該包下創建以下類:
### **4.1導航菜單數據處理具體實現類**
>創建IMenuDao100接口的實現類MenuDaoImpl100類,并實現接口里面的所有方法

```
package com.baishenghua300.dao.impl;
import java.util.ArrayList;
import java.util.List;
import java.sql.*;
import com.baishenghua300.dao.IMenuDao300;
import com.baishenghua300.pojo.Menu300;
import com.baishenghua300.utils.DBConnection300;
/**
* MenuDaoImpl300.java(導航菜單數據處理具體實現類)
* @desc 主要實現接口里面的增刪改查的方法(查詢所有導航菜單、條件查詢菜單、根據序號查詢菜單以及添加、修改和刪除菜單)。
* @author 柏圣華
* @date 2021-10-21
*
*/
public class MenuDaoImpl300 implements IMenuDao300 {
@Override
public List<Menu300> queryAll300() {//查詢所有導航菜單信息的方法
List<Menu300> menusList = new ArrayList<Menu300>();//創建導航菜單的集合對象
Connection con = DBConnection300.getConn300();//獲取數據庫連接
PreparedStatement pstmt = null;//聲明一個預處理變量
ResultSet rs = null;//聲明一個結果集變量
String sql = "select id,menuName,menuURl,menuNo from t_menu";//查詢所有菜單信息的sql語句
try {
pstmt = con.prepareStatement(sql);//給預處理變量賦值,同時把sql語句傳入預處理對象進行處理
rs = pstmt.executeQuery();//執行查詢操作,并且把查詢出來的所有結果保存到結果集rs里面
while (rs.next()) {//從結果集rs里面進行遍歷(迭代)出數據,
//從結果集中獲取數據,然后構造一個菜單對象
Menu300 menu = new Menu300(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4));
System.out.println(menu.toString());//打印輸出遍歷的菜單menu對象
menusList.add(menu);//將菜單menu對象加入到菜單的集合對象mensList
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, rs);
}
return menusList;
}
/**
* 2.根據條件查詢菜單信息
* @param condition300 (導航菜單的名稱menuName)
* @return 滿足條件的導航菜單集合menusList
*/
@Override
public List<Menu300> queryByCond300(String condition300) {
List<Menu300> menusList = new ArrayList<Menu300>();
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
ResultSet rs = null;
//采用的是模糊查詢like
String sql = "select id,menuName,menuURl,menuNo from t_menu where menuName like ?";
try {
pstmt = con.prepareStatement(sql);
//條件condition300就是導航菜單的名稱,獲取菜單的名稱關鍵字,傳給sql
pstmt.setString(1, "%"+condition300+"%");
rs = pstmt.executeQuery();//執行查詢方法
while (rs.next()) {
Menu300 menu = new Menu300(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4));
System.out.println(menu.toString());
menusList.add(menu);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, rs);
}
return menusList;
}
/**
* 3.精確查詢導航菜單信息的方法(根據id查詢)
* @param menu300(傳入參數,傳入一個菜單,菜單的id屬性要有值)
* @return 返回從數據庫表中查詢出來的菜單信息menu
*/
@Override
public Menu300 query300(Menu300 menu300) {
Menu300 menu = null;
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select id,menuName,menuURl,menuNo from t_menu where id = ?";//根據id查詢
try {
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, menu300.getId300());// 調用menu300的getId300()方法,獲取菜單的編號,傳給sql
rs = pstmt.executeQuery();// 執行查詢方法
while (rs.next()) {
menu = new Menu300(rs.getInt(1), rs.getString(2), rs.getString(3),rs.getString(4));
System.out.println(menu);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, rs);
}
return menu;
}
/**
* 4.添加導航菜單信息的方法
* @param menu300(傳入參數,傳入一個菜單對象)
* @return flag代表執行操作結果,0代表執行失敗,1代表執行成功。
*/
@Override
public int add300(Menu300 menu300) {
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
String sql = "INSERT INTO t_menu (menuName,menuURl,menuNo) VALUES (?,?,?)";
int flag = 0;//flag代表執行操作結果,0代表執行失敗,1代表執行成功。
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, menu300.getMenuName300());
pstmt.setString(2, menu300.getMenuURL300());
pstmt.setString(3, menu300.getMenuNo300());
flag = pstmt.executeUpdate();// 執行添加操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, null);
}
return flag;
}
/**
* 5.更新導航菜單信息的方法
* @param menu300(傳入參數,傳入一個菜單對象)
* @return flag代表執行操作結果,0代表執行失敗,1代表執行成功。
*/
@Override
public int update300(Menu300 menu300) {
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
String sql = "UPDATE t_menu SET menuName = ?, menuURl = ?, menuNo = ? where id= ?";
int flag = 0;//flag代表執行操作結果,0代表執行失敗,1代表執行成功。
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, menu300.getMenuName300());
pstmt.setString(2, menu300.getMenuURL300());
pstmt.setString(3, menu300.getMenuNo300());
pstmt.setInt(4, menu300.getId300());
flag = pstmt.executeUpdate();// 執行更新操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, null);
}
return flag;
}
/**
* 6.刪除導航菜單信息的方法
* @param menu300(傳入參數,傳入一個菜單對象)
* @return flag代表執行操作結果,0代表執行失敗,1代表執行成功。
*/
@Override
public int delete300(Menu300 menu300) {
int i = 0;
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
String sql = "DELETE FROM t_menu WHERE id = ?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, menu300.getId300());
i = pstmt.executeUpdate();// 執行刪除操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, null);
}
return i;
}
}
```
### **4.2公司信息數據處理具體實現類**
>創建ICompanyInfomationDao300 接口的實現類CompanyInfomationDaoImpl300 類,并實現接口里面的所有方法
```
package com.baishenghua300.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import com.baishenghua300.dao.ICompanyInfomationDao300;
import com.baishenghua300.pojo.CompanyInfomation300;
import com.baishenghua300.utils.DBConnection300;
/**
* CompanyInfomationDaoImpl300.java(公司信息數據處理具體實現類)
* @desc 主要實現接口里面的增刪改查的方法(查詢所有公司信息、條件查詢、根據序號查詢以及添加、修改和刪除菜單)。
* @author 柏圣華
* @date 2021-11-22
*
*/
public class CompanyInfomationDaoImpl300 implements ICompanyInfomationDao300 {
/**
* 1.添加公司信息的方法
* @param ci300(傳入參數,傳入一個公司信息對象)
* @return flag代表執行操作結果,0代表執行失敗,1代表執行成功。
*/
@Override
public int add300(CompanyInfomation300 ci300) {
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
String sql = "INSERT INTO t_companyinfo300 (ciTitle300,ciImage300,ciContent300,ciEditDate300,ciNo300) VALUES (?,?,?,?,?)";
int flag = 0;//flag代表執行操作結果,0代表執行失敗,1代表執行成功。
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, ci300.getCiTitle300());
pstmt.setString(2, ci300.getCiImage300());
pstmt.setString(3, ci300.getCiContent300());
pstmt.setString(4, ci300.getCiEditDate300());
pstmt.setInt(5, ci300.getCiNo300());
flag = pstmt.executeUpdate();// 執行添加操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, null);
}
return flag;
}
/**
* 2.查詢所有公司信息的方法
* @return ciList代表執行查詢后,獲得的所有操作結果的集合
*/
@Override
public List<CompanyInfomation300> queryAll300() {
// 查詢所有信息的方法
List<CompanyInfomation300> ciList = new ArrayList<CompanyInfomation300>();// 創建集合對象
Connection con = DBConnection300.getConn300();// 獲取數據庫連接
PreparedStatement pstmt = null;// 聲明一個預處理變量
ResultSet rs = null;// 聲明一個結果集變量
String sql = "select ciId300,ciTitle300,ciImage300,ciContent300,ciEditDate300,ciNo300 from t_companyinfo300";// 查詢所有的sql語句
try {
pstmt = con.prepareStatement(sql);// 給預處理變量賦值,同時把sql語句傳入預處理對象進行處理
rs = pstmt.executeQuery();// 執行查詢操作,并且把查詢出來的所有結果保存到結果集rs里面
while (rs.next()) {// 從結果集rs里面進行遍歷(迭代)出數據,
// 從結果集中獲取數據,然后構造一個菜單對象
CompanyInfomation300 ci300 = new CompanyInfomation300(rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getInt(6));
System.out.println(ci300);// 打印輸出遍歷
ciList.add(ci300);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, rs);
}
return ciList;
}
/**
* 3.根據標題進行模糊查詢公司信息的方法
* @param condition300(傳入參數,傳入一個公司信息的標題)
* @return ciList代表執行模糊查詢后,獲得的所有操作結果的集合
*/
@Override
public List<CompanyInfomation300> queryByCond300(String condition300) {
// 查詢滿足條件的所有信息的方法
List<CompanyInfomation300> ciList = new ArrayList<CompanyInfomation300>();// 創建集合對象
Connection con = DBConnection300.getConn300();// 獲取數據庫連接
PreparedStatement pstmt = null;// 聲明一個預處理變量
ResultSet rs = null;// 聲明一個結果集變量
String sql = "select ciId300,ciTitle300,ciImage300,ciContent300,ciEditDate300,ciNo300 from t_companyinfo300 where ciTitle300 like ?";// 查詢所有的sql語句
try {
pstmt = con.prepareStatement(sql);// 給預處理變量賦值,同時把sql語句傳入預處理對象進行處理
pstmt.setString(1, "%"+condition300+"%");
rs = pstmt.executeQuery();// 執行查詢操作,并且把查詢出來的所有結果保存到結果集rs里面
while (rs.next()) {// 從結果集rs里面進行遍歷(迭代)出數據,
// 從結果集中獲取數據,然后構造一個菜單對象
CompanyInfomation300 ci300 = new CompanyInfomation300(rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getInt(6));
System.out.println(ci300);// 打印輸出遍歷
ciList.add(ci300);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, rs);
}
return ciList;
}
/**
* 4.根據編號進行精準查詢公司信息的方法
* @param ci300(傳入參數,傳入一個公司信息)
* @return cif300代表執行精準查詢后,獲得的公司信息對象
*/
@Override
public CompanyInfomation300 query300(CompanyInfomation300 ci300) {
// 查詢所有信息的方法
CompanyInfomation300 cif300 = null;
Connection con = DBConnection300.getConn300();// 獲取數據庫連接
PreparedStatement pstmt = null;// 聲明一個預處理變量
ResultSet rs = null;// 聲明一個結果集變量
String sql = "select ciId300,ciTitle300,ciImage300,ciContent300,ciEditDate300,ciNo300 from t_companyinfo300 where ciId300 = ?";// 查詢所有的sql語句
try {
pstmt = con.prepareStatement(sql);// 給預處理變量賦值,同時把sql語句傳入預處理對象進行處理
pstmt.setInt(1, ci300.getCiId300());
rs = pstmt.executeQuery();// 執行查詢操作,并且把查詢出來的所有結果保存到結果集rs里面
while (rs.next()) {// 從結果集rs里面進行遍歷(迭代)出數據,
// 從結果集中獲取數據,然后構造一個菜單對象
cif300 = new CompanyInfomation300(rs.getInt(1), rs.getString(2), rs.getString(3),
rs.getString(4), rs.getString(5), rs.getInt(6));
System.out.println("ci300="+cif300);// 打印輸出遍歷
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, rs);
}
return cif300;
}
/**
* 5.根據編號更新公司信息的方法
* @param ci300(傳入參數,傳入一個公司信息)
* @return flag代表執行更新操作結果,0代表執行失敗,1代表執行成功。
*/
@Override
public int update300(CompanyInfomation300 ci300) {
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
String sql = "UPDATE t_companyinfo300 SET ciTitle300 = ?, ciImage300 = ?, ciContent300 = ? ,ciEditDate300 = ?,ciNo300=? where ciId300= ?";
int flag = 0;//flag代表執行操作結果,0代表執行失敗,1代表執行成功。
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, ci300.getCiTitle300());
pstmt.setString(2, ci300.getCiImage300());
pstmt.setString(3, ci300.getCiContent300());
pstmt.setString(4, ci300.getCiEditDate300());
pstmt.setInt(5,ci300.getCiNo300());
pstmt.setInt(6,ci300.getCiId300());
flag = pstmt.executeUpdate();// 執行更新操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, null);
}
return flag;
}
/**
* 6.根據編號刪除公司信息的方法
* @param ci300(傳入參數,傳入一個公司信息)
* @return flag代表執行刪除操作結果,0代表執行失敗,1代表執行成功。
*/
@Override
public int delete300(CompanyInfomation300 ci300) {
int i = 0;
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
String sql = "DELETE FROM t_companyinfo300 WHERE ciId300 = ?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, ci300.getCiId300());
i = pstmt.executeUpdate();// 執行刪除操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, null);
}
return i;
}
}
```
### **4.3用戶信息數據處理具體實現類**
>創建IUserDao300接口的實現類UserDaoImpl300類,并實現接口里面的所有方法
```
package com.baishenghua300.dao.impl;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import com.baishenghua300.dao.IUserDao300;
import com.baishenghua300.pojo.Menu300;
import com.baishenghua300.pojo.User300;
import com.baishenghua300.utils.DBConnection300;
/**
* UserDaoImpl300.java(用戶數據處理具體實現類)
* @desc 主要實現接口里面的增刪改查的方法(查詢所有、條件查詢、根據序號查詢以及添加、修改和刪除)。
* @author 柏圣華
* @date 2021-11-26
*
*/
public class UserDaoImpl300 implements IUserDao300 {
@Override
public List<User300> findAll() {// 查詢所有信息的方法
List<User300> uList = new ArrayList<User300>();// 創建集合對象
Connection con = DBConnection300.getConn300();// 獲取數據庫連接
PreparedStatement pstmt = null;// 聲明一個預處理變量
ResultSet rs = null;// 聲明一個結果集變量
String sql = "select * from user";// 查詢所有信息的sql語句
try {
pstmt = con.prepareStatement(sql);// 給預處理變量賦值,同時把sql語句傳入預處理對象進行處理
rs = pstmt.executeQuery();// 執行查詢操作,并且把查詢出來的所有結果保存到結果集rs里面
while (rs.next()) {// 從結果集rs里面進行遍歷(迭代)出數據,
// 從結果集中獲取數據,然后構造一個菜單對象
User300 menu = new User300(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getInt(4),
rs.getString(5),rs.getString(6),rs.getString(7),rs.getString(8),rs.getString(9));
System.out.println(menu.toString());// 打印輸出遍歷的對象
uList.add(menu);// 將對象加入到集合對象uList
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, rs);
}
return uList;
}
@Override
public User300 findUserByUsernameAndPassword(String username, String password) {//根據賬號和密碼進行查詢的方法
User300 u = null;
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select * from user where username = ? and password = ?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, username);
pstmt.setString(2, password);
rs = pstmt.executeQuery();// 執行查詢方法
while (rs.next()) {
u = new User300(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getString(5),
rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9));
System.out.println(u);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, rs);
}
return u;
}
@Override
public void add(User300 user) {//添加方法
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
String sql = "insert into user values(null,?,?,?,?,?,?,null,null)";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, user.getName300());
pstmt.setString(2, user.getGender300());
pstmt.setInt(3, user.getAge300());
pstmt.setString(4, user.getAddress300());
pstmt.setString(5, user.getQq300());
pstmt.setString(6, user.getEmail300());
pstmt.executeUpdate();// 執行添加操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, null);
}
}
@Override
public void delete(int id) {//刪除方法
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
String sql = "delete from user where id = ?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, id);
pstmt.executeUpdate();// 執行刪除操作
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, null);
}
}
@Override
public User300 findById(int id) {
// 根據id進行查詢的方法
User300 u = null;
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
ResultSet rs = null;
String sql = "select * from user where id = ?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setInt(1, id);
rs = pstmt.executeQuery();// 執行查詢方法
while (rs.next()) {
u = new User300(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getInt(4), rs.getString(5),
rs.getString(6), rs.getString(7), rs.getString(8), rs.getString(9));
System.out.println(u);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, rs);
}
return u;
}
@Override
public void update(User300 user) {
Connection con = DBConnection300.getConn300();
PreparedStatement pstmt = null;
String sql = "update user set name = ?,gender = ? ,age = ? , address = ? , qq = ?, email = ? where id = ?";
try {
pstmt = con.prepareStatement(sql);
pstmt.setString(1, user.getName300());
pstmt.setString(2, user.getGender300());
pstmt.setInt(3, user.getAge300());
pstmt.setString(4, user.getAddress300());
pstmt.setString(5, user.getQq300());
pstmt.setString(6, user.getEmail300());
pstmt.setInt(7, user.getId300());
System.out.println("update-user-"+user);
int flag = pstmt.executeUpdate();// 執行更新操作
System.out.println("update-user-flag"+flag);
} catch (SQLException e) {
e.printStackTrace();
} finally {
DBConnection300.close(con, null, pstmt, null);
}
}
@Override
public int findTotalCount(Map<String, String[]> condition) {
return 0;//先不實現
}
@Override
public List<User300> findByPage(int start, int rows, Map<String, String[]> condition) {
return null;//先不實現
}
}
```
## **5.創建controller包,包名為:com.baishenghua100.controller**
在該包下創建以下類:
### **5.1創建菜單信息控制類**
>創建MenuServlet100

```
package com.baishenghua300.controller;
import java.io.IOException;
import java.util.List;
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 com.baishenghua300.pojo.Menu300;
import com.baishenghua300.services.IMenuService300;
import com.baishenghua300.services.impl.MenuServiceImpl300;
/**
* MenuServlet300.java(導航菜單控制器類)
* @desc 主要控制導航菜單模型數據和視圖展示
* @author 柏圣華
* @date 2021-10-21
*
*/
@WebServlet("/MenuServlet300")
public class MenuServlet300 extends HttpServlet {
private static final long serialVersionUID = 1L;
IMenuService300 ims300 = new MenuServiceImpl300();
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String method = request.getParameter("method");
//method的取值有editMenu、deleteMenu、addMenu、updateMenu、queryAllMenu
Menu300 menu300 = new Menu300();
System.out.println("當前操作:"+method+" MenuServlet300"+"——執行");
if("addMenu".equalsIgnoreCase(method)) {//添加導航菜單信息操作
String menuNo300 = request.getParameter("menuNo300");//獲取AddMenu.jsp界面菜單序號的輸入框的值
String menuName300 = request.getParameter("menuName300");//獲取AddMenu.jsp界面菜單名稱的輸入框的值
String menuURL300 = request.getParameter("menuURL300");//獲取AddMenu.jsp界面菜單地址的輸入框的值
menu300.setMenuNo300(menuNo300);//給menu300的屬性MenuNo300設置值(menuNo300變量保存的值)
menu300.setMenuName300(menuName300);//給menu300的屬性MenuName300設置值(menuName300變量保存的值)
menu300.setMenuURL300(menuURL300);//給menu300的屬性MenuURL300設置值(menuURL300變量保存的值)
System.out.println("當前操作:"+method+" MenuServlet300"+"if分支addMenu"+menu300+"——執行");
//調用服務層接口實現類的添加方法,把AddMenu.jsp界面獲取的數據添加到數據庫表中
int flag = ims300.add300(menu300);
System.out.println("當前操作:"+method+" MenuServlet300"+"if分支addMenu"+menu300+"——執行ims300.add300()之后"+flag);
//添加完成數據之后,直接跳轉到查詢所有的界面,數據量少可以之跳轉,數據量多就要分頁
queryAll(request,response);
}else if("editMenu".equalsIgnoreCase(method)) {//編輯導航菜單信息操作
String id300 = request.getParameter("id300");//獲取main.jsp界面菜單編號的值
System.out.println("當前操作:"+method+" MenuServlet300"+"if分支editMenu"+id300+"——執行");
//Integer.parseInt(id300)使用Integer類的parseInt()方法,把id300字符串形式的值,轉化為int類型
menu300.setId300(Integer.parseInt(id300));
menu300 = ims300.query300(menu300);//根據點擊main.jsp頁面的編輯獲取菜單的編號,去數據庫表中查詢這個菜單信息
System.out.println("當前操作:"+method+" MenuServlet300"+"if分支editMenu"+menu300+"——執行ims300.query300()之后");
request.setAttribute("menu", menu300);//把數據庫表中的menu信息放到request的menu屬性里面
request.getRequestDispatcher("EditMenu.jsp").forward(request, response);// 轉發到EditMenu.jsp頁面上去
}else if("deleteMenu".equalsIgnoreCase(method)) {//刪除導航菜單信息操作
String id300 = request.getParameter("id300");//獲取main.jsp界面菜單編號的值
System.out.println("當前操作:"+method+" MenuServlet300"+"if分支deleteMenu"+id300+"——執行");
menu300.setId300(Integer.parseInt(id300));
int flag = ims300.delete300(menu300);//調用服務層接口實現類的刪除方法,刪除菜單menu300
System.out.println("當前操作:"+method+" MenuServlet300"+"if分支deleteMenu"+menu300+"——執行ims300.delete300()之后"+flag);
queryAll(request,response);
}else if("updateMenu".equalsIgnoreCase(method)) {//編輯導航菜單信息操作
String id300 = request.getParameter("id300");//獲取EditMenu.jsp界面菜單編號的值
System.out.println("當前操作:"+method+" MenuServlet300"+"if分支updateMenu"+id300+"——執行");
menu300.setId300(Integer.parseInt(id300));
String menuNo300 = request.getParameter("menuNo300");//獲取EditMenu.jsp界面菜單序號的輸入框的值
String menuName300 = request.getParameter("menuName300");//獲取EditMenu.jsp界面菜單名稱的輸入框的值
String menuURL300 = request.getParameter("menuURL300");//獲取EditMenu.jsp界面菜單地址的輸入框的值
menu300.setMenuNo300(menuNo300);//給menu300的屬性MenuNo300設置值(menuNo300變量保存的值)
menu300.setMenuName300(menuName300);//給menu300的屬性MenuName300設置值(menuName300變量保存的值)
menu300.setMenuURL300(menuURL300);//給menu300的屬性MenuURL300設置值(menuURL300變量保存的值)
System.out.println("當前操作:"+method+" MenuServlet300"+"if分支updateMenu"+menu300+"——執行");
int flag = ims300.update300(menu300);//調用服務層接口實現類的更新方法,更新菜單menu300
System.out.println("當前操作:"+method+" MenuServlet300"+"if分支deleteMenu"+menu300+"——執行ims300.updateMenu()之后"+flag);
queryAll(request,response);
}else if("queryAllMenu".equalsIgnoreCase(method)) {//查詢所有導航菜單信息操作
queryAll(request,response);
}else {//查詢所有導航菜單信息操作
queryAll(request,response);
}
}
/**
* 查詢所有導航菜單信息的方法
* @param request 請求
* @param response 響應
* @throws ServletException Servlet異常
* @throws IOException IO異常
*/
protected void queryAll(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Menu300> menusList = ims300.queryAll300();// 調用服務層接口實現類的查詢所有方法
request.setAttribute("menus", menusList);// 把查詢出來的導航菜單數據集合放到request里面
request.getRequestDispatcher("main.jsp").forward(request, response);// 轉發到main.jsp頁面上去
}
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
```
### **5.2創建公司信息訪問控制類**
>創建CompanyInfomationController300.java,代碼如下
```
package com.baishenghua300.controller;
import java.io.IOException;
import java.util.List;
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 com.baishenghua300.pojo.CompanyInfomation300;
import com.baishenghua300.pojo.Menu300;
import com.baishenghua300.services.ICompanyInfomationService300;
import com.baishenghua300.services.impl.CompanyInfomationServiceImpl300;
/**
* CompanyInfomationController300.java(公司信息控制器類)
* @desc 主要控制公司信息模型數據和視圖展示
* @author 柏圣華
* @date 2021-11-22
*
*/
@WebServlet("/companyInfoController300")
public class CompanyInfomationController300 extends HttpServlet {
private static final long serialVersionUID = 1L;
ICompanyInfomationService300 cis300 = new CompanyInfomationServiceImpl300();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getParameter("method");
//method的取值有editCompanyInfo、deleteCompanyInfo、addCompanyInfo、updateCompanyInfo、queryByCon
CompanyInfomation300 ci300 = new CompanyInfomation300();
System.out.println("當前操作的是CompanyInfomationController300,執行"+method+" "+"————");
if("addCompanyInfo".equalsIgnoreCase(method)) {//添加導航菜單信息操作
System.out.println("當前操作的是CompanyInfomationController300,執行"+method+"if"+"———— ");
ci300.setCiNo300(Integer.parseInt(request.getParameter("ciNo300")));
ci300.setCiTitle300(request.getParameter("ciTitle300"));
ci300.setCiImage300(request.getParameter("ciImage300"));
ci300.setCiContent300(request.getParameter("ciContent300"));
ci300.setCiEditDate300(request.getParameter("ciEditDate300"));
System.out.println("當前操作的是CompanyInfomationController300,執行"+method+"if"+" ci300 "+ci300);
int flag = cis300.add300(ci300);
System.out.println("當前操作的是CompanyInfomationController300,執行"+method+"if"+" ci300 "
+ci300+"——執行cis300.add300方法之后 flag="+flag);
queryAll(request,response);//查詢所有
}else if("editCompanyInfo".equalsIgnoreCase(method)){
String ciId300 = request.getParameter("ciId300");
System.out.println("當前操作的是CompanyInfomationController300,執行"+method+"if"+"—ciId300="+ciId300);
ci300.setCiId300(Integer.parseInt(ciId300));
ci300 = cis300.query300(ci300);
System.out.println("當前操作的是CompanyInfomationController300,執行"+method+"if query300()方法"+"—ci300="+ci300);
request.setAttribute("ci300", ci300);
request.getRequestDispatcher("/WEB-INF/companyinfomanager/EditCompanyInfo300.jsp").forward(request, response);// 轉發到EditMenu.jsp頁面上去
}else if("updateCompanyInfo".equalsIgnoreCase(method)){
String ciId300 = request.getParameter("ciId300");
ci300.setCiId300(Integer.parseInt(ciId300));
ci300.setCiNo300(Integer.parseInt(request.getParameter("ciNo300")));
ci300.setCiTitle300(request.getParameter("ciTitle300"));
ci300.setCiImage300(request.getParameter("ciImage300"));
ci300.setCiContent300(request.getParameter("ciContent300"));
ci300.setCiEditDate300(request.getParameter("ciEditDate300"));
System.out.println("當前操作的是CompanyInfomationController300,執行"+method+"if"+" ci300 "+ci300);
int flag = cis300.update300(ci300);
System.out.println("當前操作的是CompanyInfomationController300,執行"+method+"if"+" ci300 "
+ci300+"——執行cis300.update300方法之后 flag="+flag);
queryAll(request,response);//查詢所有
}else if("deleteCompanyInfo".equalsIgnoreCase(method)){
String ciId300 = request.getParameter("ciId300");
ci300.setCiId300(Integer.parseInt(ciId300));
System.out.println("當前操作的是CompanyInfomationController300,執行"+method+"if"+"—ciId300="+ciId300);
int flag = cis300.delete300(ci300);
System.out.println("當前操作的是CompanyInfomationController300,執行"+method+"if"+" ci300 "
+ci300+"——執行cis300.delete300方法之后 flag="+flag);
queryAll(request,response);//查詢所有
}else if("queryByCon".equalsIgnoreCase(method)){
}else {
queryAll(request,response);//查詢所有
}
}
protected void queryAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<CompanyInfomation300> ciList = cis300.queryAll300();// 調用服務層接口實現類的查詢所有方法
request.getSession().setAttribute("ciList", ciList);// 把查詢出來的導航菜單數據集合放到request里面
request.getRequestDispatcher("/WEB-INF/companyinfomanager/CompanyInfoMain300.jsp").forward(request, response);// 轉發到main.jsp頁面上去
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
```
### **5.3創建前端界面信息訪問控制類**
>創建IndexServlet,代碼如下
```
package com.baishenghua300.controller;
import java.io.IOException;
import java.util.List;
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 com.baishenghua300.dao.IMenuDao300;
import com.baishenghua300.dao.impl.MenuDaoImpl300;
import com.baishenghua300.pojo.CompanyInfomation300;
import com.baishenghua300.pojo.Menu300;
import com.baishenghua300.services.ICompanyInfomationService300;
import com.baishenghua300.services.IMenuService300;
import com.baishenghua300.services.impl.CompanyInfomationServiceImpl300;
import com.baishenghua300.services.impl.MenuServiceImpl300;
@WebServlet("/IndexServlet")
public class IndexServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
IMenuService300 ims300 = new MenuServiceImpl300();
ICompanyInfomationService300 cis300 = new CompanyInfomationServiceImpl300();
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
queryAll(request,response);//用于查詢所有導航菜單信息
//查詢合作伙伴
//查詢XXXX
//查詢XXXX
//作業
//添加過程描述,頁面數據->數據庫表中的
//MenuManager文件
//1.在添加頁面上Addmenu300.jsp,輸入要添加到數據庫的數據
//2.看頁面AddMenu300.jsp的form里面action的值(MenuServlet300),這個數據下一步要去的地方
//3.把頁面上的數據傳輸給Servlet類MenuServlet300,然后具體做什么操作,由action當中method值來決定。
//4.當前action="MenuServlet300?method=addMenu",method值是addMenu,也就添加
//5.就要執行添加if語句,把頁面上的你填充的數據都獲取過來,然后構造菜單對象
//6.聲明服務層接口類型(IMenuService300)引用ims300,創建對應的服務層接口實現類(MenuServiceImpl300)的實例
//通過引用ims300調用添加方法(ims300.add300(menu300)),返回是否添加成功
//6.1創建對應的服務層接口實現類(MenuServiceImpl300)的實例,聲明dao接口類型IMenuDao300 引用imd300,
//創建對應的dao接口實現類= new MenuDaoImpl300()的實例,
//6.2調用dao接口實現類(MenuServiceImpl300)添加方法,返回是否添加成功
//7.執行完添加之后,會調用查詢所有菜單信息的方法,返回到查詢界面。
//查詢過程描述,請求 ,數據庫表中的數據->頁面
//1.發送查詢所有數據的請求MenuServlet300,或者method=queryAllMenu
//2.聲明服務層接口類型(IMenuService300)引用ims300,創建對應的服務層接口實現類(MenuServiceImpl300)的實例
//通過引用ims300調用查詢方法(ims300.queryAll300(menu300)),返回是導航菜單信息集合(List<Menu300>)
//2.1創建對應的服務層接口實現類(MenuServiceImpl300)的實例,聲明dao接口類型IMenuDao300 引用imd300,
//創建對應的dao接口實現類= new MenuDaoImpl300()的實例,
//2.2調用dao接口實現類(MenuServiceImpl300)查詢所有方法,返回是導航菜單信息集合(List<Menu300>)
//3.把查詢出來的導航菜單數據集合放到request里面(request.setAttribute("menus", menusList);)
//4.把請求轉發到MenuMain300.jsp頁面上去(request.getRequestDispatcher("/WEB-INF/MenuManager/MenuMain300.jsp").forward(request, response);)
//5.在MenuMain300.jsp頁面引入核心標簽庫,然后通過forEach循環迭代出數據顯示在頁面上。
//經過哪些頁面,經過了哪些類,順序是什么,大家描述一下,文字描述,
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
/**
* 查詢所有信息的方法
* @param request 請求
* @param response 響應
* @throws ServletException Servlet異常
* @throws IOException IO異常
*/
protected void queryAll(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
List<Menu300> menusList = ims300.queryAll300();// 調用服務層接口實現類的查詢所有方法
request.getSession().setAttribute("menus", menusList);// 把查詢出來的導航菜單數據集合放到session里面
//request.setAttribute("menus", menusList);// 把查詢出來的導航菜單數據集合放到request里面
List<CompanyInfomation300> ciList = cis300.queryAll300();// 調用服務層接口實現類的查詢所有方法
request.getSession().setAttribute("ciList", ciList);// 把查詢出來的導航菜單數據集合放到request里面
request.getRequestDispatcher("index.jsp").forward(request, response);// 轉發到index.jsp頁面上去
}
}
```
### **5.4創建用戶登錄驗證訪問控制類**
>創建LoginServlet300,代碼如下
```
package com.baishenghua300.controller;
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 javax.servlet.http.HttpSession;
import com.baishenghua300.pojo.User300;
import com.baishenghua300.services.IUserService300;
import com.baishenghua300.services.impl.UserServiceImpl300;
@WebServlet("/LoginServlet300")
public class LoginServlet300 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 2.獲取數據
// 2.1獲取用戶填寫驗證碼
String verifycode = request.getParameter("verifycode");
String username = request.getParameter("username");
String password = request.getParameter("password");
// 3.驗證碼校驗
HttpSession session = request.getSession();
String checkcode_server = (String) session.getAttribute("CHECKCODE_SERVER");
session.removeAttribute("CHECKCODE_SERVER");// 確保驗證碼一次性
System.out.println("checkcode_server-"+checkcode_server+"username"+username+"password"+password+"verifycode"+verifycode);
if (!checkcode_server.equalsIgnoreCase(verifycode)) {
// 驗證碼不正確
// 提示信息
request.setAttribute("login_msg", "驗證碼錯誤!");
// 跳轉登錄頁面
request.getRequestDispatcher("/Manager/Login.jsp").forward(request, response);
return;
}
// 4.封裝User對象
User300 user = new User300();
user.setUsername300(username);
user.setPassword300(password);
// 5.調用Service查詢
IUserService300 ius300 = new UserServiceImpl300();
User300 loginUser = ius300.findUserByUsernameAndPassword(username, password);
// 6.判斷是否登錄成功
if (loginUser != null) {
// 登錄成功
// 將用戶存入session
session.setAttribute("user", loginUser);
// 跳轉頁面
response.sendRedirect(request.getContextPath() + "/Manager/index300.jsp");//管理后臺主界面
} else {
// 登錄失敗
// 提示信息
request.setAttribute("login_msg", "用戶名或密碼錯誤!");
// 跳轉登錄頁面
request.getRequestDispatcher("/Manager/Login.jsp").forward(request, response);
}
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
```
### **5.4創建用戶信息管理控制類**
>創建UserServlet300,代碼如下
```
package com.baishenghua300.controller;
import java.io.IOException;
import java.util.List;
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 com.baishenghua300.pojo.User300;
import com.baishenghua300.services.IUserService300;
import com.baishenghua300.services.impl.UserServiceImpl300;
@WebServlet("/UserServlet300")
public class UserServlet300 extends HttpServlet {
private static final long serialVersionUID = 1L;
IUserService300 ius300 = new UserServiceImpl300();
public UserServlet300() {
super();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getParameter("method");
//method的取值有editUser、deleteUser、addUser、updateUser、queryAllUser
User300 user300 = new User300();
//跳轉到添加頁面addPage
if("addUser".equalsIgnoreCase(method)) {
user300.setName300(request.getParameter("name"));
user300.setGender300(request.getParameter("gender"));
user300.setAge300(Integer.parseInt(request.getParameter("age")));
user300.setAddress300(request.getParameter("address"));
user300.setQq300(request.getParameter("qq"));
user300.setEmail300(request.getParameter("email"));
ius300.add(user300);
queryAll(request,response);
}else if("queryAllUser".equalsIgnoreCase(method)) {
queryAll(request,response);
}else if("editUser".equalsIgnoreCase(method)) {
String id = request.getParameter("id");
user300 = ius300.findById(Integer.parseInt(id));
request.setAttribute("user", user300);
request.getRequestDispatcher("/WEB-INF/UserManager/EditUser300.jsp").forward(request, response);
}else if("updateUser".equalsIgnoreCase(method)) {
String id = request.getParameter("id");
user300.setId300(Integer.parseInt(id));
user300.setName300(request.getParameter("name"));
user300.setGender300(request.getParameter("gender"));
user300.setAge300(Integer.parseInt(request.getParameter("age")));
user300.setAddress300(request.getParameter("address"));
user300.setQq300(request.getParameter("qq"));
user300.setEmail300(request.getParameter("email"));
ius300.update(user300);
queryAll(request,response);
}else if("deleteUser".equalsIgnoreCase(method)) {
String id = request.getParameter("id");
ius300.delete(Integer.parseInt(id));
queryAll(request,response);
}else if("addPage".equalsIgnoreCase(method)) {
request.getRequestDispatcher("/WEB-INF/UserManager/AddUser300.jsp").forward(request, response);
}else {
queryAll(request,response);
}
}
protected void queryAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
List<User300> uList = ius300.findAll();
request.getSession().setAttribute("uList", uList);
request.getRequestDispatcher("/WEB-INF/UserManager/UserMain300.jsp").forward(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}
```
## **6.創建services包,包名為:com.baishenghua100.services**
### **6.1創建導航菜單服務層數據處理接口**
>創建IMenuService100接口.java

```
package com.baishenghua100.services;
import java.util.List;
import com.baishenghua100.pojo.Menu100;
/**
* IMenuService100.java(導航菜單數據處理服務接口)
* @desc 主要定義一些方法,比如說,查詢所有導航菜單、條件查詢菜單以及添加、修改和刪除菜單。
* @author 柏圣華
* @date 2021-10-21
*
*/
public interface IMenuService100 {
public List<Menu100> queryAll100();//查詢所有導航菜單
public List<Menu100> queryByCond100(String condition100);//條件查詢導航菜單
public Menu100 query100(Menu100 menu100);//根據序號查詢導航菜單
public Menu100 add100(Menu100 menu100);//添加導航菜單
public Menu100 update100(Menu100 menu100);//修改導航菜單
public Menu100 delete100(Menu100 menu100);//刪除導航菜單
}
```
### **6.2創建公司信息服務層數據處理接口**
>創建ICompanyInfomationService300.java
```
package com.baishenghua300.services;
import java.util.List;
import com.baishenghua300.pojo.CompanyInfomation300;
/**
* ICompanyInfomationService300.java(公司信息數據處理服務接口)
* @desc 主要定義一些方法:查詢所有公司擬信息、條件查詢、序號查詢以及添加、修改和刪除操作。
* @author 柏圣華
* @date 2021-11-22
*
*/
public interface ICompanyInfomationService300 {
public List<CompanyInfomation300> queryAll300();//查詢所有公司信息
public List<CompanyInfomation300> queryByCond300(String condition300);//條件查詢公司信息
public CompanyInfomation300 query300(CompanyInfomation300 ci300);//根據序號查詢公司信息
public int add300(CompanyInfomation300 ci300);//添加公司信息
public int update300(CompanyInfomation300 ci300);//修改公司信息
public int delete300(CompanyInfomation300 ci300);//刪除公司信息
}
```
### **6.3創建用戶信息服務層數據處理接口**
>創建IUserService300.java
```
package com.baishenghua300.services;
import java.util.List;
import java.util.Map;
import com.baishenghua300.pojo.User300;
/**
* IUserService300.java(用戶數據處理服務層接口)
*
* @desc 主要定義一些方法:查詢所有、條件查詢、序號查詢以及添加、修改和刪除等方法。
* @author 柏圣華
* @date 2021-11-26
*
*/
public interface IUserService300 {
public List<User300> findAll();// 查詢所有
User300 findUserByUsernameAndPassword(String username, String password);//用戶登錄驗證
void add(User300 user);//添加方法
void delete(int id);//刪除方法
User300 findById(int i);//根據序號查詢方法
void update(User300 user);//更新方法
/**
* 查詢總記錄數
*
* @return
* @param condition
*/
int findTotalCount(Map<String, String[]> condition);
/**
* 分頁查詢每頁記錄
*
* @param start
* @param rows
* @param condition
* @return
*/
List<User300> findByPage(int start, int rows, Map<String, String[]> condition);
}
```
## **7.創建services包的實現包impl,包名為:com.baishenghua100.services.impl**
在該包下創建如下類
### **7.1創建導航菜單服務層數據處理接口的實現類**
>創建MenuServiceImpl100實現IMenuService100接口里面的方法

```
package com.baishenghua100.services.impl;
import java.util.List;
import com.baishenghua100.pojo.Menu100;
import com.baishenghua100.services.IMenuService100;
/**
* MenuServiceImpl100.java(導航菜單數據處理服務具體實現類)
* @desc 主要調用IMenDao100接口里面的方法,具體調用IMenDao100接口實現類MenuDaoImpl100類里面的方法
* @author 柏圣華
* @date 2021-10-21
*
*/
public class MenuServiceImpl100 implements IMenuService100 {
IMenuDao100 iMenuDao100 = new MenuDaoImpl100();
@Override
public List<Menu100> queryAll100() {
return iMenuDao100.queryAll100();
}
@Override
public List<Menu100> queryByCond100(String condition100) {
return iMenuDao100.queryByCond100(condition100);
}
@Override
public Menu100 query100(Menu100 menu100) {
return iMenuDao100.query100(menu100);
}
@Override
public Menu100 add100(Menu100 menu100) {
return iMenuDao100.add100(menu100);
}
@Override
public Menu100 update100(Menu100 menu100) {
return iMenuDao100.update100(menu100);
}
@Override
public Menu100 delete100(Menu100 menu100) {
return iMenuDao100.delete100(menu100);
}
}
```
### **7.2創建公司信息服務層數據處理接口的實現類**
>創建CompanyInfomationServiceImpl300實現ICompanyInfomationDao300接口里面的方法
```
package com.baishenghua300.services.impl;
import java.util.List;
import com.baishenghua300.dao.ICompanyInfomationDao300;
import com.baishenghua300.dao.impl.CompanyInfomationDaoImpl300;
import com.baishenghua300.pojo.CompanyInfomation300;
import com.baishenghua300.services.ICompanyInfomationService300;
/**
* CompanyInfomationServiceImpl300.java(公司信息數據處理服務具體實現類)
* @desc 主要調用ICompanyInfomationDao300接口里面的方法
* 具體調用ICompanyInfomationDao300接口實現類CompanyInfomationDaoImpl300類里面的方法
* @author 柏圣華
* @date 2021-11-22
*
*/
public class CompanyInfomationServiceImpl300 implements ICompanyInfomationService300 {
ICompanyInfomationDao300 cid300 = new CompanyInfomationDaoImpl300();
@Override
public List<CompanyInfomation300> queryAll300() {
return cid300.queryAll300();
}
@Override
public List<CompanyInfomation300> queryByCond300(String condition300) {
return cid300.queryByCond300(condition300);
}
@Override
public CompanyInfomation300 query300(CompanyInfomation300 ci300) {
return cid300.query300(ci300);
}
@Override
public int add300(CompanyInfomation300 ci300) {
return cid300.add300(ci300);
}
@Override
public int update300(CompanyInfomation300 ci300) {
return cid300.update300(ci300);
}
@Override
public int delete300(CompanyInfomation300 ci300) {
return cid300.delete300(ci300);
}
}
```
### **7.3創建用戶信息服務層數據處理接口的實現類**
>創建UserServiceImpl300實現IUserDao300接口里面的方法
```
package com.baishenghua300.services.impl;
import java.util.List;
import java.util.Map;
import com.baishenghua300.dao.IUserDao300;
import com.baishenghua300.dao.impl.UserDaoImpl300;
import com.baishenghua300.pojo.User300;
import com.baishenghua300.services.IUserService300;
/**
* UserServiceImpl300.java(導航菜單數據處理服務具體實現類)
* @desc 主要調用IUserDao300接口里面的方法,具體調用IUserDao300接口實現類UserDaoImpl300類里面的方法
* @author 柏圣華
* @date 2021-1-26
*
*/
public class UserServiceImpl300 implements IUserService300 {
IUserDao300 iud300 = new UserDaoImpl300();
@Override
public List<User300> findAll() {
return iud300.findAll();
}
@Override
public User300 findUserByUsernameAndPassword(String username, String password) {
return iud300.findUserByUsernameAndPassword(username, password);
}
@Override
public void add(User300 user) {
iud300.add(user);
}
@Override
public void delete(int id) {
iud300.delete(id);
}
@Override
public User300 findById(int i) {
return iud300.findById(i);
}
@Override
public void update(User300 user) {
iud300.update(user);
}
@Override
public int findTotalCount(Map<String, String[]> condition) {
return iud300.findTotalCount(condition);
}
@Override
public List<User300> findByPage(int start, int rows, Map<String, String[]> condition) {
return iud300.findByPage(start, rows, condition);
}
}
```
## **8.創建測試包test,包名為:com.baishenghua100.test**
在該包下創建以下類
### **8.1創建菜單服務層實現類的測試類MenuServiceImplTest100.java**
>創建MenuServiceImpl100的測試類MenuServiceImplTest100
創建一個JUnit Test case,名字為MenuServiceImplTest100
在class under test下選擇MenuServiceImpl100這個類,然后選擇要測試哪些方法

```
package com.baishenghua100.test;
import static org.junit.jupiter.api.Assertions.*;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
/**
* MenuServiceImplTest100.java(導航菜單數據處理服務具體實現類的測試類)
* @desc 主要測試實現類MenuServiceImpl100類里面的方法,有沒有實現
* @author 柏圣華
* @date 2021-10-21
*
*/
class MenuServiceImplTest100 {
@BeforeEach
void setUp() throws Exception {
}
@AfterEach
void tearDown() throws Exception {
}
@Test
void testQueryAll100() {
fail("Not yet implemented");
}
@Test
void testQueryByCond100() {
fail("Not yet implemented");
}
@Test
void testQuery100() {
fail("Not yet implemented");
}
@Test
void testAdd100() {
fail("Not yet implemented");
}
@Test
void testUpdate100() {
fail("Not yet implemented");
}
@Test
void testDelete100() {
fail("Not yet implemented");
}
}
```
### **8.2創建公司信息服務層實現類的測試類CompanyInfomationServiceImplTest300.java**
>創建CompanyInfomationServiceImpl300的測試類CompanyInfomationServiceImplTest300
創建一個JUnit Test case,名字為CompanyInfomationServiceImplTest300
在class under test下選擇CompanyInfomationServiceImpl300這個類,然后選擇要測試哪些方法

代碼如下:
```
package com.baishenghua300.test;
import static org.junit.jupiter.api.Assertions.*;
import java.util.List;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import com.baishenghua300.pojo.CompanyInfomation300;
import com.baishenghua300.services.ICompanyInfomationService300;
import com.baishenghua300.services.impl.CompanyInfomationServiceImpl300;
import junit.framework.Assert;
/**
* CompanyInfomationServiceImplTest300.java(公司信息數據處理服務具體實現類的測試類)
* @desc 主要測試實現類CompanyInfomationServiceImpl300類里面的方法,有沒有實現
* @author 柏圣華
* @date 2021-11-22
*
*/
class CompanyInfomationServiceImplTest300 {
ICompanyInfomationService300 cis300 = new CompanyInfomationServiceImpl300();
CompanyInfomation300 ci300 = new CompanyInfomation300();
@Test
void testAdd300() {//測試添加方法
ci300.setCiNo300(6);
ci300.setCiTitle300("公司簡介");
ci300.setCiContent300("華圣物流信息科技有限公司是一家專業從事安防監控、IT服務的一站式服務系統集成企業。致力于數字化、網絡化弱電系統解決方案,自成立以來秉承“以人為本,以德治企,以身作則,以信立業”的經營理念,堅持“領先科技,致力服務”的服務原則,形成了“獨具匠心,特色創新”的先航騰飛商業模式。\r\n" +
"\r\n" +
"公司致力于數字化監控系統;防盜報警系統工程;網絡工程,智能一卡通;視頻會議;智能化大廈;智能化小區;公共廣播;背景音樂系統 工程;停車場;可視門禁對講工程;網絡;語音系統綜合布線工程;機房工程的整體建設和運維為目標,為客戶提供包括系統集成和運維外包 在內的整體服務方案,堅持數字化、智能化的方向持續發展。\r\n" +
"");
ci300.setCiImage300("images/pic8.png");
ci300.setCiEditDate300("2021-11-22");
int flag = cis300.add300(ci300);
Assert.assertEquals(1, flag);
}
@Test
void testQueryAll300() {//測試查詢所有的方法
List<CompanyInfomation300> ciList = cis300.queryAll300();
Assert.assertEquals(5, ciList.size());//第一個參數數字5,代表數據庫有5條數據。第二個參數ciList.size()代表執行查詢所有方法返回的數據庫數據條數
}
@Test
void testQueryByCond300() { //測試模糊查詢所有的方法
List<CompanyInfomation300> ciList = cis300.queryByCond300("合");
Assert.assertEquals(1, ciList.size());//第一個參數數字5,代表數據庫有5條數據。第二個參數ciList.size()代表執行查詢所有方法返回的數據庫數據條數
}
@Test
void testQuery300() { //測試精準查詢的方法
ci300.setCiId300(5);
CompanyInfomation300 cif300 = cis300.query300(ci300);
Assert.assertEquals("合作伙伴", cif300.getCiTitle300());
}
@Test
void testUpdate300() {//測試更新的方法
ci300.setCiId300(6);
ci300.setCiTitle300("7");
ci300.setCiImage300("7");
ci300.setCiContent300("7");
ci300.setCiEditDate300("7");
ci300.setCiNo300(7);
int flag = cis300.update300(ci300);
Assert.assertEquals(1, flag);
}
@Test
void testDelete300() {
ci300.setCiId300(6);
int flag = cis300.delete300(ci300);
Assert.assertEquals(1, flag);
}
}
```
### **8.2創建用戶信息服務層實現類的測試類UserServiceImplTest300.java**
>創建UserServiceImpl300的測試類UserServiceImplTest300
創建一個JUnit Test case,名字為UserServiceImplTest300
在class under test下選擇UserServiceImpl300這個類,然后選擇要測試哪些方法
```
package com.baishenghua300.test;
import static org.junit.jupiter.api.Assertions.*;
import java.util.List;
import org.junit.jupiter.api.Test;
import com.baishenghua300.pojo.User300;
import com.baishenghua300.services.IUserService300;
import com.baishenghua300.services.impl.UserServiceImpl300;
import junit.framework.Assert;
class UserServiceImplTest300 {
IUserService300 ius300 = new UserServiceImpl300();
User300 user = new User300();
@Test
void testFindAll() {
List<User300> uList = ius300.findAll();
Assert.assertEquals(2, uList.size());
}
@Test
void testFindUserByUsernameAndPassword() {
user = ius300.findUserByUsernameAndPassword("admin", "admin");
Assert.assertEquals("admin", user.getName300());
}
@Test
void testAdd() {
user.setName300("21");
user.setGender300("21");
user.setAge300(21);
user.setQq300("21212121");
user.setAddress300("2121");
user.setEmail300("2121@12.com");
ius300.add(user);
}
@Test
void testDelete() {
ius300.delete(2);
}
@Test
void testFindById() {
user = ius300.findById(1);
Assert.assertEquals("admin", user.getName300());
}
@Test
void testUpdate() {
user.setName300("3");
user.setGender300("boy");
user.setAge300(3);
user.setQq300("33333333");
user.setAddress300("3333");
user.setEmail300("33333@333.com");
user.setId300(2);
ius300.update(user);
}
@Test
void testFindTotalCount() {
//先不實現
}
@Test
void testFindByPage() {
//先不實現
}
}
```
## **9.創建過濾器包filter,包名為:com.baishenghua100.filter**
在該包下創建以下類
### **9.1創建字符編碼過濾器類CharacterEncodingFilter100.java**
>創建字符編碼過濾器類CharacterEncodingFilter100類
注意此處要創建一個Filter

```
package com.baishenghua300.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;
import javax.servlet.annotation.WebFilter;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* CharacterEncodingFilter300.java(字符編碼過濾器類)
* @desc 主要統一字符編碼
* @author 柏圣華
* @date 2021-10-21
*
*/
@WebFilter(urlPatterns="/*",initParams= {@WebInitParam(name="CharsetEncoding",value="utf-8")})
public class CharacterEncodingFilter300 implements Filter {
private static String encoding;//定義變量接收初始化的值
/**
* Default constructor.
*/
public CharacterEncodingFilter300() {
}
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest)req;
HttpServletResponse response = (HttpServletResponse)res;
//設置字符編碼鏈鎖
request.setCharacterEncoding(encoding);
response.setCharacterEncoding(encoding);
if(encoding != null) {
chain.doFilter(request, response);
}
}
public void init(FilterConfig fConfig) throws ServletException {
//接收web.xml配置文件中或者注解中的初始參數
encoding = fConfig.getInitParameter("CharsetEncoding");
}
}
```
### **9.2創建用戶登錄驗證過濾器類LoginFilte300.java**
>創建用戶登錄驗證過濾器類LoginFilte300類
注意此處要創建一個Filter
```
package com.baishenghua300.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;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
@WebFilter("/*")
public class LoginFilte300 implements Filter {
public void destroy() {
}
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain)
throws IOException, ServletException {
System.out.println(req);
// 0.強制轉換
HttpServletRequest request = (HttpServletRequest) req;
// 1.獲取資源請求路徑
String uri = request.getRequestURI();
// 2.判斷是否包含登錄相關資源路徑,要注意排除掉 css/js/圖片/驗證碼等資源
if (uri.contains("/login.jsp")
|| uri.contains("/LoginServlet300")
|| uri.contains("/css/")
|| uri.contains("/js/")
|| uri.contains("/fonts/")
|| uri.contains("/images/")
|| uri.contains("/CheckCode300")
|| uri.contains("/IndexServlet")
|| uri.contains("/index.jsp")
|| uri.contains("/about.jsp")
|| uri.contains("/news.jsp")
|| uri.contains("/contact.jsp")
|| uri.contains("/portfolio.jsp")
|| uri.contains("/product.jsp")
|| uri.contains("/server.jsp")
|| uri.contains("/talent.jsp")
|| uri.contains("/online.jsp")) {
// 包含,用戶就是想登錄。放行
chain.doFilter(req, resp);
} else {
// 不包含,需要驗證用戶是否登錄
// 3.從獲取session中獲取user
Object user = request.getSession().getAttribute("user");
if (user != null) {
// 登錄了。放行
chain.doFilter(request, resp);
} else {
// 沒有登錄。跳轉登錄頁面
request.setAttribute("login_msg", "您尚未登錄,請登錄");
request.getRequestDispatcher("/Manager/Login.jsp").forward(request, resp);
}
}
}
public void init(FilterConfig fConfig) throws ServletException {
}
}
```
### **9.3創建敏感詞匯過濾器類SensitiveWordsFilter.java**
>創建敏感詞匯過濾器類SensitiveWordsFilter類
注意此處要創建一個Filter
```
package com.baishenghua300.filter;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
import java.util.ArrayList;
import java.util.List;
/**
* 敏感詞匯過濾器
*/
@WebFilter("/*")
public class SensitiveWordsFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws ServletException, IOException {
//1.創建代理對象,增強getParameter方法
ServletRequest proxy_req = (ServletRequest) Proxy.newProxyInstance(req.getClass().getClassLoader(), req.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//增強getParameter方法
//判斷是否是getParameter方法
if(method.getName().equals("getParameter")){
//增強返回值
//獲取返回值
String value = (String) method.invoke(req,args);
if(value != null){
for (String str : list) {
if(value.contains(str)){
value = value.replaceAll(str,"***");
}
}
}
return value;
}
//判斷方法名是否是 getParameterMap
//判斷方法名是否是 getParameterValue
return method.invoke(req,args);
}
});
//2.放行
chain.doFilter(proxy_req, resp);
}
private List<String> list = new ArrayList<String>();//敏感詞匯集合
public void init(FilterConfig config) throws ServletException {
try{
//1.獲取文件真實路徑
ServletContext servletContext = config.getServletContext();
String realPath = servletContext.getRealPath("/WEB-INF/classes/敏感詞匯.txt");
//2.讀取文件
BufferedReader br = new BufferedReader(new FileReader(realPath));
//3.將文件的每一行數據添加到list中
String line = null;
while((line = br.readLine())!=null){
list.add(line);
}
br.close();
System.out.println(list);
}catch (Exception e){
e.printStackTrace();
}
}
public void destroy() {
}
}
```
# **三、后臺管理頁面創建**
在WebContent目錄下創建用戶登錄界面
## **用戶登錄界面**
```
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>登錄頁面</title>
<script>
window.onload = function(){
document.getElementById("img").onclick = function(){
this.src="checkCode?time="+new Date().getTime();
}
}
</script>
<style>
div{
color: red;
}
</style>
</head>
<body>
<form action="loginServlet" method="post">
<table>
<tr>
<td>用戶名</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密碼</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>驗證碼</td>
<td><input type="text" name="checkCode"></td>
</tr>
<tr>
<td colspan="2"><img id="img" src="checkCode"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="登錄"></td>
</tr>
</table>
</form>
<div><%=request.getAttribute("cc_error") == null ? "" : request.getAttribute("cc_error")%></div>
<div><%=request.getAttribute("login_error") == null ? "" : request.getAttribute("login_error") %></div>
</body>
</html>
```
## **1.菜單信息管理模塊界面**
在WebContent目錄下創建MenuManager目錄,在該目錄下創建下面三個頁面。
### **1.1 創建添加導航菜單界面AddMenu100.jsp如下:**
**AddMenu100.jsp界面代碼如下:**
```
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>添加導航菜單界面</title>
</head>
<body>
<h1>添加菜單</h1>
<form action="MenuServlet300?method=addMenu" method="post">
序號<input type="text" name="menuNo300" /><br>
名稱<input type="text" name="menuName300" /><br>
地址<input type="text" name="menuURL300" /><br>
<input type="submit" value="添加"/>
</form>
</body>
</html>
```
### **1.2 創建菜單管理主界面Main100.jsp如下:**
**Main100.jsp界面代碼如下:**
```
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>導航菜單管理界面</title>
</head>
<body>
<table border="1">
<tr><th>編號</th><th>序號</th><th>名稱</th><th>地址</th><th colspan="2">編輯</th></tr>
<c:forEach items="${menus}" var="m">
<tr><td>${m.id300}</td><td>${m.menuNo300}</td><td>${m.menuName300 }</td><td>${m.menuURL300}</td>
<td><a href="MenuServlet300?method=editMenu&id300=${m.id300}">編輯</a></td>
<td><a href="MenuServlet300?method=deleteMenu&id300=${m.id300}" onclick="return confirm('是否確認刪除?')">刪除</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
```
### **1.3 創建修改導航菜單界面EditMenu100.jsp如下:**
**EditMenu100.jsp界面代碼如下:**
```
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>更新導航菜單信息界面</title>
</head>
<body>
<h1>更新菜單</h1>
<form action="MenuServlet300?method=updateMenu" method="post">
序號<input type="text" name="menuNo300" value="${menu.menuNo300 }"/><br>
名稱<input type="text" name="menuName300" value="${menu.menuName300 }"/><br>
地址<input type="text" name="menuURL300" value="${menu.menuURL300 }"/><br>
<input type="submit" value="修改"/>
</form>
</body>
</html>
```
## **2.公司信息管理模塊界面**
在WebContent目錄下創建companyinfomanager目錄,在該目錄下創建下面三個頁面。
### **2.1創建公司信息添加界面AddCompanyInfo300.jsp如下:**

**AddCompanyInfo300.jsp界面代碼如下:**
```
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>公司信息管理界面-添加公司信息</title>
</head>
<body>
<h1>添加公司信息</h1>
<form action="companyInfoController300?method=addCompanyInfo" method="post">
序號:<input type="text" name="ciNo300" /><br>
標題:<input type="text" name="ciTitle300" /><br>
圖片:<input type="text" name="ciImage300" /><br>
內容:<textarea name="ciContent300" rows="20" cols="50"></textarea><br>
日期:<input type="text" name="ciEditDate300" /><br>
<input type="submit" value="添加"/>
</form>
</body>
</html>
```
### **2.2創建顯示公司信息界面CompanyInfoMain300.jsp如下:**

**CompanyInfoMain300.jsp界面代碼如下:**
```
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>公司信息管理界面</title>
</head>
<body>
<a href="AddCompanyInfo.jsp">添加公司信息</a>
<table border="1">
<tr><th>編號</th><th>序號</th><th>標題</th><th>內容</th><th>圖片</th><th>日期</th><th colspan="2">編輯</th></tr>
<c:forEach items="${ciList}" var="ci">
<tr><td>${ci.ciId300}</td><td>${ci.ciNo300}</td><td>${ci.ciTitle300 }</td><td width="50%">${ci.ciContent300}</td><td>${ci.ciImage300}</td><td>${ci.ciEditDate300}</td>
<td><a href="companyInfoController300?method=editCompanyInfo&ciId300=${ci.ciId300}">編輯</a></td>
<td><a href="companyInfoController300?method=deleteCompanyInfo&ciId300=${ci.ciId300}" onclick="return confirm('是否確認刪除?')">刪除</a></td>
</tr>
</c:forEach>
</table>
</body>
</html>
```
### **2.3創建更新公司信息界面EditCompanyInfo300.jsp如下:**

**EditCompanyInfo300.jsp界面代碼如下:**
```
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>公司信息管理界面-更新-${ci300.ciTitle300 }-界面</title>
</head>
<body>
<h1>更新《${ci300.ciTitle300 }》</h1>
<form action="companyInfoController300?method=updateCompanyInfo" method="post">
<input type="hidden" name="ciId300" value="${ci300.ciId300 }"/>
序號:<input type="text" name="ciNo300" value="${ci300.ciNo300 }"/><br>
標題:<input type="text" name="ciTitle300" value="${ci300.ciTitle300 }"/><br>
圖片:<input type="text" name="ciImage300" value="${ci300.ciImage300 }"/><br>
內容:<textarea name="ciContent300" rows="20" cols="50">${ci300.ciContent300 }</textarea><br>
日期:<input type="text" name="ciEditDate300" value="${ci300.ciEditDate300 }"/><br>
<input type="submit" value="更新"/>
</form>
</body>
</html>
```
## **3.用戶信息管理模塊界面**
在WebContent目錄下創建UserManager目錄,在該目錄下創建下面三個頁面。
### **3.1創建用戶信息添加界面AddUser300.jsp如下:**
```
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!-- HTML5文檔-->
<!DOCTYPE html>
<!-- 網頁使用的語言 -->
<html lang="zh-CN">
<head>
<!-- 指定字符集 -->
<meta charset="utf-8">
<!-- 使用Edge最新的瀏覽器的渲染方式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- viewport視口:網頁可以根據設置的寬度自動進行適配,在瀏覽器的內部虛擬一個容器,容器的寬度與設備的寬度相同。
width: 默認寬度與設備的寬度相同
initial-scale: 初始的縮放比,為1:1 -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3個meta標簽*必須*放在最前面,任何其他內容都*必須*跟隨其后! -->
<title>添加用戶</title>
<!-- 1. 導入CSS的全局樣式 -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- 2. jQuery導入,建議使用1.9以上的版本 -->
<script src="js/jquery-2.1.0.min.js"></script>
<!-- 3. 導入bootstrap的js文件 -->
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<div class="container">
<center><h3>添加聯系人頁面</h3></center>
<form action="${pageContext.request.contextPath}/UserServlet300?method=addUser" method="post">
<div class="form-group">
<label for="name">姓名:</label>
<input type="text" class="form-control" id="name" name="name" placeholder="請輸入姓名">
</div>
<div class="form-group">
<label>性別:</label>
<input type="radio" name="gender" value="男" checked="checked"/>男
<input type="radio" name="gender" value="女"/>女
</div>
<div class="form-group">
<label for="age">年齡:</label>
<input type="text" class="form-control" id="age" name="age" placeholder="請輸入年齡">
</div>
<div class="form-group">
<label for="address">籍貫:</label>
<select name="address" class="form-control" id="address">
<option value="陜西">陜西</option>
<option value="北京">北京</option>
<option value="上海">上海</option>
</select>
</div>
<div class="form-group">
<label for="qq">QQ:</label>
<input type="text" class="form-control" id="qq" name="qq" placeholder="請輸入QQ號碼"/>
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="text" class="form-control" id="email" name="email" placeholder="請輸入郵箱地址"/>
</div>
<div class="form-group" style="text-align: center">
<input class="btn btn-primary" type="submit" value="提交" />
<input class="btn btn-default" type="reset" value="重置" />
<input class="btn btn-default" type="button" value="返回" />
</div>
</form>
</div>
</body>
</html>
```
### **3.2創建用戶信息編輯界面EditUser300.jsp如下:**
```
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<!-- 網頁使用的語言 -->
<html lang="zh-CN">
<head>
<!-- 指定字符集 -->
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>修改用戶</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<script src="js/jquery-2.1.0.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
<body>
<div class="container" style="width: 400px;">
<h3 style="text-align: center;">修改聯系人</h3>
<form action="${pageContext.request.contextPath}/UserServlet300?method=updateUser" method="post">
<!-- 隱藏域 提交id-->
<input type="hidden" name="id" value="${user.id300}">
<div class="form-group">
<label for="name">姓名:</label>
<input type="text" class="form-control" id="name" name="name" value="${user.name300}" readonly="readonly" placeholder="請輸入姓名" />
</div>
<div class="form-group">
<label>性別:</label>
<c:if test="${user.gender300 == '男'}">
<input type="radio" name="gender" value="男" checked />男
<input type="radio" name="gender" value="女" />女
</c:if>
<c:if test="${user.gender300 == '女'}">
<input type="radio" name="gender" value="男" />男
<input type="radio" name="gender" value="女" checked />女
</c:if>
</div>
<div class="form-group">
<label for="age">年齡:</label>
<input type="text" class="form-control" value="${user.age300}" id="age" name="age" placeholder="請輸入年齡" />
</div>
<div class="form-group">
<label for="address">籍貫:</label>
<select name="address" id="address" class="form-control" >
<c:if test="${user.address300 == '陜西'}">
<option value="陜西" selected>陜西</option>
<option value="北京">北京</option>
<option value="上海">上海</option>
</c:if>
<c:if test="${user.address300 == '北京'}">
<option value="陜西" >陜西</option>
<option value="北京" selected>北京</option>
<option value="上海">上海</option>
</c:if>
<c:if test="${user.address300 == '上海'}">
<option value="陜西" >陜西</option>
<option value="北京">北京</option>
<option value="上海" selected>上海</option>
</c:if>
</select>
</div>
<div class="form-group">
<label for="qq">QQ:</label>
<input type="text" id="qq" class="form-control" value="${user.qq300}" name="qq" placeholder="請輸入QQ號碼"/>
</div>
<div class="form-group">
<label for="email">Email:</label>
<input type="text" id="email" class="form-control" value="${user.email300}" name="email" placeholder="請輸入郵箱地址"/>
</div>
<div class="form-group" style="text-align: center">
<input class="btn btn-primary" type="submit" value="提交" />
<input class="btn btn-default" type="reset" value="重置" />
<input class="btn btn-default" type="button" value="返回"/>
</div>
</form>
</div>
</body>
</html>
```
### **3.3創建用戶信息查詢主界面UserMain300.jsp如下:**
```
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<!-- 網頁使用的語言 -->
<html lang="zh-CN">
<head>
<!-- 指定字符集 -->
<meta charset="utf-8">
<!-- 使用Edge最新的瀏覽器的渲染方式 -->
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<!-- viewport視口:網頁可以根據設置的寬度自動進行適配,在瀏覽器的內部虛擬一個容器,容器的寬度與設備的寬度相同。
width: 默認寬度與設備的寬度相同
initial-scale: 初始的縮放比,為1:1 -->
<meta name="viewport" content="width=device-width, initial-scale=1">
<!-- 上述3個meta標簽*必須*放在最前面,任何其他內容都*必須*跟隨其后! -->
<title>用戶信息管理系統</title>
<!-- 1. 導入CSS的全局樣式 -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- 2. jQuery導入,建議使用1.9以上的版本 -->
<script src="js/jquery-2.1.0.min.js"></script>
<!-- 3. 導入bootstrap的js文件 -->
<script src="js/bootstrap.min.js"></script>
<style type="text/css">
td, th {
text-align: center;
}
</style>
<script>
function deleteUser(id){
//用戶安全提示
if(confirm("您確定要刪除嗎?")){
//訪問路徑
location.href="${pageContext.request.contextPath}/UserServlet300?method=deleteUser&id="+id;
}
}
window.onload = function(){
//給刪除選中按鈕添加單擊事件
document.getElementById("delSelected").onclick = function(){
if(confirm("您確定要刪除選中條目嗎?")){
var flag = false;
//判斷是否有選中條目
var cbs = document.getElementsByName("uid");
for (var i = 0; i < cbs.length; i++) {
if(cbs[i].checked){
//有一個條目選中了
flag = true;
break;
}
}
if(flag){//有條目被選中
//表單提交
document.getElementById("form").submit();
}
}
}
//1.獲取第一個cb
document.getElementById("firstCb").onclick = function(){
//2.獲取下邊列表中所有的cb
var cbs = document.getElementsByName("uid");
//3.遍歷
for (var i = 0; i < cbs.length; i++) {
//4.設置這些cbs[i]的checked狀態 = firstCb.checked
cbs[i].checked = this.checked;
}
}
}
</script>
</head>
<body>
<div class="container">
<h3 style="text-align: center">用戶信息列表</h3>
<div style="float: left;">
<form class="form-inline" action="${pageContext.request.contextPath}/findUserByPageServlet" method="post">
<div class="form-group">
<label for="exampleInputName2">姓名</label>
<input type="text" name="name" value="${condition.name[0]}" class="form-control" id="exampleInputName2" >
</div>
<div class="form-group">
<label for="exampleInputName3">籍貫</label>
<input type="text" name="address" value="${condition.address[0]}" class="form-control" id="exampleInputName3" >
</div>
<div class="form-group">
<label for="exampleInputEmail2">郵箱</label>
<input type="text" name="email" value="${condition.email[0]}" class="form-control" id="exampleInputEmail2" >
</div>
<button type="submit" class="btn btn-default">查詢</button>
</form>
</div>
<div style="float: right;margin: 5px;">
<a class="btn btn-primary" href="${pageContext.request.contextPath}/UserServlet300?method=addPage">添加聯系人</a>
<a class="btn btn-primary" href="javascript:void(0);" id="delSelected">刪除選中</a>
</div>
<form id="form" action="${pageContext.request.contextPath}/UserServlet300?method=deleteUser" method="post">
<table border="1" class="table table-bordered table-hover">
<tr class="success">
<th><input type="checkbox" id="firstCb"></th>
<th>編號</th>
<th>姓名</th>
<th>性別</th>
<th>年齡</th>
<th>籍貫</th>
<th>QQ</th>
<th>郵箱</th>
<th>操作</th>
</tr>
<c:forEach items="${uList}" var="user" varStatus="s">
<tr>
<td><input type="checkbox" name="uid" value="${user.id300}"></td>
<td>${s.count}</td>
<td>${user.name300}</td>
<td>${user.gender300}</td>
<td>${user.age300}</td>
<td>${user.address300}</td>
<td>${user.qq300}</td>
<td>${user.email300}</td>
<td><a class="btn btn-default btn-sm" href="${pageContext.request.contextPath}/UserServlet300?method=editUser&id=${user.id300}">修改</a>
<a class="btn btn-default btn-sm" href="javascript:deleteUser(${user.id300});">刪除</a></td>
</tr>
</c:forEach>
</table>
</form>
<div>
<nav aria-label="Page navigation">
<ul class="pagination">
<c:if test="${pb.currentPage == 1}">
<li class="disabled">
</c:if>
<c:if test="${pb.currentPage != 1}">
<li>
</c:if>
<a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${pb.currentPage - 1}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}" aria-label="Previous">
<span aria-hidden="true">«</span>
</a>
</li>
<c:forEach begin="1" end="${pb.totalPage}" var="i" >
<c:if test="${pb.currentPage == i}">
<li class="active"><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${i}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}">${i}</a></li>
</c:if>
<c:if test="${pb.currentPage != i}">
<li><a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${i}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}">${i}</a></li>
</c:if>
</c:forEach>
<li>
<a href="${pageContext.request.contextPath}/findUserByPageServlet?currentPage=${pb.currentPage + 1}&rows=5&name=${condition.name[0]}&address=${condition.address[0]}&email=${condition.email[0]}" aria-label="Next">
<span aria-hidden="true">»</span>
</a>
</li>
<span style="font-size: 25px;margin-left: 5px;">
共${pb.totalCount}條記錄,共${pb.totalPage}頁
</span>
</ul>
</nav>
</div>
</div>
</body>
</html>
```
## **4.后臺管理界面**
在WebContent目錄下創建Manager目錄,引入css/js/fonts
### **4.1創建后臺管理登錄界面Login.jsp如下:**
```
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>管理員登錄</title>
<!-- 1. 導入CSS的全局樣式 -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- 2. jQuery導入,建議使用1.9以上的版本 -->
<script src="js/jquery-2.1.0.min.js"></script>
<!-- 3. 導入bootstrap的js文件 -->
<script src="js/bootstrap.min.js"></script>
<script type="text/javascript">
//切換驗證碼
function refreshCode(){
//1.獲取驗證碼圖片對象
var vcode = document.getElementById("vcode");
//2.設置其src屬性,加時間戳
vcode.src = "${pageContext.request.contextPath}/CheckCode300?time="+new Date().getTime();
}
</script>
</head>
<body>
<div class="container" style="width: 400px;">
<h3 style="text-align: center;">管理員登錄</h3>
<form action="${pageContext.request.contextPath}/LoginServlet300" method="post">
<div class="form-group">
<label for="user">用戶名:</label>
<input type="text" name="username" class="form-control" id="user" placeholder="請輸入用戶名"/>
</div>
<div class="form-group">
<label for="password">密碼:</label>
<input type="password" name="password" class="form-control" id="password" placeholder="請輸入密碼"/>
</div>
<div class="form-inline">
<label for="vcode">驗證碼:</label>
<input type="text" name="verifycode" class="form-control" id="verifycode" placeholder="請輸入驗證碼" style="width: 120px;"/>
<a href="javascript:refreshCode();">
<img src="${pageContext.request.contextPath}/CheckCode300" title="看不清點擊刷新" id="vcode"/>
</a>
</div>
<hr/>
<div class="form-group" style="text-align: center;">
<input class="btn btn btn-primary" type="submit" value="登錄">
</div>
</form>
<!-- 出錯顯示的信息框 -->
<div class="alert alert-warning alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert" >
<span>×</span>
</button>
<strong>${login_msg}</strong>
</div>
</div>
</body>
</html>
```
### **4.2創建后臺管理登錄成功后主界面index300.jsp**
```
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=edge"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>首頁</title>
<!-- 1. 導入CSS的全局樣式 -->
<link href="css/bootstrap.min.css" rel="stylesheet">
<!-- 2. jQuery導入,建議使用1.9以上的版本 -->
<script src="js/jquery-2.1.0.min.js"></script>
<!-- 3. 導入bootstrap的js文件 -->
<script src="js/bootstrap.min.js"></script>
<script type="text/javascript">
</script>
</head>
<body>
<div >${user.name300},歡迎您</div>
<div align="center">
<a
href="${pageContext.request.contextPath}/UserServlet300" style="text-decoration:none;font-size:33px">查詢所有用戶信息
</a></br>
<a
href="${pageContext.request.contextPath}/MenuServlet300" style="text-decoration:none;font-size:33px">查詢所有菜單信息
</a></br>
<a
href="${pageContext.request.contextPath}/companyInfoController300" style="text-decoration:none;font-size:33px">查詢所有公司信息
</a></br>
</div>
</body>
</html>
```
# **四、企業官網前端頁面創建**
## **1.企業官網主界面**
```
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%
String title = "華圣物流信息科技有限公司";
String mobile = "18605395651";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title><%=title %></title>
<meta name="keywords" content="<%=title %>" />
<meta name="description" content="<%=title %>" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link href="css/jquery.bxslider.css" rel="stylesheet" />
<script src="js/jquery-1.10.2.min.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<script type="text/javascript" src="js/hover-dropdown.js"></script>
<script type="text/javascript" src="js/jquery.bxslider.js"></script>
<script>
$(function(){
$(".close").click(function(){
$("#address").attr("value","");
})
})
</script>
</head>
<body>
<div class="top hidden-xs">
<div class="container">
<div class="top-fl">Hi,歡迎來到<%=title %>!</div>
<div class="top-fr">客服熱線:<%=mobile %></div>
</div>
</div>
<header class="header-frontend">
<div class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html"><img src="images/logo.png"/></a>
</div>
<div class="navbar-collapse collapse" style="height: 1px;">
<!-- 頁面導航 start -->
<%@ include file="head.jsp" %>
<!-- 頁面導航 end -->
</div>
</div>
</div>
</header>
<!--圖片輪播-->
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
<li data-target="#carousel-example-generic" data-slide-to="1"></li>
</ol>
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="${pageContext.request.contextPath}/images/banner.png" alt="<%=title %>">
</div>
<div class="item">
<img src="${pageContext.request.contextPath}/images/banner.png" alt="<%=title %>">
</div>
</div>
<!-- Controls -->
<a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<div class="container">
<div class="biaoti">
<h2>項目管理及實施</h2>
<p>致力于數字化、網絡化弱電系統解決方案</p>
<div class="english"><span>PROJECT</span></div>
</div>
</div>
<div class="line"></div>
<div class="container mt">
<div class="row">
<div class="col-lg-4 col-sm-4">
<section>
<a href="">
<div class="f-box">
<i class="iconfont"></i>
<h2>弱電系統工程</h2>
<p class="yw">system engineering</p>
<u></u>
<p class="f-text">致力于弱電智能工程和服務,努力成為業內一級的弱電工程商和服務提供商</p>
</div>
</a>
</section>
</div>
<div class="col-lg-4 col-sm-4">
<section>
<a href="">
<div class="f-box">
<i class="iconfont"></i>
<h2>行業解決方案</h2>
<p class="yw">Industry solutions</p>
<u></u>
<p class="f-text">致力于弱電智能工程和服務,努力成為業內一級的弱電工程商和服務提供商</p>
</div>
</a>
</section>
</div>
<div class="col-lg-4 col-sm-4">
<section>
<a href="">
<div class="f-box">
<i class="iconfont"></i>
<h2>項目案例</h2>
<p class="yw">PROJECT CASE</p>
<u></u>
<p class="f-text">致力于弱電智能工程和服務,努力成為業內一級的弱電工程商和服務提供商</p>
</div>
</a>
</section>
</div>
</div>
</div>
<div class="container">
<div class="biaoti">
<h2>項目案例</h2>
<p>系統集成和運維外包在內的整體服務方案</p>
<div class="english"><span>CASE</span></div>
</div>
</div>
<div class="line"></div>
<!--電腦產品中心-->
<div class="container hidden-xs mt">
<div class="row">
<!--item-->
<div class="col-xs-12 col-sm-4 col-md-4 ">
<div class="recent-work-wrap">
<a href="">
<img class="img-responsive" src="images/item1.jpg" alt="">
<div class="overlay">
<div class="recent-work-inner">
<h3>福隆超市連鎖</h3>
<p> 用連鎖形式經營多家超市,實行統一進貨、統一配送、統一管理。采用網狀型分布的經營策略,遍布汕頭各大村鎮的大街小巷,其中包括夏桂埔、辛厝寮、陳厝合、廣興村、金砂鄉等,全市連鎖超市管理系統、超市收銀軟件、監控系統、防盜報警系統</p>
<!--<a class="preview" href="" rel="prettyPhoto" title=""><i class="fa fa-search"></i></a> -->
</div>
</div>
</a>
</div>
</div>
<!--item-->
<!--item-->
<div class="col-xs-12 col-sm-4 col-md-4 ">
<div class="recent-work-wrap">
<a href="">
<img class="img-responsive" src="images/item1.jpg" alt="">
<div class="overlay">
<div class="recent-work-inner">
<h3>福隆超市連鎖</h3>
<p> 用連鎖形式經營多家超市,實行統一進貨、統一配送、統一管理。采用網狀型分布的經營策略,遍布汕頭各大村鎮的大街小巷,其中包括夏桂埔、辛厝寮、陳厝合、廣興村、金砂鄉等,全市連鎖超市管理系統、超市收銀軟件、監控系統、防盜報警系統</p>
<!--<a class="preview" href="" rel="prettyPhoto" title=""><i class="fa fa-search"></i></a> -->
</div>
</div>
</a>
</div>
</div>
<!--item-->
<!--item-->
<div class="col-xs-12 col-sm-4 col-md-4 ">
<div class="recent-work-wrap">
<a href="">
<img class="img-responsive" src="images/item1.jpg" alt="">
<div class="overlay">
<div class="recent-work-inner">
<h3>福隆超市連鎖</h3>
<p> 用連鎖形式經營多家超市,實行統一進貨、統一配送、統一管理。采用網狀型分布的經營策略,遍布汕頭各大村鎮的大街小巷,其中包括夏桂埔、辛厝寮、陳厝合、廣興村、金砂鄉等,全市連鎖超市管理系統、超市收銀軟件、監控系統、防盜報警系統</p>
<!--<a class="preview" href="" rel="prettyPhoto" title=""><i class="fa fa-search"></i></a> -->
</div>
</div>
</a>
</div>
</div>
<!--item-->
<!--item-->
<div class="col-xs-12 col-sm-4 col-md-4 ">
<div class="recent-work-wrap">
<a href="">
<img class="img-responsive" src="images/item1.jpg" alt="">
<div class="overlay">
<div class="recent-work-inner">
<h3>福隆超市連鎖</h3>
<p> 用連鎖形式經營多家超市,實行統一進貨、統一配送、統一管理。采用網狀型分布的經營策略,遍布汕頭各大村鎮的大街小巷,其中包括夏桂埔、辛厝寮、陳厝合、廣興村、金砂鄉等,全市連鎖超市管理系統、超市收銀軟件、監控系統、防盜報警系統</p>
<!--<a class="preview" href="" rel="prettyPhoto" title=""><i class="fa fa-search"></i></a> -->
</div>
</div>
</a>
</div>
</div>
<!--item-->
<!--item-->
<div class="col-xs-12 col-sm-4 col-md-4 ">
<div class="recent-work-wrap">
<a href="">
<img class="img-responsive" src="images/item1.jpg" alt="">
<div class="overlay">
<div class="recent-work-inner">
<h3>福隆超市連鎖</h3>
<p> 用連鎖形式經營多家超市,實行統一進貨、統一配送、統一管理。采用網狀型分布的經營策略,遍布汕頭各大村鎮的大街小巷,其中包括夏桂埔、辛厝寮、陳厝合、廣興村、金砂鄉等,全市連鎖超市管理系統、超市收銀軟件、監控系統、防盜報警系統</p>
<!--<a class="preview" href="" rel="prettyPhoto" title=""><i class="fa fa-search"></i></a> -->
</div>
</div>
</a>
</div>
</div>
<!--item-->
<!--item-->
<div class="col-xs-12 col-sm-4 col-md-4 ">
<div class="recent-work-wrap">
<a href="">
<img class="img-responsive" src="images/item1.jpg" alt="">
<div class="overlay">
<div class="recent-work-inner">
<h3>福隆超市連鎖</h3>
<p> 用連鎖形式經營多家超市,實行統一進貨、統一配送、統一管理。采用網狀型分布的經營策略,遍布汕頭各大村鎮的大街小巷,其中包括夏桂埔、辛厝寮、陳厝合、廣興村、金砂鄉等,全市連鎖超市管理系統、超市收銀軟件、監控系統、防盜報警系統</p>
<!--<a class="preview" href="" rel="prettyPhoto" title=""><i class="fa fa-search"></i></a> -->
</div>
</div>
</a>
</div>
</div>
<!--item-->
</div>
<a href="" class="more">查看更多</a>
</div>
<div class="row product hidden-lg" style=" margin: 0; padding-top: 20px;">
<div class="col-lg-12">
<ul class="bxslider">
<li>
<a href="">
<div class="element item view view-tenth" data-zlname="reverse-effect">
<img src="images/item1.jpg" alt="" />
<div class="mask">
<a data-zl-popup="link" href="javascript:;">
<i class="icon-link"></i>
</a>
<a data-zl-popup="link2" class="fancybox" rel="group" href="images/img1.jpg">
<i class="icon-search"></i>
</a>
</div>
</div>
</a>
</li>
<li>
<a href="">
<div class="element item view view-tenth" data-zlname="reverse-effect">
<img src="images/item1.jpg" alt="" />
<div class="mask">
<a data-zl-popup="link" href="javascript:;">
<i class="icon-link"></i>
</a>
<a data-zl-popup="link2" class="fancybox" rel="group" href="images/img1.jpg">
<i class="icon-search"></i>
</a>
</div>
</div>
</a>
</li>
<li>
<a href="">
<div class="element item view view-tenth" data-zlname="reverse-effect">
<img src="images/item1.jpg" alt="" />
<div class="mask">
<a data-zl-popup="link" href="javascript:;">
<i class="icon-link"></i>
</a>
<a data-zl-popup="link2" class="fancybox" rel="group" href="images/img1.jpg">
<i class="icon-search"></i>
</a>
</div>
</div>
</a>
</li>
<li>
<a href="">
<div class="element item view view-tenth" data-zlname="reverse-effect">
<img src="images/item1.jpg" alt="" />
<div class="mask">
<a data-zl-popup="link" href="javascript:;">
<i class="icon-link"></i>
</a>
<a data-zl-popup="link2" class="fancybox" rel="group" href="images/img1.jpg">
<i class="icon-search"></i>
</a>
</div>
</div>
</a>
</li>
<li>
<a href="">
<div class="element item view view-tenth" data-zlname="reverse-effect">
<img src="images/item1.jpg" alt="" />
<div class="mask">
<a data-zl-popup="link" href="javascript:;">
<i class="icon-link"></i>
</a>
<a data-zl-popup="link2" class="fancybox" rel="group" href="images/img1.jpg">
<i class="icon-search"></i>
</a>
</div>
</div>
</a>
</li>
<li>
<a href="">
<div class="element item view view-tenth" data-zlname="reverse-effect">
<img src="images/item1.jpg" alt="" />
<div class="mask">
<a data-zl-popup="link" href="javascript:;">
<i class="icon-link"></i>
</a>
<a data-zl-popup="link2" class="fancybox" rel="group" href="images/img1.jpg">
<i class="icon-search"></i>
</a>
</div>
</div>
</a>
</li>
</ul>
</div>
</div>
<div class="news mt">
<div class="container">
<div class="row">
<div class="newtit">
<h2>新聞中心</h2>
<span>new center</span>
</div>
<p class="newstext">讓您第一時間內掌握最新動態</p>
<!-- Nav tabs -->
<ul class="nav nav-tabs col-lg-offset-4 col-md-offset-4 col-xs-offset-1" role="tablist">
<li role="presentation" class="active"><a href="#home" aria-controls="home" role="tab" data-toggle="tab">行業資訊</a></li>
<li role="presentation"><a href="#profile" aria-controls="profile" role="tab" data-toggle="tab">公司新聞</a></li>
<li role="presentation"><a href="">查看更多</a></li>
</ul>
<!-- Tab panes -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane active" id="home">
<div class="container">
<div class="row">
<div class="col-lg-4 col-lg-offset-2 hidden-xs hidden-md img"><img src="images/adv.png"/></div>
<div class="col-lg-4 col-xs-12">
<ul class="newslist">
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流 高清化發展是主流</i><span>2016-7-12</span></a></li>
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流</i><span>2016-7-12</span></a></li>
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流</i><span>2016-7-12</span></a></li>
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流</i><span>2016-7-12</span></a></li>
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流</i><span>2016-7-12</span></a></li>
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流 高清化發展是主流</i><span>2016-7-12</span></a></li>
</ul>
</div>
</div>
</div>
</div>
<div role="tabpanel" class="tab-pane" id="profile">
<div class="container">
<div class="row">
<div class="col-lg-4 col-lg-offset-2 hidden-xs hidden-md img"><img src="images/adv.png"/></div>
<div class="col-lg-4 col-xs-12 col-md-12">
<ul class="newslist">
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流</i><span>2016-7-12</span></a></li>
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流</i><span>2016-7-12</span></a></li>
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流</i><span>2016-7-12</span></a></li>
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流</i><span>2016-7-12</span></a></li>
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流</i><span>2016-7-12</span></a></li>
<li><a href=""><i>網絡視頻監控備受青睞 高清化發展是主流 高清化發展是主流</i><span>2016-7-12</span></a></li>
</ul>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="container mt">
<div class="biaoti">
<h2>合作伙伴</h2>
<p>價值創新,創造雙贏</p>
<div class="english"><span>Partner</span></div>
</div>
</div>
<div class="container partner mt">
<div class="row">
<div class="col-lg-2 col-md-2 col-xs-4"><a href=""><img src="images/1_03.png"/></a></div>
<div class="col-lg-2 col-md-2 col-xs-4"><a href=""><img src="images/1_03-03.png"/></a></div>
<div class="col-lg-2 col-md-2 col-xs-4"><a href=""><img src="images/1_09.png"/></a></div>
<div class="col-lg-2 col-md-2 col-xs-4"><a href=""><img src="images/1_11.png"/></a></div>
<div class="col-lg-2 col-md-2 col-xs-4"><a href=""><img src="images/1_13.png"/></a></div>
<div class="col-lg-2 col-md-2 col-xs-4"><a href=""><img src="images/1_05.png"/></a></div>
</div>
</div>
<div class="add mt">
<div class="container">
<div class="row">
<div class="col-lg-4 col-md-3 col-xs-12">
<h2>我們的地址:</h2>
<p>臨沂市羅莊區高新科技創業大廈一期358</p>
<h2 class="contact">聯系方式:</h2>
<p> 電話:18605395651 </p>
<p> 郵箱:50476085@qq.com</p>
<p>聯系人:柏先生</p>
</div>
<div class="col-lg-4 col-md-3 col-xs-12"><img src="images/map.png"/></div>
<div class="col-lg-4 col-md-3 col-xs-12">
<h2>留言板</h2>
<form>
<div class="form-group">
<label for="exampleInputEmail1">*姓名</label>
<input type="text" class="form-control" placeholder="">
</div>
<div class="form-group">
<label for="exampleInputPassword1">*電話</label>
<input type="password" class="form-control" id="exampleInputPassword1" placeholder="">
</div>
<label for="exampleInputPassword1">*給我們留言</label>
<textarea class="form-control" rows="3"></textarea>
<button type="submit" class="btn btn-default">提交留言</button>
</form>
</div>
</div>
</div>
</div>
<%@ include file="foot.jsp" %>
<script src="js/common-scripts.js"></script>
<script src="js/jquery.bxslider.js"></script>
<script>
RevSlide.initRevolutionSlider();
$(window).load(function() {
$('[data-zlname = reverse-effect]').mateHover({
position: 'y-reverse',
overlayStyle: 'rolling',
overlayBg: '#fff',
overlayOpacity: 0.7,
overlayEasing: 'easeOutCirc',
rollingPosition: 'top',
popupEasing: 'easeOutBack',
popup2Easing: 'easeOutBack'
});
});
$(window).load(function() {
$('.flexslider').flexslider({
animation: "slide",
start: function(slider) {
$('body').removeClass('loading');
}
});
});
jQuery(".fancybox").fancybox();
</script>
</body>
</html>
```
## **2.企業信息介紹主界面about.jsp**
```
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<%--引入核心標簽庫 --%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String title = "華圣物流信息科技有限公司";
String mobile = "18605395651";
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title><%=title %></title>
<meta name="keywords" content="<%=title %>" />
<meta name="description" content="<%=title %>" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link href="css/bootstrap.min.css" rel="stylesheet" type="text/css" />
<link href="css/style.css" rel="stylesheet" type="text/css" />
<link href="css/jquery.bxslider.css" rel="stylesheet" />
<script src="js/jquery-1.10.2.min.js" type="text/javascript"></script>
<script src="js/bootstrap.min.js" type="text/javascript"></script>
<script type="text/javascript" src="js/hover-dropdown.js"></script>
<script type="text/javascript" src="js/jquery.bxslider.js"></script>
</head>
<body>
<div class="top hidden-xs">
<div class="container">
<div class="top-fl">Hi,歡迎來到<%=title %>!</div>
<div class="top-fr">客服熱線:<%=mobile %></div>
</div>
</div>
<header class="header-frontend">
<div class="navbar navbar-default navbar-static-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.html"><img src="images/logo.png"/></a>
</div>
<div class="navbar-collapse collapse" style="height: 1px;">
<%@ include file="head.jsp" %>
</div>
</div>
</div>
</header>
<!--圖片輪播-->
<div id="carousel-example-generic" class="carousel slide" data-ride="carousel">
<ol class="carousel-indicators">
<li data-target="#carousel-example-generic" data-slide-to="0" class="active"></li>
<li data-target="#carousel-example-generic" data-slide-to="1"></li>
</ol>
<div class="carousel-inner" role="listbox">
<div class="item active">
<img src="images/banner.png" alt="">
</div>
<div class="item">
<img src="images/banner.png" alt="">
</div>
</div>
<!-- Controls -->
<a class="left carousel-control" href="#carousel-example-generic" role="button" data-slide="prev">
<span class="glyphicon glyphicon-chevron-left" aria-hidden="true"></span>
<span class="sr-only">Previous</span>
</a>
<a class="right carousel-control" href="#carousel-example-generic" role="button" data-slide="next">
<span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span>
<span class="sr-only">Next</span>
</a>
</div>
<div class="pst_bg">
<div class="pst">
您當前的位置:
<a href="about.jsp">關于我們</a>>
<a href="about.jsp">公司簡介</a>
</div>
</div>
<div class="scd clearfix">
<div class="scd_l">
<div class="s_name">
關于我們
</div>
<ul class="s_nav">
<c:forEach items="${ciList }" var="ci">
<li><a href="#${ci.ciNo300 }">${ci.ciTitle300 }</a></li>
</c:forEach>
</ul>
</div>
<div class="scd_r">
<c:forEach items="${ciList }" var="ci">
<div class="r_name" id="${ci.ciNo300 }"><span>${ci.ciTitle300 }</span></div>
<div class="about">
<img src="${ci.ciImage300 }" width="850" height="449" /><br />
<p style="text-indent:2em; line-height: 30px;">${ci.ciContent300 }</p>
</div>
</c:forEach>
</div>
</div>
<%@ include file="foot.jsp" %>
</html>
```
```
- Java Web項目開發學習手冊
- 一、B/S開發環境搭建
- 1.1 tomcat服務器目錄結構及作用
- 1.2 在IDE開發工具上配置tomcat服務器
- 1.3 簡單web項目在tomcat服務器上運行的方法
- 1.4 開發工具設置
- 1.5 總結
- 二、Servlet技術應用
- 2.1 HttpServlet中的主要方法及應用
- 2.1.1 基于Eclipse完成一個JavaWeb項目
- 2.2 HttpRequest,HttpResponse的應用
- 2.2.1客戶端請求
- 2.2.2服務器響應
- 2.2.3Servlet HTTP 狀態碼
- 2.2.4圖片驗證碼類
- 2.2.5注冊模擬實現(帶驗證碼)
- 2.3 ServletConfig對象和ServletContext對象的概念
- 2.4 總結
- 三、JSP技術應用
- 3.1 JSP基本語法
- 3.2 JSP標簽和指令
- 3.3 JSP中的隱式對象
- 3.4 常用應用操作
- 3.4.1 JSP客戶端請求
- 3.4.2 JSP服務器響應
- 3.4.3 HTTP狀態碼
- 3.4.4 表單處理
- 3.4.5 過濾器
- 3.4.6 Cookie處理
- 3.4.7 Session處理
- 3.4.8 文件上傳
- 3.4.9 日期處理
- 3.4.10 頁面重定向
- 3.4.11 點擊量統計
- 3.4.12 自動刷新
- 3.4.13 發送郵件
- 3.5 JSP高級應用
- 3.5.1 JSP標準標簽庫(JSTL)
- 3.5.2 JSP連接數據庫
- 3.5.3 JSP XML數據處理
- 3.5.4 JSP JavaBean
- 3.5.5 自定義標簽
- 3.5.6 表達式語言
- 3.5.7 異常處理
- 3.5.8 調試
- 3.5.9 JSP國際化
- 3.6 實踐代碼
- 3.6.1 實踐代碼
- 3.6.2 項目實戰
- 3.7 總結
- 四、MVC思想的理解和搭建MVC
- 4.1 MVC設計模式的思想
- 4.2 MVC設計模式的實現步驟
- 4.3 項目實踐
- 4.4 總結
- 五、EL表達式和JSTL技術
- 5.1 EL表達式及其應用
- 5.2 常用的JSTL標簽的應用
- 5.3 項目實踐
- 5.4 總結
- 六、Cookie和Session
- 6.1 cookie對象的概念和應用
- 6.2 session對象的概念和應用
- 6.3 項目實踐
- 6.4 總結
- 七、過濾器技術應用
- 7.1 Filter的概念及應用
- 7.2 Filter、FilterChain、FilterConfig 介紹
- 7.3 用戶登錄過濾案例
- 7.4 項目實戰
- 7.5總結
- 八、異步請求技術
- 8.1 JSON數據格式
- 8.2 使用AJAX實現異步請求
- 8.3 用戶名校驗案例
- 8.4小結
- 綜合項目技術實訓
- 1.BS項目開發項目實戰
- 2.項目需求分析和系統設計
- 2.1需求分析
- 2.2類型模型設計
- 2.3原型設計
- 3.項目數據庫分析和系統設計
- 4.BS項目編程實現
- 4.1搭建框架和命名規約
- 4.2實現步驟
- 4.2.1創建實體類
- 4.2.2創建過濾器類
- 4.2.3創建工具類
- 4.2.4創建DAO接口及其實現類
- 4.2.5創建Service接口及其實現類
- 4.2.6創建測試類
- 4.2.7創建控制器類
- 5.企業開發流程規范
- 6.總結
- 九、練習題及答案
- 企業開發常用技術
- 1.Maven技術
- Java命名規范解讀
- 參考資料
- 開發中常用的應用服務器和Web服務器