案例实现
1.文件结构
2.代码实现
package javapack;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.SQLException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class httpservlet extends HttpServlet {
/**
* The doGet method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to get.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
final long serialVersionUID=1L;
//接收表单参数
String username=request.getParameter("username");//通过input的name值获得输入的username
String password=request.getParameter("password");
//封装到实体对象
User user=new User();
user.setUsername(username);//将username与password封装到user对象中
user.setPassword(password);
//调用业务层处理数据
userservice us=new userservice();
try {
User existuser=us.login(user);//将user传入到login方法判断用户是否在数据库中存在
//根据处理结果显示信息(页面跳转)
if(existuser==null){
response.getWriter().println("login fail");
}
else{
response.getWriter().println("login success");
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* The doPost method of the servlet. <br>
*
* This method is called when a form has its tag value method equals to post.
*
* @param request the request send by the client to the server
* @param response the response send by the server to the client
* @throws ServletException if an error occurred
* @throws IOException if an error occurred
*/
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);//post方式和get方式执行同一方法
}
}
package javapack;
public class User {
private String username;
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;
}
private String password;
}
package javapack;
import java.sql.SQLException;
public class userservice {
public User login(User user) throws SQLException{
userdao ud=new userdao();//创建一个数据库访问对象
return ud.login(user);//返回一个user实例
}
}
package javapack;
import java.sql.SQLException;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import utils.c3p0tool;
public class userdao {
public User login (User user)throws SQLException{
//QueryRunner是对sql语句进行操作
QueryRunner qr=new QueryRunner(c3p0tool.getDataSource());//使用DataSource有参构造
String sql="select * from user where username=? and password=?";
//query(sql语句,将查询结果的第一行以user类型返回,参数一,参数二,。。。)
User existuser=qr.query(sql, new BeanHandler<User>(User.class),user.getUsername(),user.getPassword());
return existuser;
}
}
<!DOCTYPE html>
<html>
<head>
<title>MyHtml.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<form action="myhttpservlet" method="post">
姓名 <input name="username" type="text" >
密码 <input name="password" type="password" >
<input type="submit" name="提交">
</form>
</body>
</html>
package utils;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import com.mchange.v2.c3p0.ComboPooledDataSource;
public class c3p0tool {
private static final ComboPooledDataSource datasource=new ComboPooledDataSource("");
public static Connection getConnection(){
Connection con = null;
//
try {
con=datasource.getConnection();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return con;
}
public static void update(String sql,Object...objects) throws SQLException{
Connection con=getConnection();
PreparedStatement prs = con.prepareStatement(sql);
int count=prs.getParameterMetaData().getParameterCount();
for(int i=0;i<count;i++){
prs.setObject(i+1,objects[i]);
}
prs.executeUpdate();
jdbctool.release(prs,con);
}
public static ComboPooledDataSource getDataSource(){
return datasource;
}
}
<?xml version="1.0" encoding="UTF-8"?>
<c3p0-config>
<default-config>
<property name="driverClass">com.mysql.jdbc.Driver</property>
<property name="jdbcUrl">jdbc:mysql://localhost:3306/servlet</property>
<property name="user">root</property>
<property name="password">942686</property>
</default-config>
</c3p0-config>