登陆逻辑处理+session作用域

BaseDao
session一般是存在浏览器里,从服务器里调取出来以后,下次调取就是直接在session里进行操作。

package com.hr.dao;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;

public class BaseDao {
	static {
		// 导入驱动包jar
		try {
			Class.forName("com.mysql.jdbc.Driver");
		} catch (ClassNotFoundException e) {
			e.printStackTrace();
		}
	}

	// 打开连接
	public static Connection getCon() {
		Connection con = null;
		try {
			// 获取连接对象 DriverManager.getConnection
			// url连接地址 jdbc:mysql://localhost:3306/hrit
			// mysql中自己写的数据库名称 hrit
			// 用户名密码 root : ccat

			// url错误 No suitable driver found for
			// jdbc:msql://localhost:3306/hrit
			// 用户名密码错误 Access denied for user 'oot'@'localhost' (using password:
			// YES)

			// 出现保存乱码请添加
			// ?useUnicode=true&characterEncoding=utf-8
			con = DriverManager
					.getConnection(
							"jdbc:mysql://localhost:3306/zdl?useUnicode=true&characterEncoding=utf-8",
							"root", "ccat");
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return con;
	}

	// 关闭连接
	public static void closeCon(Connection con, PreparedStatement pstat,
			ResultSet rs) {
		try {
			if (rs != null) {
				rs.close();
			}
			if (pstat != null) {
				pstat.close();
			}
			if (con != null) {
				con.close();
			}
		} catch (SQLException e) {
			e.printStackTrace();
		}

	}

	public static void main(String[] args) {
		// com.mysql.jdbc.Connection@16b98e56 返回内存地址
		System.out.println(getCon());
	}

}

登录dao方法

package com.hr.dao;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.hr.entity.Person;

public class PersonDao {

	/**
	 * 查询所有
	 * 
	 * @return
	 */
	public ArrayList<Person> queryAll() {
		ArrayList<Person> list = new ArrayList<Person>();
		Connection con = BaseDao.getCon();
		// con.createStatement();
		PreparedStatement pstat = null;
		ResultSet rs = null;
		try {
			pstat = con.prepareStatement("select * from person");
			rs = pstat.executeQuery();
			while (rs.next()) {
				// char sex = rs.getString("sex").charAt(0);
				list.add(new Person(rs.getInt("id"), rs.getString("name"), rs
						.getInt("age"), rs.getString("sex"), rs
						.getString("pwd")));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			// 关闭
			BaseDao.closeCon(con, pstat, rs);
			return list;
		}
	}

	/**
	 * 验证用户名或者密码
	 * @param name
	 * @param pwd
	 * @return
	 */
	public Person checkUser(String name, String pwd) {
		Person p = null;
		Connection con = BaseDao.getCon();
		PreparedStatement pstat = null;
		ResultSet rs = null;
		try {
			pstat = con
					.prepareStatement("SELECT * FROM person WHERE NAME=? AND pwd=?");
			pstat.setString(1, name);
			pstat.setString(2, pwd);
			rs = pstat.executeQuery();
			if (rs.next()) {
				p = new Person(rs.getInt("id"), rs.getString("name"), rs
						.getInt("age"), rs.getString("sex"), rs
						.getString("pwd"));
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			BaseDao.closeCon(con, pstat, rs);
			return p;
		}

	}
}

实体类

package com.hr.entity;

/**
 * 实体类型
 * 
 * @author Administrator `
 */
public class Person {
	private int id;
	private String name;
	private int age;
	private String sex;
	private String pwd;

	public Person() {

	}

	public Person(int id, String name, int age, String sex, String pwd) {
		super();
		this.id = id;
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.pwd = pwd;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}

	public String getSex() {
		return sex;
	}

	public void setSex(String sex) {
		this.sex = sex;
	}

	public String getPwd() {
		return pwd;
	}

	public void setPwd(String pwd) {
		this.pwd = pwd;
	}

}

serlet文件

package com.hr.servlet;

import java.io.IOException;

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.hr.dao.PersonDao;
import com.hr.entity.Person;

public class LoginServlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		req.setCharacterEncoding("utf-8");
		String name = req.getParameter("name");
		String pwd = req.getParameter("pwd");
		//调用方法验证用户是否成功登录
		PersonDao pd=new PersonDao();
		Person p = pd.checkUser(name, pwd);
		HttpSession session = req.getSession();
		//判断p是否为null
		//如果是null表示登录失败,登录失败给页面传递一个字符串"用户名或者密码错误!"
		if(p==null){
				String msg="用户名或者密码错误";
				req.setAttribute("msg", msg);
				req.getRequestDispatcher("login.jsp").forward(req, resp);
		}else{
				session.setAttribute("p", p);
				//不管是重定向还是转发都不影响session中取值
				resp.sendRedirect("sucess.jsp");
		}
	}
}

查询全部serlet


```java
package com.hr.servlet;

import java.io.IOException;
import java.util.ArrayList;

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.hr.dao.PersonDao;
import com.hr.entity.Person;

public class QueryAllServlet extends HttpServlet {
	@Override
	protected void service(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		// 调用PersonDao的查询方法
		PersonDao pd = new PersonDao();
		ArrayList<Person> list = pd.queryAll();
		// 打包
		//req.setAttribute("list", list);
		//请求对象
		//request
		//响应对象
		//response
		//会话对象
		//session
		
		//那它来保存数据--打包
		HttpSession session = req.getSession();
		session.setAttribute("list", list);
		
		//浏览器如果关闭session会被清除
		
		// 发送
		req.getRequestDispatcher("index.jsp").forward(req, resp);
	}
}
求个关注和收藏。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值