1.1數據庫設計
create table USER_INFO(
id number not null,
name varchar2(20) not null,
pass varchar2(20)
)
insert into USER_INFO values(1,'zhang','121314');
1.2 新建項目
1.2.1 添加項目說需要的包 即連接數據庫的ojdbc的jar包
1.2.2編寫連接數據庫的工具類
package org.user.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class DBUtil {
private static String driver="oracle.jdbc.driver.OracleDriver";
private static String url="jdbc:oracle:thin:@localhost:1521:orcl";
private static String user="yongl";
private static String passwd="121314";
public static Connection getConnection() {
try {
Class.forName(driver);
return DriverManager.getConnection(url, user, passwd);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public static void closeConn(Connection conn,Statement stm , ResultSet rs ) {
if(stm!=null){
try {
stm.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
if(rs!=null){
try{
rs.close();
}catch(SQLException e){
e.printStackTrace();
}
}
}
public static void main(String[] args) {
System.out.println(getConnection());
}
}
運行效果:
連接成功。
1.2.3 編寫實體類
package org.user.entity;
public class User {
private int uid;
private String userName;
private String userPass;
public int getUid() {
return uid;
}
public void setUid(int uid) {
this.uid = uid;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPass() {
return userPass;
}
public void setUserPass(String userPass) {
this.userPass = userPass;
}
@Override
public String toString() {
return "User [uid=" + uid + ", userName=" + userName + ", userPass=" + userPass + "]";
}
}
1.2.4 編寫dao方法
package org.user.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.user.entity.User;
import org.user.util.DBUtil;
public class UserDao {
//根據用戶名查找用戶
public User findUserByName(String userName){
//編寫sql語句
String sql="select * from USER_INFO where name=?";
//獲得連接
Connection conn= DBUtil.getConnection();
//有返回的結果
ResultSet rs= null;
//實例化一個User對象
User user = new User();
try {
//用來發送sql語句的
PreparedStatement ps = conn.prepareStatement(sql);
//設置要傳入的參數,這里是userN
ps.setString(1, userName);
//執行sql語句
rs=ps.executeQuery();
//如果能找到結果
if(rs.next()){
//則把找到的結果一一set進User對象中
user.setUid(rs.getInt(1));
user.setUserName(rs.getString(2));
user.setUserPass(rs.getString(3));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally {//關閉連接
DBUtil.closeConn(conn, null, rs);
}
//最后要把這個user返回出去
return user;
}
//添加用戶
//在這里把整個用戶對象傳進來
public int addUser(User user){
//編寫sql語句
String sql = "insert into USER_INFO values(?,?,?)";
Connection conn= DBUtil.getConnection();
//有返回的結果
ResultSet rs= null;
int i=0;
try {
PreparedStatement ps = conn.prepareStatement(sql);
//這些參數是要保存到數據的
ps.setInt(1, user.getUid());
ps.setString(2, user.getUserName());
ps.setString(3, user.getUserPass());
//執行sql語句
i=ps.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally {
DBUtil.closeConn(conn, null, rs);
}
return i;
}
public static void main(String[] args) {
UserDao dao = new UserDao();
User i = dao.findUserByName("zhang");
System.out.println(i.getUserPass());
}
}
運行結果:
1.2.5 編寫servlet
a)添加用戶的servlet
package org.user.servlet;
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 org.user.dao.UserDao;
import org.user.entity.User;
@WebServlet("/addServlet")
public class AddUserServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//設置編碼
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//獲取從頁面中提交過來的數據
int id = Integer.parseInt(request.getParameter("id")) ;//數據類型轉換
String userName = request.getParameter("name");
String userPass = request.getParameter("pass");
User user = new User();
user.setUid(id);
user.setUserName(userName);
user.setUserPass(userPass);
//調用dao方法
UserDao dao = new UserDao();
int i=dao.addUser(user);
if(i==1){
request.getRequestDispatcher("index.jsp").forward(request, response);
}
}
}
b)查詢用戶的servlet
package org.user.servlet;
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 org.user.dao.UserDao;
import org.user.entity.User;
import org.user.service.LoginService;
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//設置編碼
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
//獲取從頁面中提交過來的數據
String userName = request.getParameter("name");
String userPass = request.getParameter("pass");
LoginService service = new LoginService();
//調用service方法 把用戶名 密碼傳入給service
boolean flag = service.checkUser(userName, userPass);
String msg = flag?"success":"error";
request.setAttribute("msg", msg);
if(msg=="success"){
request.getRequestDispatcher("index.jsp").forward(request, response);
}
else{
System.out.println("賬戶名或密碼錯誤");
}
}
}
service方法
package org.user.service;
import org.user.dao.UserDao;
import org.user.entity.User;
public class LoginService {
public boolean checkUser(String userName, String password) {
//在這里調用dao方法
UserDao dao = new UserDao();
//把名字傳入對象中查詢
User user = dao.findUserByName(userName);
System.out.println(user);
//山木運算 如果找到了user 並且 自己輸入的password 跟數據庫查出來的user.getUserPass() 一致 則返回true 否則返回false
return user != null && password.equals(user.getUserPass()) ? true : false;
/*if(user != null){
if(password.equals(user.getUserPass())){
return true;
}
}
return false;*/
}
}
1.2.6登陸頁面
<head>
<meta charset="utf-8">
<title></title>
</head>
<body >
<form method="post" action="loginServlet">
用戶名:<input type="text" name="name"/><br/><br/>
密碼:<input type="password" name="pass"/><br/><br/>
<input type="submit" >
</form>
</body>
運行效果:
1.2.7注冊頁面
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
<form method="post" action="addServlet">
學號:<input type="text" name="id"/><br/><br/>
姓名:<input type="text" name="name"/><br/><br/>
密碼<input type="password" name="pass"/><br/><br/>
<input type="submit" >
</form>
</body>
</html>