利用Spring-MVC訪問資料庫
阿新 • • 發佈:2018-11-09
1、建立相關的專案。首先相關路徑,在pom.xml中新增具有Spring-mvc、mysql、dbcp的三個包。
2、首先建立Admin類與資料庫資訊對應。
2.1、資料庫:
2.2、 jdbc-properties(名稱不可改變) user是資料庫名
url=jdbc:mysql://localhost:3306/user?useUnicode=true&characterEncoding=utf-8 driverClass=com.mysql.jdbc.Driver user=root password=123456 maxActive=1 initSize=1
2.3、Admin類
package com.zhiyou100.dao; import java.io.Serializable; public class Admin implements Serializable{ /** * */ private static final long serialVersionUID = 1L; private String adminId; private String password; private String telephone; private String adminCode; private String name; public Admin(String adminId, String password, String telephone, String adminCode, String name) { super(); this.adminId = adminId; this.password = password; this.telephone = telephone; this.adminCode = adminCode; this.name = name; } public Admin(String password, String telephone, String adminCode, String name) { super(); this.password = password; this.telephone = telephone; this.adminCode = adminCode; this.name = name; } public Admin() { super(); } public String getAdminId() { return adminId; } public void setAdminId(String adminId) { this.adminId = adminId; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getTelephone() { return telephone; } public void setTelephone(String telephone) { this.telephone = telephone; } public String getAdminCode() { return adminCode; } public void setAdminCode(String adminCode) { this.adminCode = adminCode; } public String getName() { return name; } public void setName(String name) { this.name = name; } }
3.建立AdminDao介面,為通過findByCode方法,實現與資料庫連線、查詢操作。
package com.zhiyou100.dao;
public interface AdminDao {
Admin findByCode(String adminCode);
}
4、建立AdminDaoImp類實現AdminDao介面的方法
package com.zhiyou100.dao; import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import javax.annotation.Resource; import org.apache.tomcat.dbcp.dbcp.BasicDataSource; import org.springframework.stereotype.Repository; import java.sql.PreparedStatement; @Repository public class AdminDaoImp implements AdminDao { //注入資料來源 @Resource private BasicDataSource ds; public Admin findByCode(String adminCode) { if(adminCode==null) { return null; } Connection conn=null; try { conn=ds.getConnection(); String sql="select *from user where adminCode=?"; PreparedStatement ps = conn.prepareStatement(sql); ps.setString(1, adminCode); ResultSet rSet=ps.executeQuery(); if(rSet.next()) { Admin admin=new Admin(); admin.setAdminCode(rSet.getString("adminCode")); admin.setAdminId(rSet.getString("adminId")); admin.setName(rSet.getString("name")); admin.setPassword(rSet.getString("password")); admin.setTelephone(rSet.getString("telephone")); return admin; } } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); }finally { try { conn.close(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } return null; } }
5、建立LoginService,利用LoginService邏輯判斷是否登入成功
package com.zhiyou100.service;
import com.zhiyou100.dao.Admin;
//利用LoginService邏輯判斷是否登入成功
public interface LoginService {
Admin checkAdmin(String adminCode,String password);
}
6、建立LoginServiceImpl的類實現LoginService,判斷是否登入成功
package com.zhiyou100.service;
import javax.annotation.Resource;
import org.omg.CORBA.PRIVATE_MEMBER;
import org.omg.CORBA.PUBLIC_MEMBER;
import org.springframework.stereotype.Service;
import com.zhiyou100.Exception.AdminCodeException;
import com.zhiyou100.Exception.PasswordException;
import com.zhiyou100.dao.Admin;
import com.zhiyou100.dao.AdminDao;
@Service
public class LoginServiceImpl implements LoginService {
@Resource
private AdminDao adminDao;
public Admin checkAdmin(String adminCode, String password)
throws PasswordException, AdminCodeException {
Admin admin = adminDao.findByCode(adminCode);
if (admin == null) {
throw new AdminCodeException("賬號出錯");
} else if (!admin.getPassword().equals(password)) {
throw new PasswordException("密碼出錯");
} else {
return admin;
}
}
}
7.在執行過程中會有異常的出現,所以處理異常
AdminCodeException異常
package com.zhiyou100.Exception;
/**
* @author Administrator
*
*/
public class AdminCodeException extends RuntimeException{
public AdminCodeException(String message) {
super(message);
}
}
PasswordException異常
/**
*
*/
package com.zhiyou100.Exception;
/**
* @author Administrator
*
*/
public class PasswordException extends RuntimeException{
public PasswordException(String message) {
super(message);
}
}
8.建立LoginContrller類,約定方法可以返回一個ModelAndView物件,封裝了處理結果資料和檢視名稱資訊。
package com.zhiyou100.etity;
import javax.annotation.Resource;
import javax.servlet.http.HttpSession;
import org.apache.tomcat.dbcp.dbcp.BasicDataSource;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import com.zhiyou100.Exception.AdminCodeException;
import com.zhiyou100.Exception.PasswordException;
import com.zhiyou100.dao.Admin;
import com.zhiyou100.service.LoginService;
@Controller
@RequestMapping("/login")
public class LoginContrller {
@Resource
private LoginService loginService;
@RequestMapping("/toLogin.do")
public String toLogin() {
return "main/login";
}
@RequestMapping("/toIndex.do")
public String toIndex() {
return "main/index";
}
@RequestMapping("/checkLogin.do")
public String checkLogin(HttpSession session,
String adminCode,
String password,
ModelMap model) {
try {
Admin admin=loginService.checkAdmin(adminCode, password);
//登入成功後,把使用者資訊放進Session中
session.setAttribute("admin",admin);
} catch (AdminCodeException e) {
// TODO: handle exception
model.addAttribute("message",e.getMessage());
model.addAttribute("adminCode", adminCode);
model.addAttribute("password", password);
return "main/login";
}
catch (PasswordException e) {
// TODO: handle exception
model.addAttribute("message",e.getMessage());
model.addAttribute("adminCode", adminCode);
model.addAttribute("password", password);
return "main/login";
}
//登入成功後重定向到主介面
return "redirect:toIndex.do";
// BasicDataSource
}
}
9.在WEB-INF 下建立對應的jsp.
在執行後,輸入相應的網址eg:login/toLogin.do ,login/toIndex.do,login/checkLogin會跳轉到相對的jsp.
剛開始寫部落格,有錯誤的地方,歡迎指出!
不喜勿噴!!!