filter简介
Filter中文意思为过滤器。顾名思义,过滤器可在浏览器以及目标资源之间起到一个过战的作用。例如:水净化器,可以看成是生活中的—个过滤器,他可以将污水中的杂质过滤。从而使进入的污水变成净水。
对于WEB应用来说,过滤器是一个驻留在服务器中的WEB组件,他可以截取客户端和WEB资源之间的请求和响应信息。wEB资源可能包括Servlet.JSP.HTML页面等

Filter是Tomcat容器内的过滤器,在请求到达容器是先会调用过滤器,再调用我们的ervlet或者jsp
当服务器收到特定的请求后,会先将请求交给过战器,程序员可以在过滤器中对请求信息进行读取修改等操作,然后将请求信息再发送给目标资源。目标资源作出响应后,服务器会再次将响应转交给过滤器,在过滤器中同样可以对响应信息做一些操作,然后再将响应发送给浏览器。
也就是说过滤器可以在WEB资源收到请求之前,浏览器收到响应之前,对请求和响应信息做一些相应的操作。
在一个WEB应用中可以部署多个过滤器,多个过滤器就组成了一个过滤器链,请求和响应必须在经过多个过滤器后才能到达目标;过滤器不是必须将请求传送到下一个过滤器(或WEB资源),也可以自己来处理请求,发送响应,
package com.yang.filter;
import com.yang.bean.User;
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
@WebFilter("/zhuye.jsp")
public class MyFilter implements Filter {
@Override
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("Filter.....init");
}
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
System.out.println("Filter.....执行过滤");
HttpServletRequest request= (HttpServletRequest) servletRequest;
HttpServletResponse response= (HttpServletResponse) servletResponse;
HttpSession session=request.getSession();
User user= (User) session.getAttribute("user");
if (user!=null){
filterChain.doFilter(servletRequest,servletResponse);
}else{
response.sendRedirect("login.jsp");
}
}
@Override
public void destroy() {
System.out.println("Filter.....destroy");
}
}
修改操作代码
<%--
Created by IntelliJ IDEA.
User: Dell
Date: 2023/2/25
Time: 10:00
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>修改商品信息</title>
</head>
<body>
<h2>商品信息修改</h2>
<form action="update" method="post">
商品编号:<input type="text" name="gid" value="${goods.gid}"readonly="readonly" placeholder="商品编号"></br>
商品名称:<input type="text" name="gname" value="${goods.gname}" placeholder="商品名称"></br>
商品价格:<input type="number" step="0.01" name="price" value="${goods.price}" placeholder="商品价格"><br>
商品说明:<input type="text" name="mark" value="${goods.mark}" placeholder="商品说明">
<input type="submit" value="修改">
</form>
</body>
</html>
package com.yang.servlet;
import com.yang.bean.Goods;
import com.yang.dao.GoodsDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/findById")
public class FinfById extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
int gid=Integer.parseInt(request.getParameter("gid"));
GoodsDao goodsDao=new GoodsDao();
Goods goods=goodsDao.selectById(gid);
if (goods!=null){
request.setAttribute("goods",goods);
request.getRequestDispatcher("showGoods.jsp").forward(request,response);
}else{
request.setAttribute("error_msg","修改出了异常");
request.getRequestDispatcher("error.jsp").forward(request,response);
}
}
}
package com.yang.servlet;
import com.yang.bean.Goods;
import com.yang.dao.GoodsDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/update")
public class UpdateGoods extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request,response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
Goods goods=new Goods();
goods.setGid(Integer.parseInt(request.getParameter("gid")));
goods.setGname(request.getParameter("gname"));
goods.setPrice(Double.parseDouble(request.getParameter("price")));
goods.setMark(request.getParameter("mark"));
System.out.println(goods);
GoodsDao goodsDao=new GoodsDao();
int row= goodsDao.update(goods);
if(row>0){
request.getRequestDispatcher("selectAllGoods").forward(request,response);
}else{
request.setAttribute("error_msg","修改出现了异常");
request.getRequestDispatcher("error.jsp").forward(request,response);
}
}
}
结果



模糊查询操作代码

public List<Goods> seach(String keyword){
List<Goods> goodsList=new ArrayList<>();
try {
Class.forName(driver);
con= DriverManager.getConnection(url,user,password);
String sql="select * from t_goods where gname like concat('%',?,'%')";//concat()函数表示字符串的拼接
pstm=con.prepareStatement(sql);
pstm.setObject(1,keyword);
rs=pstm.executeQuery();
while (rs.next()){
Goods goods=new Goods();
goods.setGid(rs.getInt("gid"));
goods.setGname(rs.getString("gname"));
goods.setPrice(rs.getDouble("price"));
goods.setMark(rs.getString("mark"));
goodsList.add(goods);
}
}catch (Exception e){
e.printStackTrace();
}finally {
try {
if (rs != null) {
rs.close();
}
if (pstm != null) {
pstm.close();
}
if (con != null) {
con.close();
}
} catch (Exception e) {
e.printStackTrace();
}
return goodsList;
}
}
package com.yang.servlet;
import com.yang.bean.Goods;
import com.yang.dao.GoodsDao;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.util.List;
@WebServlet("/seach")
public class Seach extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doPost(request, response);
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
String keyword=request.getParameter("keyword");
GoodsDao goodsDao=new GoodsDao();
List<Goods> goodsList= goodsDao.seach(keyword);
System.out.println("?????????????????????");
System.out.println(goodsList);
HttpSession session=request.getSession();
session.setAttribute("goodsList",goodsList);
response.sendRedirect("zhuye.jsp");
}
}
结果

