JSP+JDBC+servlet+过滤器+cookie完成增删改查

该博客详细介绍了如何利用JSP、JDBC、servlet、过滤器和cookie在MySQL数据库上完成一个简单的会员管理系统。包括创建会员表、用户登录验证、设置cookie、过滤器实现请求和响应的UTF-8编码、查询、修改、添加和删除功能的实现步骤。重点讲解了数据库连接、实体类、DAO、Servlet和过滤器的代码实现。
摘要由CSDN通过智能技术生成

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文件


登录的过滤器主要代码


登录页面


展示页面



增加页面


修改页面


运行效果:

略。。。。。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值