1. 程式人生 > >jsp學生資訊管理系統(一)

jsp學生資訊管理系統(一)

今天看了java1234網的小鋒老師的jsp實戰專案視訊,做了個簡單的登入驗證,寫的不是很好,有點小問題還沒寫好(密碼或賬號錯誤提示)

資料庫連線類

import java.sql.*;

import java.util.List;


public class ConnDB {
private static String URL = "jdbc:mysql://localhost:3306/db_student";//資料庫連線        "db_student"是資料庫名
private static String USER = "root";//資料庫賬號
private static String PASSWORD = "root";//資料庫密碼
private static Connection conn = null;


public ConnDB() {
try {
Class.forName("com.mysql.jdbc.Driver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}


}
//獲取資料庫連線
public Connection getConnction() {
try {
conn = DriverManager.getConnection(URL, USER, PASSWORD);
} catch (SQLException e) {
e.printStackTrace();
}
return conn;
}
//關閉資料庫連線
public void closeCon(Connection con) throws Exception{
if(con!=null){
con.close();
}

}

//測試連線是否成功

public static void main(String [] args){
ConnDB c= new ConnDB();
try{
c.getConnction();
System.out.print("資料庫連線成功");
}catch(Exception e){
e.printStackTrace();
}

}

}

登入介面

用了jQuery框架來驗證是否為空,長度是否足夠。

resetValue()用於清空輸入框的內容。

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <head>
    <title>學生資訊管理系統</title>
    <script type="text/javascript">
    function resetValue(){
    document.getElementById("username").value="";
    document.getElementById("password").value="";
    }
    </script>
    <script type="text/javascript" src="js/jquery-3.2.1.js"></script>
  </head>
  <body style="background-color:3a7dce">
  <div style="width:1024;height:768;background-image:url(images/login.jpg);margin:0 auto;position:relative">
  <div style="position:absolute;left:280px;top:320px">
  <form name="form1" method="post" action="login">
  <table border="0" cellpadding="5">
    <tr><td align="right">賬&nbsp號</td>
    <td><input type="text" name="username" id="username" value="${uName}" autofocus="autofocus" placeholder="輸入6位的賬號" minlength="6" required="required"></td>
    </tr>
    <tr><td align="right">密&nbsp碼</td>
    <td><input type="password" name="password" id="password" value="${pWd}" autofocus="autofocus" placeholder="輸入的密碼" minlength="6" required="required"></td>
    </tr>
    <tr><td></td><td>&nbsp;<input type="submit" name="submit" value="確定">&nbsp;<input type="button" name="submit2" value="重置" onClick="resetValue()"></td>
    </tr>
    </table>
    </form>
    </div>
    </div>
  </body>
</html>

寫個javaBean類來當資料載體

public class User {
private int id;
private String username;
private String password;

public User(){
super();
}
public User(String username,String password){
super();
this.username=username;
this.password=password;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}

}

資料庫操作類(應該是叫dao層?)

import java.sql.*;

import model.User;

import com.mysql.jdbc.PreparedStatement;

import jdbc_conn.ConnDB;

public class UserchkDao {
 
public User login(Connection con,User user) throws Exception {
User resultUser=null;
String sql="select * from user where username=? and password=?";
PreparedStatement pstmt=(PreparedStatement) con.prepareStatement(sql);
pstmt.setString(1, user.getUsername());
pstmt.setString(2, user.getPassword());
ResultSet rs=pstmt.executeQuery();
if(rs.next()){
resultUser=new User();
resultUser.setUsername(rs.getString("username"));
resultUser.setPassword(rs.getString("password"));

}
return resultUser;

}
}

寫個servlet

一些邏輯操作,用的是post方式提交表單,所以重寫doPost()方法。

import java.awt.Window;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;


import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import jdbc_conn.ConnDB;
import model.User;


import com.mysql.jdbc.StringUtils;


import dao.UserchkDao;


public class login_check_servlet extends HttpServlet {


ConnDB conndb=new ConnDB();
UserchkDao ucd= new UserchkDao();
/**
* Constructor of the object.
*/
public login_check_servlet() {
super();
}


/**
* Destruction of the servlet. <br>
*/
public void destroy() {
super.destroy(); // Just puts "destroy" string in log
// Put your code here
}




public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {


response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");
out.println("<HTML>");
out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");
out.println("  <BODY>");
out.print("    This is ");
out.print(this.getClass());
out.println(", using the GET method");
out.println("  </BODY>");
out.println("</HTML>");
out.flush();
out.close();
}




public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String userName=request.getParameter("username");
String passWord=request.getParameter("password");
request.setAttribute("uName", userName);
request.setAttribute("pWd", passWord);
Connection con=null;
User user=new User(userName,passWord);
try {
con=conndb.getConnction();
User currentUser=ucd.login(con, user);
//User currentUser= new User();
//currentUser=ucd.login(con, user);
if(currentUser==null){
//伺服器跳轉

request.getRequestDispatcher("index.jsp").forward(request, response);
}else{
//客戶端跳轉
response.sendRedirect("calculator.jsp");
}

} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally{
try {
conndb.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}


/**
* Initialization of the servlet. <br>
*
* @throws ServletException if an error occurs
*/
public void init() throws ServletException {
// Put your code here
}


}