75.【JavaWeb-03】(二)

简介: 75.【JavaWeb-03】
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>
相关文章
|
10月前
|
JavaScript 前端开发 Java
JavaWeb02
JavaWeb02
151 0
|
11月前
|
前端开发 网络协议 Java
javaweb的理解
javaweb的理解
67 0
|
Java 应用服务中间件 Maven
73.【JavaWeb-01】(三)
73.【JavaWeb-01】
57 0
|
存储
73.【JavaWeb-01】(六)
73.【JavaWeb-01】
36 0
|
Java
74.【JavaWeb -02】(六)
74.【JavaWeb -02】
33 0
|
网络协议 应用服务中间件
73.【JavaWeb-01】(一)
73.【JavaWeb-01】
43 0
|
前端开发 Java 数据库
75.【JavaWeb-03】(一)
75.【JavaWeb-03】
36 0
|
前端开发 数据安全/隐私保护
75.【JavaWeb-03】(四)
75.【JavaWeb-03】
46 0
|
前端开发 Java
73.【JavaWeb-01】(八)
73.【JavaWeb-01】
40 0
|
Java
74.【JavaWeb -02】(三)
74.【JavaWeb -02】
43 0