本帖最后由 小石姐姐 于 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();
* 作用范围:多次请求.(一次会话)
|