專案總結整理
專案總結整理
專案描述:
寫一個登入介面,輸入賬號密碼,對比資料庫裡面的資料,如果匹配成功的話,跳轉到顯示“Welcome +使用者名稱”的頁面,如果與資料庫裡面的資料匹配不成功,則留在原頁面
專案思路:
建一個使用者類,用來傳參;建一個dao層,專門連線資料庫裡面的資料;在WRB-INF檔案下建一個html登入介面;建立一個Servlet檔案,用於獲取登入介面裡輸入的值,判斷User是否為空
專案程式碼及註釋解釋:
第一步:因為要和資料庫連線,所以先導進Oracle的jdbc的jar包
找到Oracle安裝路徑,在jdbc檔案中找到ojdbc.jar複製到WebContent--WEB-INF-lib資料夾下,這個資料夾統一放第三方jar包,當然想要使用資料庫得先開啟電腦的監聽啥的,這些細節就不講了,擴充套件起來主題就沒啦
第二步:建一個使用者類
publicclass User {
private String name;
private String pass;
public User() {
super();
}
public User(String name, String pass) {
super();
this.name = name;
this.pass = pass;
}
//實現get set方法用來後面使用者名稱密碼的賦值,傳參
public String getName() {
returnname;
}
publicvoid setName(String name) {
this.name = name;
}
public String getPass() {
returnpass;
}
publicvoid setPass(String pass) {
this.pass = pass;
}
}
第三步:建立一個db.properties配置檔案,用來存放呼叫資料庫的資料
在Java Resources—src資料夾下建此檔案,第一行資料是資料庫介面,其中YLMF123-3131857是計算機名、1521為資料庫軟體介面
url=jdbc:oracle:thin:@YLMF123-3131857:1521:orcl
name=scott
pass=tiger
driver=oracle.jdbc.driver.OracleDriver
第四步:建一個dao層介面Interface
publicinterface UserDao {
User LoginUser(String name,String pass);
}
第五步:建一個類實現dao層介面
publicclass UserDaoImpl implements UserDao {
@Override
public User LoginUser(String name, String pass) {
//建立配置檔案例項,用來呼叫
Properties p = new Properties();
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//載入db.properties配置檔案
p.load(this.getClass().getClassLoader().getResourceAsStream("db.properties"));
//建立反射機制
Class.forName(p.getProperty("driver"));
//連線資料庫
conn=DriverManager.getConnection(p.getProperty("url"),p.getProperty("name"),p.getProperty("pass"));
String sql = "select *from userinfo where name = ? and pass = ?";
//運算元據庫,將sql語句傳送到資料庫
pstmt = conn.prepareStatement(sql);
//給第一個佔位符賦值,將方法中的引數賦值進去,此引數被ServletDemo中獲取到的表單域中的name賦值,
如果資料庫中存在此name和密碼則能查到資訊,否則查不到資訊,返回值為空
pstmt.setString(1, name);
pstmt.setString(2, pass);
//將查詢到的結果返回到結果集
rs = pstmt.executeQuery();
while(rs.next()){
//將從資料庫中得到的使用者名稱和密碼返回到User類中,如果沒有此使用者名稱則返回為空
User u = new User(rs.getString("name"),rs.getString("pass"));
}
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}finally{
try {
if(rs!=null){//一定要判斷不為空,預防空指標
rs.close();//關閉結果集,按照宣告的順序反向關閉
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(pstmt!=null){
pstmt.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
try {
if(conn!=null){
conn.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
returnu;//返回使用者類的值,用以ServletDemo()中判斷User是否為空,為空則轉發到zuoyelogin.jsp
頁面,不為空(說明資料庫中有此使用者名稱和密碼,說明登入成功)則跳轉到welcome頁面
}
}
第六步:建立一個Servlet檔案,用於獲取登入介面裡輸入的值
@WebServlet("/ServletDemo")
publicclass ServletDemo extends HttpServlet{
privatestaticfinallongserialVersionUID = 1L;
public ServletDemo() {
super();
}
protectedvoid doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
//呼叫本類的doPost()方法
this.doPost(request, response);
}
protectedvoid doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException,IOException {
//獲取登入介面中表單域的輸入的值
String name = request.getParameter("name");
String pass = request.getParameter("pass");
//例項化UserDaoImpl物件,用來呼叫
UserDao ud = new UserDaoImpl();
//將獲取到的表單域中輸入的值傳參到UserDaoImpl的LoginUser()方法中,用來呼叫資料庫中的值,如果
與資料庫中的name與pass沒有匹配的,則返回空
User u = ud.LoginUser(name, pass);
if(u==null){
//判斷為空的話,轉發到zuoyelogin.jsp檔案,及本頁面檔案
RequestDispatcher rd=request.getRequestDispatcher("zuoyelogin.jsp");
rd.forward(request, response);
}else{
//判斷不為空時,則說明與資料庫中的值匹配,登入成功,跳轉到welcome介面
PrintWriter out = response.getWriter();
out.write("welcome"+u.getName());
}
}
}
相關文章
- SpringMVC——HTTP請求專案實踐整理總結SpringMVCHTTP
- 【Vue專案總結】後臺管理專案總結Vue
- BBS專案專案總結
- 專案總結
- Laravel 專案總結Laravel
- Nuxt專案總結UX
- 番茄專案總結
- 今日專案總結
- lync專案總結
- sap 專案總結
- 專案總結【收集】
- 專案總結之專案失誤
- Vue + Canvas專案總結VueCanvas
- 小程式專案總結
- 爬蟲專案總結爬蟲
- 小程式專案-總結
- SSH框架專案總結框架
- 專案(SIMIS)總結(序)
- 準備專案總結
- Vue專案常用總結Vue
- uniapp專案實踐總結(十六)自定義下拉重新整理元件APP元件
- 專案(Explore)總結之專案概述
- Javaweb整理總結JavaWeb
- 專案(Explore)總結之專案風險管理
- 專案(Explore)總結之專案整合管理
- 專案管理之---競投專案總結(轉)專案管理
- vue專案問題總結Vue
- OpenGL ES專案總結一
- 幾次外包專案總結
- MySQL專案實戰總結MySql
- ReactNative 專案工作總結React
- vue個人小專案總結Vue
- 日常專案經驗總結
- React移動專案總結React
- 專案執行及總結
- JavaScript 專案優化總結JavaScript優化
- BPR專案經驗總結
- xPath 用法總結整理