黑马程序员技术交流社区

标题: 【石家庄校区】Servlet阶段--JSTL [打印本页]

作者: 暖羊羊    时间: 2018-2-4 19:35
标题: 【石家庄校区】Servlet阶段--JSTL
本帖最后由 小石姐姐 于 2018-2-8 16:09 编辑

Servlet阶段--JSTL
jsp--(html + java + 内置对象 + 指令 + 动作标签)

<%   %>service方法内部

<%!  %>成员位置

<%=  %> out.println(),输出语句不能加分号

三大指令

page

ContxtType:设置浏览器打开的编码

pageEncoding:用来设置JSP生成servlet保存时用的编码

import:用来导包的,可以出现多个

include

属于静态包含:将其他页面页面包含进来(相当于复制)

file:用的相对路径

taglib

引入标签库(JSTL)

内置对象 (9个)

1.request           真实对象HttpServletRequest

  作为域对象   获取客户机相关的信息(请求方式,请求路径,请求的id地址,请求头,)

2.session           真实对象HttpSession   可以在page指令里控制开启和关闭

    作为域对象--->会话技术

     注意:需要使用一把钥匙才能打开session,这个钥匙其实就是Cookie这个           cookie 的名字是JSESSIONID

3.application      真实对象ServletContext

      (1)获取全局参数 (2)获取mime类型 (3)作为全局域对象  (4) 读取web的资源      文件

4.pageContext   真实对象pageContext

    (1).获取其他八个内置对象

    (2).可以向四个域中存储东西

                requestScope

                sessionScope

                applicationScope

                pageScope

   (3).findAttribute --->从小范围开始找

5.config              真实对象ServletConfig

6.response         真实对象HttpServletResponse

(1).设置响应头

(2).设置响应体

(3).设置状态码

7.page               真实对象Object

          了解一下,他代表的就是jsp生成Servlet的对象,他是单例的

8.exception        真实对象Throwable



9.out                  真实对象JspWriter

         JSPWriter  和  response.getWriter()是有区别的

                        response.getWriter()才能正真的设置响应体


1.el

        叫做表达式语言 语法:${ EL表达式 }

        

        作用:简化jsp中有些代码

                1.获取四个域对象中的数据${ 属性名|变量名 }

                2.执行普通的运算(逻辑运算,关系运算,三元运算...)

                3.操作el中的对象(十一个内置对象)

                        1.四个域  pageScope  requestScope sessionScope applicationScope

                        2.一对专门用来接受参数 param, paramValues

                        3.获取请求头的一对: header  headerValues

                        3.获取全局参数:   initParam

                        4.获取cookie:     cookie.库克的名称

                        5.pageContext:    可以获取jsp中其他八个内置对象

                                获取工程名:  pageContext.request.contextPath

                                

                4调用java的代码,需要自定义标签库(目前先放一放)

2.jstl

        jsp standard tag lib

        标签库需要引入

                <%@ taglib uri ="地址"   prefix="缩写"%>

        核心标签库:

                1.0和1.1,1.2

                1.1,1.2是支持el表达式

                c:if 可以条件的筛选

属性:test

                c:set(了解)

                c:out(了解一下)

                c:forEach

                        var --->遍历出的元素的变量名

                        items--->要遍历的对象

                        begin

                        end

                        step

                        varStatus

        函数库

                就是处理字符串相关的东西

                ${ fn:split  }

                ${ fn:subString }


Servlet的生命周期

生命周期:就是一个对象从创建到销毁的过程.

Servlet生命周期:Servlet从创建到销毁的过程.

* 何时创建:用户第一次访问Servlet创建Servlet的实例

* 何时销毁:当项目从服务器中移除的时候,或者关闭服务器的时候.

Servlet默认是在第一次访问的时候创建的.现在让Servlet在服务器启动的时候创建好.进行对Servlet的配置:

在web.xml中在<servlet></servlet>标签中配置:

* <load-on-startup>2</load-on-startup>  --- 传入正整数,整数越小,被创建的优先级就越高.



ServletContext:(重要)

有四个作用

1.用来获得全局初始化参数.

2.用来获得文件的MIME的类型.

3.作为域对象存取数据.

       作用范围:整个web工程.

    * 创建:服务器启动的时候,tomcat服务器为每个web项目创建一个单独ServletContext对象.

    * 销毁:服务器关闭的时候,或者项目从服务器中移除的时候.

4.用来读取web项目下的文件.

response

处理中文乱码:

字节流:

设置浏览器默认打开编码

response.setHeader("Content-Type", "text/html;charset=UTF-8");

中文转成字节数组编码

response.getOutputStream().write("王守义".getBytes("UTF-8"));

字符流:

设置response的缓冲区的编码

response.setCharacterEncoding("UTF-8");

设置浏览器默认打开的编码.

response.setHeader("Content-Type", "text/html;charset=UTF-8");

response.setContentType("text/html;charset=UTF-8");相当于上面两句

文件下载两种方式:

一种:超链接方式.(不推荐)

    * <a href=”aa.zip”>下载</a>

    * <a href=”1.jpg”>下载</a>

二种:手动编码方式完成文件下载.

    * 设置两个头和一个流:

    * Content-Type:文件MIME的类型.

    * Content-Dispostion:

    * 文件的输入流:

request:也是域对(set,get,removeAttribute)

1.获得客户机信息:

getMethod(); ---获得请求方式.

* getQueryString(); ---获得请求路径后的参数.

* getRemoteAddr(); ---获得客户机的IP地址.

* getRequestURI(); ---获得请求的路径

* getRequestURL(); ---获得请求的路径

* getContextPath(); ---获得工程名

2. 获得请求头:

getHeader()

或得参数:

getParameter(String name);

getParameterMap();

request.getParameterValues(String name);

会话技术:

什么是会话 :用户打开一个浏览器访问页面,访问网站的很多页面,访问完成后将浏览器关闭的过程称为是一次会话.

常见的会话技术:

* Cookie :将数据保存到客户端浏览器.

* Session :将数据保存到服务器端.

Ø Cookie的常用的API:

* getName();

* getValue();

* setDomain(String domain); -- 设置Cookie的有效域名. //  www.baidu.com  music.baidu.com

* setPath(String path); -- 设置Cookie的有效路径.

* setMaxAge(int maxAge); -- 设置Cookie的有效时间.

【Session的概述】(域对象)

Ø 使用Session:

* 获得Session:

* request.getSession();

session何时创建和销毁?作用范围:

* 创建:服务器端第一次调用getSession()创建session.

* 销毁:三种情况销毁session:

    * 1.session过期. 默认过期时间为30分钟.

    * 2.非正常关闭服务器.如果正常关闭session序列化到硬盘.

    * 3.手动调用session.invalidate();

* 作用范围:多次请求.(一次会话)






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2