web java工程的创建_简单JavaWeb工程创建
項目目錄簡介
創建數據庫連接工具
db.properties
將數據庫連接配置寫在本文件中,當配置發生變化時,僅需修改本文件內容即可
ConnectionUtil
這個類中總共寫了三個方法
靜態方法 讀取properties文件中的配置,此處僅是讀取,并不創建數據庫連接
static {
//類加載器讀取文件
try {
InputStream in = ConnectionUtil.class.getClassLoader().getResourceAsStream("db.properties");
props.load(in);
driver = props.getProperty("jdbc.driver");
url = props.getProperty("jdbc.url");
username = props.getProperty("jdbc.username");
password = props.getProperty("jdbc.password");
Class.forName(driver);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
靜態方法 返回數據庫連接 外部方法可以調用這個方法獲取數據庫連接
/**
* 獲取連接的方法
*/
public static Connection getConn() throws Exception{
Connection conn = DriverManager.getConnection(url, username, password);
return conn;
}
靜態方法 關閉數據庫連接
/**
* 關閉連接的方法
*/
public static void closeConn(Connection conn) {
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
實體類的創建
實體是與數據庫對應的實體,變量命名與數據類型與數據庫盡量保持一致
package com.sx.beans;
public class User {
private String loginName;
private String password;
private String sex;
private String address;
public String getLoginName() {
return loginName;
}
public void setLoginName(String loginName) {
this.loginName = loginName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public User() {
}
public User(String loginName, String password, String sex, String address) {
this.loginName = loginName;
this.password = password;
this.sex = sex;
this.address = address;
}
@Override
public String toString() {
return "User [loginName=" + loginName + ", password=" + password + ", sex=" + sex + ", address=" + address
+ "]";
}
}
eclipse和idea中都由對實體類創建的快捷方式
在User.java中單擊右鍵 找到Source ,單擊這兩處可以快速生成get set方法和構造方法
Dao創建
Dao層又為Data access object,將與數據庫的交互分別寫在對應的接口與實現類中
User與數據庫的交互操作 本文僅以checkPassword :檢驗用戶登錄密碼是否正確為例。
userDao接口
在這個接口中定義與數據庫交互完成的功能,這里檢查用戶登錄,傳入參數密碼和賬號,通過數據庫查詢返回User。這里采用先創建接口再創建實現類的方式,為什么要多此一舉呢?這種設計模式滿足低耦合,高內聚的設計理念,功能之間互不干擾,而且在團隊開發中,一個人完成了某個功能的開發,其他人只需要關心功能的實現即可,直接傳參調用,而不需要關心內部的實現。
package com.sx.dao;
import java.util.List;
import com.sx.beans.User;
public interface UserDao {
public User checkPassword(String username,String password);
public List findAll();
public int modUser(User user);
public int addUser(User user);
}
userDaoImpl
實現checkPassword方法,獲取數據庫鏈接,通過sql語句查詢結果,將查到的信息賦值給創建的User對象,User對象初始為空,如果查詢到結果,則User就不為空,我們可以通過判斷User 是否為null判斷賬號和密碼是否正確。
@Override
public User checkPassword(String username, String password) {
User u = null;
Connection conn = null;
try {
conn = ConnectionUtil.getConn();
String sql = "select loginname,sex,address from t_staff t " + "where t.loginname = ? and password = ?";
PreparedStatement pre = conn.prepareStatement(sql);
pre.setString(1, username);
pre.setString(2, password);
ResultSet res = pre.executeQuery();
if (res.next()) {
u = new User();
u.setLoginName(res.getString("loginName"));
u.setAddress(res.getString("address"));
}
return u;
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
ConnectionUtil.closeConn(conn);
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
Service
為controller提供服務 也是采用寫接口,在寫實現類的方式
Service 接口
public interface UserService {
User loginCheck(String username,String password);
}
ServiceImpl 實現類
在service層調用dao,以完成對應的功能
注意這里書寫的方式,UserDao userDao = new UserDaoImpl();
new 后后面跟的是實現類類名,必須通過實現類才能調用對應的方法,變量名一般命名為xxxDao,而實際上它是一個實現類,這種命名方式可讀性非常好,單從字面就能知道功能與對應所屬的層。
@Override
public User loginCheck(String username, String password) {
UserDao userDao = new UserDaoImpl();
User user = userDao.checkPassword(username, password);
return user;
}
servlet
servlet 控制著前段訪問的路徑 前段的請求會轉發到這里,servlet根據前端不同的請求,調用不同的service 返回 數據給前端
每一個servlet對應一個action,這個配置在web.xml中完成,后續會說到。
servlet 創建
創建出servlet的時候,會默認為我們創建doget與dopost方法,這兩種方法對應著前端不同的請求方式。以登錄為例,前端如果采用get方法,在登錄時輸入了密碼,get方法會在地址欄中顯示出所傳的參數。post方法則只顯示請求資源路徑,具有較高的安全性,所以采用了doPost方法處理請求。
首先是獲取前端所傳過來的參數,然后創建service,調用service獲取user對象,通過判斷對象是否為空來判斷用戶名賬號和密碼是否正確。如果賬號存在且密碼正確,跳轉到listuser界面,如果錯誤則跳轉到error界面
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String username = request.getParameter("username");
String password = request.getParameter("password");
UserService service = new UserServiceImpl();
User user = service.loginCheck(username, password);
response.setContentType("text/html;charset=utf-8");
if(user != null) {
List users = service.findAll();
HttpSession session = request.getSession();
session.setAttribute("users", users);
response.sendRedirect("listuser.jsp");
}else {
response.sendRedirect("error.jsp");
}
}
web.xml 配置
Exercise
login.jsp
Login
com.sx.controller.LoginCheck
Login
/login
對于創建的servlet,我們要配置servlet與servlet-mapping。
servlet節點中,有servlet名字與對應的class,可以理解為:為servlet起個名字。servlet-class注意路徑書寫是否正確,可以通過 按住Ctrl鍵同時鼠標左鍵放到路徑上,單擊可以訪問到你的LoginCheck類,說明配置成功。
servlet-mapping:配置前端請求路徑與servlet匹配,注意要加/
Login
com.sx.controller.LoginCheck
Login
/login
以上我們已經實現了后端的全部功能。
jsp簡單說明
用戶名:
密碼:
form method中指定請求方式為post 對應servlet中使用dopost方法響應請求
input name屬性 username 與password 對應servlet獲取參數時的變量名字
String username = request.getParameter("username");
String password = request.getParameter("password");
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的web java工程的创建_简单JavaWeb工程创建的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AI 战火越烧越旺:谷歌母公司 Alph
- 下一篇: 特斯拉涨价2000元!Model Y起售