login.jsp
<body>
<form action="/login">
用户名:
<input type="text" name="username">
密码:
<input type="password" name="pass">
<input type="submit">
</form>
<%
//输出错误提示信息
if(request.getAttribute("err")!=null){
out.println(request.getAttribute("err"));
}
%>
</body>
@WebServlet(name="login",urlPatterns="/login")
public class LoginServlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String errMsg="";
RequestDispatcher rd;
String username=request.getParameter("username");
String pass=request.getParameter("pass");
try{
Db db=new Db("com.mysql.jdbc.Driver", "jdbc:mysql://localhost:3306/jdbc", "root", "");
//查询结果集
ResultSet rs=db.query("select pass from tb_user where name=?", username);
if(rs.next()){
if(rs.getString("pass").equals(pass)){
HttpSession session=request.getSession();
session.setAttribute("name", username);
//获取转发对象
rd=request.getRequestDispatcher("welcome.jsp");
rd.forward(request, response);
}else{
errMsg+="用户名和密码不匹配";
}
}else{
errMsg+="您的用户名不符合,请重新输入";
}
}catch(Exception e){
e.printStackTrace();
}
if(errMsg!=null && errMsg.equals("")){
rd=request.getRequestDispatcher("/login.jsp");
request.setAttribute("err", errMsg);
rd.forward(request, response);
}
}
}
package com.xxx.domain;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class Db {
private Connection conn;
private String driver;
private String url;
private String username;
private String pass;
public Db() {
}
public Db(String driver, String url, String username, String pass) {
super();
this.driver = driver;
this.url = url;
this.username = username;
this.pass = pass;
}
public String getDriver() {
return driver;
}
public void setDriver(String driver) {
this.driver = driver;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPass() {
return pass;
}
public void setPass(String pass) {
this.pass = pass;
}
/**
* 获取数据库连接
* @throws SQLException
* @throws ClassNotFoundException
*/
public Connection getConnection() throws SQLException, ClassNotFoundException{
if(this.conn==null){
Class.forName(this.driver);
conn=DriverManager.getConnection(this.url, this.username, this.pass);
}
return conn;
}
/**
* 插入数据
* @param sql
* @param args
* @return
* @throws SQLException
* @throws ClassNotFoundException
*/
public boolean insert(String sql,Object ...args) throws SQLException, ClassNotFoundException{
PreparedStatement pstmt=this.getConnection().prepareStatement(sql);
for(int i=0;i<args.length;i++){
pstmt.setObject(i+1, args[i]);
}
if(pstmt.executeUpdate()!=1){
return false;
}
return true;
}
/**
* 查询数据
* @param sql
* @param args
* @return
* @throws SQLException
* @throws ClassNotFoundException
*/
public ResultSet query(String sql,Object ...args) throws SQLException, ClassNotFoundException{
PreparedStatement pstmt=this.getConnection().prepareStatement(sql);
for(int i=0;i<args.length;i++){
pstmt.setObject(i+1, args[i]);
}
return pstmt.executeQuery();
}
/**
* 更新数据
* @param sql
* @param args
* @return
* @throws SQLException
* @throws ClassNotFoundException
*/
public boolean update(String sql,Object ...args) throws SQLException, ClassNotFoundException{
PreparedStatement pstmt=this.getConnection().prepareStatement(sql);
for(int i=0;i<args.length;i++){
pstmt.setObject(i+1, args[i]);
}
if(pstmt.executeUpdate()!=1){
return false;
}
return true;
}
/**
* 关闭数据库连接
* @throws SQLException
*/
public void closeConn() throws SQLException{
if(conn!=null && !conn.isClosed()){
conn.close();
}
}
}