jstl

一. MVC

  • 模型(Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
  • 视图(View) - 界面设计人员进行图形界面设计。
  • 控制器(Controller)- 负责转发请求,对请求进行处理。
  • servlet
    • 接收用户请求
    • 视图跳转
  • JSP
    • 显示数据
    • 提供用户操作

二. Filter(过滤器

过滤器

  • 处理垃圾请求
  • 解决乱码问题
1. filter代码

测试解决乱码问题

public class CharacterEncodingFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("filter初始化");
    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html");
        response.setCharacterEncoding("utf-8");

        System.out.println("执行前");
        chain.doFilter(request,response);
        System.out.println("执行后");

    }

    @Override
    public void destroy() {
        System.out.println("filter销毁");
    }
}
2. Servlet代码
public class Servlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.getWriter().write("你好");
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request,response);
    }
}
3. web.xml
    <servlet>
        <servlet-name>Servlet</servlet-name>
        <servlet-class>com.yorha.servlet.Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet</servlet-name>
        <url-pattern>/servlet</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>Servlet01</servlet-name>
        <servlet-class>com.yorha.servlet.Servlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Servlet01</servlet-name>
        <url-pattern>/servlet/show</url-pattern>
    </servlet-mapping>

    <filter>
        <filter-name>filter</filter-name>
        <filter-class>com.yorha.filter.CharacterEncodingFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>filter</filter-name>
        <url-pattern>/servlet/show</url-pattern>
    </filter-mapping>
4. 运行

未经过filter前

输出

调用filter

5. 关闭服务器

三. 监听器

listener读取Session消息

读取当前项目访问人数,局限:未添加手动销毁

1. listener代码
public class Listener implements HttpSessionListener {

    @Override
    public void sessionCreated(HttpSessionEvent se) {
        ServletContext servletContext = se.getSession().getServletContext();

        Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount");

        if (onlineCount == null){
            onlineCount = 1;
        }else {
            int count = onlineCount;
            onlineCount = count+1;
        }
        servletContext.setAttribute("OnlineCount",onlineCount);
    }

    @Override
    public void sessionDestroyed(HttpSessionEvent se) {
        ServletContext servletContext = se.getSession().getServletContext();

        Integer onlineCount = (Integer) servletContext.getAttribute("OnlineCount");

        if (onlineCount == null){
            onlineCount = 0;
        }else {
            int count = onlineCount;
            onlineCount = count-1;
        }
        servletContext.setAttribute("OnlineCount",onlineCount);
    }
}
2. jsp代码
<h3><%=this.getServletConfig().getServletContext().getAttribute("OnlineCount")%></h3>
3. web.xml
<listener>
    <listener-class>com.yorha.listener.Listener</listener-class>
</listener>
4. 运行

初始有三个session,一个可能是浏览器打开时自带,然后一个是此项目

此时清空session

刷新当前页面

OnlineCount的值就变为了四个

posted on 2023-01-09 23:51  lsyorha  阅读(49)  评论(0编辑  收藏  举报