首先声明,通过这个项目主要是想来学习java开发一个小项目的流程,各种包等关于后端的开发,因此对于前端的样式设计等没有介绍,不过在这个项目中关于样式之类的设计用的是EasyUI框架,现在,GO!
一、这个项目要实现什么?
要完成一个项目,你必须先知道这个项目要干什么,要完成什么样的功能,需要什么样的数据,这样我们才能一步步的进行实现。今天要学习的这个项目是学生信息管理,两个功能:班级信息管理和学生信息管理,从这两个功能应该能看到两张数据表:t_grade和t_student,还有两个界面,管理班级信息的页面:gradeInfoManage.jsp以及学生信息管理的页面:studentInfoManage.jsp;同样,我们还需要登录界面index.jsp,登陆成功会跳转到主界面main.jsp,还需要一张数据表t_user用作登录。因此本项目所需数据表3张,4个jsp页面。
二、建立工具包Util
我们会把重复使用的一些操作封装在Util中。
数据库封装:DBUtil.java
package util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DbUtil {
private String dbUrl="jdbc:mysql://127.0.0.1/db_studentsInfo";
private String dbUserName="root";
private String dbPassword="xxxxxx";
private String jdbcName="com.mysql.jdbc.Driver";
/*
* 获取数据库的连接
*/
public Connection getCon() throws ClassNotFoundException, SQLException{
Class.forName(jdbcName);
Connection conn=(Connection) DriverManager.getConnection(dbUrl,dbUserName,dbPassword);
return conn;
}
/*
* 关闭数据库连接
*/
public void close(Connection conn){
if(conn!=null){
try {
conn.close();
conn=null;
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 测试
*/
public static void main(String[] args) {
DbUtil dbUtil=new DbUtil();
try {
dbUtil.getCon();
System.out.println("数据库连接成功");
} catch (ClassNotFoundException | SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
判断字符串就是否为空的封装:StringUtil.java
package util;
/*
* 判断空
*/
public class StringUtil {
public static boolean isEmpty(String str){
if("".equals(str)|| str==null){
return true;
}else{
return false;
}
}
public static boolean isNotEmpty(String str){
if(!"".equals(str)&&str!=null){
return true;
}else{
return false;
}
}
}
三、登录界面的实现
1.在数据库db_studentsinfo中建立第一张数据表t_user,下图是t_user的字段:
建好表以后,插入一条测试数据:
2.数据库的表建好以后紧跟着要做的就是封装数据表的字段,在src下新建model包,封装第一张数据表t_user。
User.java
package model;
public class User {
private String id;
private String userName;
private String password;
public User(String name, String password) {
this.userName=name;
this.password=password;
}
public User(){
}
public User(String id, String userName, String userPassword) {
super();
this.id = id;
this.userName = userName;
this.password = userPassword;
}
public String getId() {
return id;
}
public void setId(String 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;
}
}
3.建立index.jsp这个页面包含两个文本框:输入姓名和输入密码,以及两个按钮确定和重置。
重置按钮:
<input type="button" value="重置" οnclick="resetValue()"/></td>
在点击重置时需要执行方法resetValue(),需要在这个jsp页面实现:
<script type="text/javascript">
function resetValue(){
document.getElementById("userName").value="";
document.getElementById("password").value="";
}
</script>
确定按钮:在点击确定以后,通过form表单提交就可以把我们在前台输入的内容传递到后台。
action表示你要把数据传递到哪里去,我们这里写的login是一个servlet的地址,下面再进行介绍;method表示提交方式,form有两种提交方式,post和get,get不安全,一般都选用post提交。
4.建立处理前台登录数据的Servlet:LoginServlet
(1)先建立Dao包,Dao包就是把对每个数据表的操作进行单独的封装,我们首先封装的是UserDao。
在这个dao里面,我们主要做的就是登录验证,把前台传过来的数据进行验证,如果数据库中有这个用户就允许他登录并且返回这个用户。
package dao;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.mysql.jdbc.PreparedStatement;
import model.User;
/*
* 登录验证
*/
public class UserDao {
public User login(Connection conn,User user) throws SQLException{
User resultUser=null;
String sql="select * from t_user where userName=? and password=?";
PreparedStatement pSta=(PreparedStatement) conn.prepareStatement(sql);
pSta.setString(1, user.getUserName());
pSta.setString(2, user.getPassword());
ResultSet rs=pSta.executeQ