JSP+JDBC+servlet+过滤器+cookie完成增删改查
1、题目要求:
表要求: 在mysql数据库中创建表t_member,并随机随便插入15条数据 (5分)
表中字段:
会员编号id
会员名称username
会员密码password
会员电话tel
会员性别sex(性别用单选按钮)
会员简介content(简介用文本域)
出生日期datea
会员爱好hobby(会员爱好是复选框,爱好有购物、音乐、跑步、游戏)
(字段均不可为空,id主键自增)
需求要求:
a) 在项目index.jsp页面中写用户登录,输入用户名和密码,表单提交到LoginServlet,在LoginServlet中进行判断,密码匹配,去ListServlet,不匹配去返回index.jsp
c) 当登录密码匹配时候,书写cookie,把用户名和密码存入cookie中,
1)设置用户名称的cookie过期时间2小时,密码的cookie的过期时间半小时,
2)用户名的cookie能支持存放中文
b) 登录页面中可以正确的取出cookie,将用户名和密码显示在输入框中,正确的显示中文的用户名
2) 在项目中新建过滤器EncodeFilter,过滤request和response的编码为UTF-8
3) 新建ListServlet,查询出表中的所有数据
a) 数据在页面显示时候,id最大的显示在第一条
b) 展示在WEB-INF/view/user_list.jsp中
4) 修改功能
a) 修改回显功能
b) 修改功能
实现步骤:
1、创建数据库表
2、创建一个web项目
3、导入数据库连接包
4、编写实体类 dao servlet等后台代码
5、编写页面JSP文件:
6、具体代码如下
a)实体类
b)dao代码
public class Dao {
public List<Member> cha() {
// 创建集合
List<Member> list = new ArrayList<Member>();
try {
Connection con = JdbcUtil.getCon();
// sql语句
PreparedStatement pr = con
.prepareStatement("select * from t_Member order by id desc");
ResultSet exe = pr.executeQuery();
// 遍历集合
while (exe.next()) {
int id = exe.getInt("id");
String username = exe.getString("username");
String password = exe.getString("password");
String tel = exe.getString("tel");
String sex = exe.getString("sex");
String content = exe.getString("content");
String datea = exe.getString("datea");
String hobby = exe.getString("hobby");
String area = exe.getString("area");
// 创建一个对象
Member m = new Member(id, username, password, tel, sex, content, datea, hobby, area);
// 将对象放入集合
list.add(m);
}
// 返回集合
return list;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 修改
*/
public int update(Member m) {
int i = 0;
try {
Connection con = JdbcUtil.getCon();
// sql语句
PreparedStatement pr = con
.prepareStatement("update t_member set username=?,password=?,tel=?,sex=?,content=?,datea=?,hobby=?,area=? where id=?");
pr.setString(1, m.getUsername());
pr.setString(2, m.getPassword());
pr.setString(3, m.getTel());
pr.setString(4, m.getSex());
pr.setString(5, m.getContent());
pr.setString(6, m.getDatea());
pr.setString(7, m.getHobby());
pr.setString(8, m.getArea());
pr.setInt(9, m.getId());
i = pr.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return i;
}
/**
* 增加
*/
public int add(Member m) {
int i = 0;
try {
Connection con = JdbcUtil.getCon();
// sql语句
PreparedStatement pr = con
.prepareStatement("insert into t_member (username,password,tel,sex,content,datea,hobby,area) values (?,?,?,?,?,?,?,?)");
pr.setString(1, m.getUsername());
pr.setString(2, m.getPassword());
pr.setString(3, m.getTel());
pr.setString(4, m.getSex());
pr.setString(5, m.getContent());
pr.setString(6, m.getDatea());
pr.setString(7, m.getHobby());
pr.setString(8, m.getArea());
i = pr.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return i;
}
/**
* 删除
*/
public int delete(int id) {
int i = 0;
try {
Connection con = JdbcUtil.getCon();
// sql语句
PreparedStatement pr = con
.prepareStatement("delete from t_member where id=?");
pr.setInt(1, id);
i = pr.executeUpdate();
} catch (Exception e) {
e.printStackTrace();
}
return i;
}
/**
* 登录
* @param username
* @param password
* @return
*/
public Member login(String uname, String pwd) {
Connection conn = JdbcUtil.getCon();
String sql = "select * from t_member where username = ? and password = ?";
PreparedStatement ps = null;
ResultSet set = null;
Member m=null;
try {
ps= conn.prepareStatement(sql);
ps.setString(1, uname);
ps.setString(2, pwd);
set = ps.executeQuery();
while(set.next()){
String username = set.getString("username");
String password = set.getString("password");
m=new Member(username, password);
}
return m;
} catch (SQLException e1) {
e1.printStackTrace();
}
return null;
}
}
c)servlet代码
登录:
request.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
String username = request.getParameter("username");
String password = request.getParameter("password");
HttpSession session = request.getSession();
Dao dao=new Dao();
Member m = dao.login(username,password);
if(m!=null){
//对中文用户名进行转码
String encode = URLEncoder.encode(username, "UTF-8");
//将用户名密码存入到Cookie中
Cookie cookiename=new Cookie("cookiename", encode);
Cookie cookiepassword=new Cookie("cookiepassword", password);
//设置用户名称的cookie过期时间2小时,密码的cookie的过期时间半小时
cookiename.setMaxAge(60*60*2);
cookiepassword.setMaxAge(60*30);
//将cookie的携带路径:request.getContextPath()拿到的是web项目的根路径
cookiename.setPath(request.getContextPath());
cookiepassword.setPath(request.getContextPath());
//发送cookie
response.addCookie(cookiename);
response.addCookie(cookiepassword);
//将用户名密码存入session
session.setAttribute("member", m);
//成功
request.getRequestDispatcher("ShowServlet").forward(request, response);
//response.sendRedirect(request.getContextPath());
}else{
//失败
response.sendRedirect("index.jsp");
}
}
查询展示:
增加:
修改:
删除:
d)util工具类
public class JdbcUtil {
public static Connection getCon() {
try {
//加载数据库驱动
Class.forName("com.mysql.jdbc.Driver");
//连接数据库
Connection con = DriverManager.getConnection("jdbc:mysql:///yuekao", "root", "123456");
return con;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
}
e)filter过滤器
web.xml文件
登录的过滤器主要代码
登录页面
展示页面
增加页面
修改页面
运行效果:
略。。。。。。。