3.出现500错误的话
如果出现如下的错误: 请删除这一段
4.案列演示
1.首先我们要进行导入filter的包 2.然后我们要引入接口filter== 这个是java-servlt的包别整错了 3.我们设置一个实列类:编写一段中文编码,在我们不设置编码格式的情况下肯定 会乱码的,然后web.xml对这个类进行注册的设置。 4.然后我们在DEMO2这个类中进行继承接口,然后重新三个方法: 第一个是:初始化 第二个是: 写方法,第三个是: 销毁。 5.配置web.xml
chain : 链 1.过滤中的所有代码,在过滤特定请求的时候都会执行 2.必须要让过滤器继续同行,就是 chain.doFilter(request,response); chain.doFilter(request,response); //链的意思: 主要作用就是开启过滤器,如果不写,程序就会被拦截停止。可以写多个过滤器
过滤器Demo1
package com.Jsxs.Filter; import javax.servlet.*; import java.io.IOException; public class Demo1 implements Filter { // web服务器启动的时候,他就开始初始化了 public void init(FilterConfig filterConfig) throws ServletException { System.out.println("初始化的操作"); } // chain /* 1.过滤中的所有代码,在过滤特定请求的时候都会执行 2.必须要让过滤器继续同行,就是 chain.doFilter(request,response); 3. */ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); response.setContentType("text/html;charset=UTF-8"); System.out.println("过滤器执行前..."); chain.doFilter(request,response); //链的意思: 主要作用就是开启过滤器,如果不写,程序就会被拦截停止 System.out.println("过滤器执行后"); } public void destroy() { System.out.println("进行销毁"); } }
Demo2演示的类
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 Demo2 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { // resp.setCharacterEncoding("gbk"); // req.setCharacterEncoding("gbk"); resp.getWriter().write("你好呀,世界!"); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { doGet(req, resp); } }
web.xml配置
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>demo2</servlet-name> <servlet-class>Servlet.Demo2</servlet-class> </servlet> <servlet-mapping> <servlet-name>demo2</servlet-name> <url-pattern>/servlet/show</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>demo2</servlet-name> <url-pattern>/servletshow</url-pattern> </servlet-mapping> <filter> <filter-name>demo1</filter-name> <filter-class>com.Jsxs.Filter.Demo1</filter-class> </filter> <filter-mapping> <filter-name>demo1</filter-name> <!-- 如果是Servlet下的所有目录,都可以用 --> <url-pattern>/servlet/*</url-pattern> </filter-mapping> </web-app>
(十八)、Listener(监听器)
1.利用监听实现在线人数的统计
1.实现一个监听器的接口: (有N种) 2.重载方法 3.配置web.xml文件
package com.Jsxs.Http; import javax.servlet.ServletContext; import javax.servlet.http.HttpSession; import javax.servlet.http.HttpSessionEvent; import javax.servlet.http.HttpSessionListener; public class Demo2 implements HttpSessionListener { @Override public void sessionCreated(HttpSessionEvent se) { HttpSession session = se.getSession(); // 为什么要使用servletContext? 因为能共享 ServletContext servletContext = session.getServletContext(); System.out.println(session.getId()); // 为什么使用Integer? 因为可以判断是否为空,而且可以直接设置 Integer count = (Integer) servletContext.getAttribute("Sum"); if(count==null){ // 赋值的操作 count=new Integer(1); }else { // 转换 int i = count.intValue(); count = new Integer(i + 1); } servletContext.setAttribute("Sum",count); } @Override public void sessionDestroyed(HttpSessionEvent se) { } }
WEB.XML
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"> <servlet> <servlet-name>demo1</servlet-name> <servlet-class>com.Jsxs.Http.Demo1</servlet-class> </servlet> <servlet-mapping> <servlet-name>demo1</servlet-name> <url-pattern>/demo1</url-pattern> </servlet-mapping> <listener> <listener-class>com.Jsxs.Http.Demo2</listener-class> </listener> </web-app>
JSP
<%@ page import="java.util.Date" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>$Title$</title> </head> <body> <div style="color: #073636">在线人数为<span><%=pageContext.findAttribute("Sum")%></span>人</div> <% %> <%-- GMT时间--%> <%=new Date()%>> </body> </html>