码迷,mamicode.com
首页 > 编程语言 > 详细

java:(九大内置对象,计算服务器访问次数,filter过滤器)

时间:2017-07-28 20:08:16      阅读:255      评论:0      收藏:0      [点我收藏+]

标签:cte   override   xsd   enc   sch   art   java   system   config   

1.九大内置对象:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page isErrorPage="true" %><!-- 默认是隐藏的false -->
<%@ page session="true" %><!-- session默认是显示的true -->

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP ‘index.jsp‘ starting page</title>
</head>

<body>

    <%
        application.setAttribute("name", "zhangsan");
    %>

    <%=session.getAttribute("name")%>
    <pre>
    
        jsp的四大作用域:servlet和servlet之间的参数传递
            setAttribute()// 存储变量
            getAttribute()// 获取变量
            removeAttribute()// 移除变量
          application:(应用)(一般情况下,存储的是字典表中的信息)
              就作用于整个项目,存储一些和项目相关的信息(比如省市区这些信息)(字典表)
              当服务器(tomcat)启动的时候application就已经被创建并初始化,而且所有的用户都共享同一个application
              直到服务器(tomcat)关闭时候,才会被销毁
              作用域:整个项目
              生命周期:当服务器(tomcat)启动的时候,就会被创建,当服务器关闭的时候就会被销毁
              
          request:(一次请求)(一般情况下,存储一些需要请求转发的信息)
              作用域:一次请求
              生命周期:一次请求以及所有通过请求转发(request.getRequestDispatcher().forward(request, response))的页面,直到页面跳转和重定向
              
          session:(一次会话)(一般情况下,存储和用户相关的信息)
              作用域:请求和响应
              生命周期:当发送一次请求,session就会被创建,当关闭浏览器或者关闭服务器的时候session就会被销毁
              
          pageContext:(页面的上下文)(就是当前页面)(一般情况下,存储临时变量)(不使用)
              作用域:当前页面
              生命周期:从页面访问开始到当页面跳转结束
              pageContext召唤另外八个神兽
              
           从小到大排序:
              pageContext--->request--->session--->application
              
              
          九大内置对象(内键对象):
              直接可以使用,无需创建的对象就称之为内置对象
              *request
                  请求信息
              *response
                  响应信息response.getWriter().print();
              *session
                  一次会话(一般存储用户相关的信息)
              (*)application
                  作用于整个项目
              pageContext
                  页面上下文(和页面有关的数据(临时数据))
              config(绝对不能动(当前jsp的配置信息(servlet的配置信息)))
                  配置信息
              out
                  打印的信息
              page
                  当前页面的信息
              exception:默认是隐藏的,如果需要显示< % @ page isErrorPage="true" % >
                  异常信息
              
              
              4(作用域)+2(输出)+3(打酱油)
              pageContext--request--session--application
             
         response--out
         page--config--exception
</pre> <% request.setAttribute("name", "zhangsan"); session.setAttribute("name", "lisi"); application.setAttribute("name", "wangwu"); pageContext.setAttribute("name", "zhaoliu"); // 如果使用el表达式取值的情况下,pageContext--${pageScore.property } %> ${pageScope.name } </body> </html>

 

2.计算服务器访问次数:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP ‘app.jsp‘ starting page</title>


</head>

<body>

    <%
        Integer count = (Integer) application.getAttribute("count");
        if (count == null) {
            count = 1;
        } else {
            count++;
        }
        application.setAttribute("count", count);
    %>

    我一共被访问<%=application.getAttribute("count")%></body>
</html>

 

3.filter:

 

  index主页:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>

<title>My JSP ‘index.jsp‘ starting page</title>
</head>
<body>
    <pre>
      
          filter:
              过滤器:通过访问路径进行拦截
              作用:防止恶意访问,未登录的情况下访问用户信息,用户订单。。
              
              生命周期:
                  当服务器(tomcat)启动的时候,就被初始化,当服务器关闭的时候会被销毁,有且只被创建一个对象(单例模式)
              
              建立Class(FilterClass)--->实现Filter接口(javax.servlet.Filter)---->重写init方法,destroy方法,doFilter方法---->在doFilter方法中chain.doFilter(request, response):当第一次被过滤后放行,在chain.doFilter()方法之后的代码会进行二次过滤
              特点:如果有多个filter同时过滤的话,正着进倒着出
              加载顺序:在web.xml中配置先后顺序进行加载
              如果一个项目有多个配置:
                  filter配置顺序:
                      首先一定要配置filter,其次配置listener(监听:监听一定要配在filter之后,servlet之前),最后配置servlet
      
      
      </pre>
