JAVA Web基础2-JSP九大内置对象

在jsp开发中会频繁使用到一些对象,如ServletContext HttpSession PageContext等.如果每次我们在jsp页面中需要使用这些对象都要自己亲自动手创建就会特别的繁琐.SUN公司因此在设计jsp时,在jsp页面加载完毕之后自动帮开发者创建好了这些对象,开发者只需要使用相应的对象调用相应的方法即可.这些系统创建好的对象就叫做内置对象.
一.九大内置对象
1、内置对象/作用域:
            1, application ------全局作用域
            2, session ------会话作用域
            3, request ------请求作用域
            4, pageContext ------页面作用域//context:环境,上下文
    内置对象:
            5, response ------响应对象
            6, out ------输出流对象,主要的方法:out.println(a);效果等同于<%=a %>
            7, page ------当前页面对象的实例
            8, exception ------异常对象
            9, config------配置对象,主要分为 ServletConfig/FilterConfig
2、优先级(按照生命周期的长短):
application > session > request > pageContext
3.页面中的form表单提交方式:
    post:提交内容不可见, 没有长度限制
    get:有长度限制, 提交内容在地址栏可见
二.解析九大内置对象
1.request对象
request对象是javax.servlet.httpServletRequest类的实例,该对象代表了客户端的请求信息,主要用于接受通过http协议传送到服务器的数据,(包括头信息、系统信息。请求方式及请求参数等),该对象的生命周期为一次请求。
常用方法:request.getParameter(String name)---获取请求参数name的值,返回类型为String型;
        request.getParameterValues(String name)---获取请求参数为name的数组,返回类型为String[ ]型,类似于复选框;
        request.setAttribute(String,Object)---设置请求作用域中的属性;
        request.getAttribute(String)---获取请求作用域中的属性,返回类型为Object型;
        request.getContextPath()---获取上下文路径;例:/项目名
        request.getRealPath("")---获取传入这个路径的物理路径,即从磁盘开始;
        request.getRemoteAddr()---获取发送此请求的客户端IP地址;例:0:0:0:0:0:0:0:1
        
        request.getServerName()---获取请求服务器的主机名;例:localhost
        request.getServerPort()---获取服务器的端口号;例:8081
        request.getProtocol()---获取请求用的协议类型和版本号;例:HTTP/1.1
        request.getContentLength()---获取请求体的长度,以字节为单位;例:-1
        request.getContentType()---获取请求体的MIME类型;

解决request中出现中文乱码的问题
post方式:通过使用request.setCharacterEncoding("utf-8")来设置(多采用这一种方式)
get方式:通过修改Tomcat服务器中的server.xml配置文件来设置:
    <Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="utf-8" />
2.response对象
是httpServletResponse类的实例,指对客户端的相应,其作用域只在JSP页面有效
常用方法:response.setCharactorEncording("utf-8")---设置相应页面的字符编码;
        response.setContentType("text/html;charset:utf-8")---设置MIME类型请求头;
        response.getWriter().append(String)---向页面输出一段字符串;
3.out对象
可由pageContext.getOut()获得,用于输出信息
out.print 与 response.getWriter()的区别:
response.getWriter():是PrintWriter类(继承自writer类),可直接输出结果,优先于out对象,不会抛出异常;
out对象:是JspWriter类(抽象类),需要先将内容存到缓存区里,当缓存区满了或达到一定条件后才会调用输出方法将内容输出,可采用out.flush()方法刷新缓存区将内容提前输出,会抛出异常;
4.application全局作用域
是servletContext类的实例,其作用周期从服务器的开始到结束,类似于系统的全局变量;
常用方法:setAttribute(String, Object)---设置某个属性和属性值
        getAttribute(String)---获得某个属性的值
        getAttributeNames()---获取application对象中所有的属性名
5.session对象
是httpSession类的实例,当用户第一次访问某个jsp或者servlet的时候, 服务器就会为当前的访问创建一个session, 用于跟踪用户的操作状态,并生成一个sessionId, 每次客户端向服务器发送请求的时候, 都会将这个sessionId带过去进行验证。
生命周期:如果用户不在页面进行各种活动,如链接、增删改查等,或浏览器关闭。session在系统默认30分钟后会自动失效,此时再次访问的时候会创建一个新的session,但是原来的session还会存在, 只不过没有任何请求再带着那个旧的sessionId让服务器去验证了。
常用方法:long  getCreationTime()---返回session对象创建的时间
        String  getId()---返回一个sessionid, 是唯一的
        void  setAttribute()---设置一个属性和一个属性值
        Object  getAttribute()---获取某个属性的属性值
        String[] getValueNames()---以数组的形式获取session对象中所有可用属性的属性名
        setMaxInactiveInterval(int)---设置session经过多长时间之后失效(默认30分钟)
        getMaxInactiveInterval()---获取session的失效时间(单位是秒)
3种销毁session的方法:
                1. 调用session.invalidate()方法;//invalidate:使失效
                2, session自己过期了;
                设置session过期时间也可以在web.xml中设置
                    <session-config>
                        <session-timeout>
                            10<!-- 单位是分钟  -->
                        </session-timeout>
                    </session-config>
                3, 服务器重新启动;
6.config对象
config对象是在一个Servlet初始化时,JSP引擎向它传递信息用的,此信息包括Servlet初始化时所要用到的参数(通过属性名和属性值构成)以及服务器的有关信息(通过传递一个ServletContext对象)config 对象的主要作用是取得服务器的配置信息。通过 pageConext对象的 getServletConfig() 方法可以获取一个config对象。当一个Servlet 初始化时,容器把某些信息通过 config对象传递给这个 Servlet。在web.xml 文件中为应用程序环境中的Servlet程序和JSP页面提供初始化参数。
服务器开启后会先加载WEB-INF(这里面的文件无法直接访问,比较安全)里的web.xml文件
例:这个参数会被保存在application作用域中
<context-param>
    <param-name>admin</param-name>
    <param-value>1234</param-value>
</context-param>
7.pageContext对象
pageContext 对象的作用是取得任何范围的参数,通过它可以获取 JSP页面的out、request、reponse、session、application 等对象。pageContext对象的创建和初始化都是由容器来完成的,在JSP页面中可以直接使用 pageContext对象。
8.page对象
page 对象代表JSP本身,只有在JSP页面内才是合法的。 page隐含对象本质上包含当前 Servlet接口引用的变量,类似于Java编程中的 this 指针。
9.exception对象
exception 对象的作用是显示异常信息,只有在包含 isErrorPage="true" 的页面中才可以被使用,在一般的JSP页面中使用该对象将无法编译JSP文件。excepation对象和Java的所有对象一样,都具有系统提供的继承结构。exception 对象几乎定义了所有异常情况。在Java程序中,可以使用try/catch关键字来处理异常情况; 如果在JSP页面中出现没有捕获到的异常,就会生成 exception 对象,并把 exception 对象传送到在page指令中设定的错误页面中,然后在错误页面中处理相应的 exception 对象。

原文地址:https://www.cnblogs.com/wyc1991/p/9165171.html