- 老规矩,还是先导入所需要的jar的依赖包
<!-- jsp标签-->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.2</version>
</dependency>
<!-- jstl依赖表达式-->
<dependency>
<groupId>javax.servlet.jsp.jstl</groupId>
<artifactId>jstl-api</artifactId>
<version>1.2</version>
</dependency>
<!-- standard标签库-->
<dependency>
<groupId>taglibs</groupId>
<artifactId>standard</artifactId>
<version>1.1.2</version>
</dependency>
<!-- servlet依赖-->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
</dependency>
2.这个是项目的目录
3.编写我们的servlet
这里我们继承了HttpServlet,实现了Servlet里面的两个dopost和doget方法
package servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class ShowServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().write("原来是周大头鸭!");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req,resp);
}
}
4.编写过滤器
这里需要注意的是实现filter接口
导入的包是import javax.servlet.*,千万不能将包导入错误,不然会报错
package filter;
import javax.servlet.*;
import java.io.IOException;
public class ServletFilter implements Filter {
public void init(FilterConfig filterConfig) throws ServletException {
System.out.println("过滤器初始化");
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException {
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
response.setContentType("text/html;charset=UTF-8");
System.out.println("执行前");
filterChain.doFilter(request, response);
System.out.println("执行后");
}
public void destroy() {
System.out.println("过滤器销毁");
}
}
5.编写我们的web.xml文件
<servlet>
<servlet-name>servlet</servlet-name>
<servlet-class>servlet.ShowServlet</servlet-class>
</servlet>
<!-- 这里是一个请求/servlet/show-->
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/servlet/show</url-pattern>
</servlet-mapping>
<!-- 这里是一个请求/show-->
<servlet-mapping>
<servlet-name>servlet</servlet-name>
<url-pattern>/show</url-pattern>
</servlet-mapping>
<filter>
<filter-name>encoding</filter-name>
<filter-class>filter.ServletFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<!-- 这里会过滤请求路径含有/servlet-->
<filter-mapping>
<filter-name>encoding</filter-name>
<url-pattern>/servlet/*</url-pattern>
</filter-mapping>
这里需要注意的是有两个请求,一个是/servlet/show还有一个是/show
这两个请求都能访问到ShowServlet,但是在我们的过滤器当中,我们配置了/servlet/*
说明有/servelet才会被过滤,而/show没有被过滤,没有经过ServletFilter,
/servlet/show经过了过滤器,所以会经过过滤器
6.下面我们来访问/servlet/show和/show这两个请求
7.一个乱码了,另一个被过滤器接收,并且过滤了乱码的问题
8.同学们可以去实践了