</body>
</html>

 

  web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    id="WebApp_ID" version="3.0">
    <display-name>20170728_filter</display-name>

    <filter>
        <filter-name>shiwei</filter-name>
        <filter-class>cn.zzsxt.lee.web.filter.ShiweiFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>shiwei</filter-name>
        <!-- <url-pattern>/visitKing.huanggong</url-pattern>/*, *.xxx, /xxx, /xxx/*
        <url-pattern>/visitKing.weifusifang</url-pattern>
        <url-pattern>/visitKing.yuhuayuan</url-pattern>
        <url-pattern>/visitKing.tiantan</url-pattern> -->
        <servlet-name>king</servlet-name>
    </filter-mapping>
---------------------------------------------------------------------------------------------------------
    <filter>
        <filter-name>wuqi</filter-name>
        <filter-class>cn.zzsxt.lee.web.filter.WuqiFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>wuqi</filter-name>
        <url-pattern>/*</url-pattern>   <!-- /*, *.xxx, /xxx, /xxx/* -->
    </filter-mapping>
----------------------------------------------------------------------------------------------------------
    <filter>
        <filter-name>anqi</filter-name>
        <filter-class>cn.zzsxt.lee.web.filter.AnqiFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>anqi</filter-name>
        <url-pattern>*.huanggong</url-pattern>   <!-- /*, *.xxx, /xxx, /xxx/* -->访问方式
    </filter-mapping>






    <servlet>
        <servlet-name>king</servlet-name>
        <servlet-class>cn.zzsxt.lee.web.servlet.KingServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>king</servlet-name>
        <url-pattern>/visitKing.huanggong</url-pattern>
        <url-pattern>/visitKing.weifusifang</url-pattern>
        <url-pattern>/visitKing.yuhuayuan</url-pattern>
        <url-pattern>/visitKing.tiantan</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>queen</servlet-name>
        <servlet-class>cn.zzsxt.lee.web.servlet.QueenServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>queen</servlet-name>
        <url-pattern>/visitQueen.huanggong</url-pattern>
    </servlet-mapping>

    <servlet>
        <servlet-name>nine</servlet-name>
        <servlet-class>cn.zzsxt.lee.web.servlet.NineServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>nine</servlet-name>
        <url-pattern>/visitNine.huanggong</url-pattern>
    </servlet-mapping>



    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>
</web-app>

  Filter Class:

package cn.zzsxt.lee.web.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;

// filter特点:过滤的时候是正着进去,倒着出来
// filter特点:根据web.xml配置的先后顺序进行加载
// filter特点:在web.xml中,首先要对filter进行配置,然后再对Listener(监听:监听一定要配置在filter之后和servlet之前)进行配置,最后对servlet进行配置
public class WuqiFilter implements Filter {

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
            throws IOException, ServletException {
        System.out.println("只要你一进来,我就要检查你身上是否携带武器");
        chain.doFilter(request, response);// 如果没有这个方法,需要访问的路径就永远无法访问
        // 在chain.doFilter()以后的代码,是为了进行二次过滤
        System.out.println("你现在要出去啦,别带着宫女跑了");
    }

    @Override
    public void init(FilterConfig config) throws ServletException {
        System.out.println("你进来了,我就要上班了");
    }

    @Override
    public void destroy() {
        System.out.println("我也很累,我需要换岗");
    }

}

  Servlet:

package cn.zzsxt.lee.web.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class KingServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        System.out.println("测试");
    }

}

 

java:(九大内置对象,计算服务器访问次数,filter过滤器)

标签:cte   override   xsd   enc   sch   art   java   system   config   

原文地址:http://www.cnblogs.com/kuangzhisen/p/7252274.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!