实现用户登录界面的实现,用到的知识有1:JAVA;2:JDBC;3:JSP与Servlet;4:mysql;5:HTML脚本语言;6:XML。用到的开发工具:eclipse、mysql数据库、Tomcat服务器、浏览器。用户登录界面的实现可以很好的融合了你学的这些知识,今天只是粗略实现用户登录功能的实现的1.0版本,后期会进行优化。
1:用户登录界面首先是数据库的创建以及用户表的创建。
CREATE DATABASE db_user;
CREATE TABLE t_user(
id INT PRIMARY KEY AUTO_INCREMENT,
userName VARCHAR(20) NOT NULL,
PASSWORD VARCHAR(20) NOT NULL
)
2:在eclipse中创建项目名称JspLogin,并沿用MVC的模式去建立项目。并创建dao包,util包,model包,servlet包。并引进mysql数据库的Jar包在lib目录下。
3:在model包中实现对数据库中id,userName,password字段的封装。
emptypackage com.panli.model;
/**
* 用户model层
* @author Peter
*
*/
public class User {
private int userId;
private String userName;
private String password;
/**
* 父类默认构造方法
*/
public User() {
super();
// TODO Auto-generated constructor stub
}
/**
* 两个参数的构造方法
* @param userName
* @param password
*/
public User(String userName, String password) {
super();
this.userName = userName;
this.password = password;
}
public int getUserId() {
return userId;
}
public void setUserId(int userId) {
this.userId = userId;
}
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;
}
}
4:在util包中实现对数据库的连接。
package com.panli.util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
/**
* 数据库的连接
* @author Peter
*
*/
public class DbUtil {
private String dbUrl = "jdbc:mysql://localhost:3306/db_user";
private String dbUser = "root";
private String dbPassword = "123456";
private String jdbcName="com.mysql.jdbc.Driver";
/**
* 连接数据库
* @return
* @throws Exception
*/
public Connection getConn() throws Exception{
Class.forName(jdbcName);
Connection conn = DriverManager.getConnection(dbUrl, dbUser, dbPassword);
return conn;
}
/**
* 关闭数据库连接
* @param conn
* @throws SQLException
*/
public void closeCon(Connection conn) throws SQLException{
if(conn!=null){
conn.close();
}
}
}
5:在dao包中实现对用户登录的控制。
package com.panli.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import com.panli.model.User;
/**
* 用户登录控制层
* @author Peter
*
*/
public class UserDao {
/**
* 用户登录方法
* @param conn
* @param user
* @return
* @throws SQLException
*/
public User login(Connection conn, User user) throws SQLException{
User resultUser = null;
String loginSql = "select * from t_user where userName=? and password=?";
PreparedStatement pstmt = conn.prepareStatement(loginSql);
pstmt.setString(1, user.getUserName());
pstmt.setString(2, user.getPassword());
ResultSet rs = pstmt.executeQuery();
if(rs.next()){
resultUser = new User();
resultUser.setUserId(rs.getInt("userId"));
resultUser.setUserName(rs.getString("userName"));
resultUser.setPassword(rs.getString("password"));
}
return resultUser;
}
}
6:在servlet包中实现对用户登录信息判断与输出,类似于view层。
package com.panli.servlet;
import java.io.IOException;
import java.sql.Connection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import com.panli.dao.UserDao;
import com.panli.model.User;
import com.panli.util.DbUtil;
public class UserServlet extends HttpServlet{
UserDao userDao = new UserDao();
DbUtil dbUtil = new DbUtil();
/**
*
*/
private static final long serialVersionUID = 1L;
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doPost(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// TODO Auto-generated method stub
String userName = request.getParameter("userName");
String password = request.getParameter("password");
Connection conn = null;
try {
conn = dbUtil.getConn();
User user = new User(userName, password);
User currentUser = userDao.login(conn, user);
if(currentUser==null){
request.setAttribute("user", user);
request.setAttribute("error", "用户名或密码错误");
request.getRequestDispatcher("login.jsp").forward(request, response);
//System.out.println("no");
}else{
//System.out.println("ok");
HttpSession session = request.getSession();
session.setAttribute("currentUser", currentUser);
response.sendRedirect("success.jsp");
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}