使用servlet完成用户登录(http,servlet生命周期和相关配置,路径编写)

案例实现

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>
	




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值