JSP
状态码
1xx:信息响应类
2xx:处理成功响应类
3xx:重定向响应类
4xx:客户端错误
5xx:服务端错误
JSP是一个可视化的一个SERVLET
jsp的生命周期
转译 编译 实例 初始 服务 销毁
编译 初始 执行 销毁
JSP三大标签
<%@ 指令
<% java 代码
<%! 声明方法以及属性
<%= 相当于 out.println();
jsp的指令元素 共有三种 @page @include @taglib
@page: 用于设置JSP页面的属性,这些属性将用于和JSP容器通信,控制所生成的servlet结构
@include: 将外部内容包含到JSP文档中
@taglib: 声明用户使用自定义的标签,将标签库描述符文件导入到jsp页面
JSP九大隐式对象
1.request 封装用户请求
2.response 向用户做出响应
3.page JSP页面本身
4.session 客户和服务器间的会话
5.config 包括servlet初始化要用的参数
6.application 于服务器启动时开始运行,用来存放全局变量,在用户间共享
7.out向客户端输出
8.pageContext 用于访问page的各种对象
9.exception 异常
局部页面处理
errorPage 指定当前jsp页面错误的处理
isErorrPage 如果是true 就处理页面的错误信息
静态包含以及动态包含的区别
静态包含:<%@ include file="被包含页面"%>
动态包含:<jsp:include page="被包含页面" flush="true">
被包含的页面 不能加 base 和 响应头
静态包含发生在:JSP---->java文件阶段。动态包含发生在:执行class文件阶段动态加入。
静态包含:只生成一个java文件,
动态包含:生成多个class文件。
值得庆幸的是无论是动态包含还是静态包含,其request对象都是相同的,也就是同一个request
静态包含速度优于动态包含
-----------------------------------------------------------------------------------
jsp 三(4)通讯作用域
pageContext 页面
request 一次沟通
session 包时
application 和服务器一起存亡的。。
el表达式
${} -------是全部都能查找 效率低 依次查找
${作用域Scope.key} --指定作用域 效率高
${pageScope.key}
${requestScope.key}
${sessionScope.key}
${applicationScope.key}
能解析的对象 key value--Object pojo list set map。。。。
----------------------------------------------------------------------------------
jsp 标签 jstl
倒包
<%@ taglib uri="http://java.sun.com/jsp/jstl/core"; prefix="c" %>
<c:if
<c:forEach
<c:choose>
<c:when
------------------------------------------------------------------------------------
Cookie 会话技术
会话数据保存在浏览器客户端
在session中 会话技术的钥匙
技术特点
可以将数据保存在客户端的浏览器中
1 构造cookie 对象
new Cookie();
2 设置cookie
setPath 设置他的cookie 的访问有效路径
setMaxAge 设置cookie 的时间
setValue 设置cookie的值
3 发送cookie 到浏览器保存起来
response.addCookie(cookie名字);
4 服务器接收
Cookie[] request.getCookies();
////////////
获取 cookie
设置的时候 是 key value
取的时候也是
cookie 局限性
1 只能存字符类型 不能保存对象
2 只能存非中文
3 1个cookie容量不能超过4kb 1个站点 最多20个cookie
// tomcat8 的值 不能存储 空格 时间
jsp 获取cookie
function getCookie(name){
var arr, reg = new RegExp("(^| )" + name + "=([^;]*)(;|$)");
if (arr = document.cookie.match(reg)) {
return (arr[2]);
}else{
return null;
}
};
-----------------------------------------------------------------------------------
乱码问题:
1 Tomcat配置中文表单
tomcat目录/conf/server.xml 找到Tomcat的端口号节点加上 URIEncoding="UTF-8"
如: <Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8" />
2.在request 和 response 设置字符编码
如
request.setCharacterEncoding("UTF-8");
response.setCharacterEncoding("UTF-8");
seesion 作用域(浏览器)
默认时间30分钟
时间的限制:优先级(321)
1. 在tomcat——>conf——>servler.xml文件中定义:(第三个tomcat局部)
<Context path="/test" docBase="/test" defaultSessionTimeOut="3600" isWARExpanded="true" isWARValidated="false" isInvokerEnabled="true" isWorkDirPersistent="false"/> defaultSessionTimeOut="3600"
2. 在web.xml中定义:(第二个web.xml局部)
<session-config> <session-timeout>20</session-timeout> </session-config> 分钟
3. 在程序中定义:(第一个servlet局部)
session.setMaxInactiveInterval(30*60);
设置单位为秒,设置为-1永不过期
session 移除
//单个移除
session.removeAttribute("uname");
//全部销毁
// session.invalidate(); //销毁全部session
转发
转发是服务端行为。
转发过程 请求-》调用servlet-》完成处理转发-》把内容返回客户端
1次request,request作用域存在
重定向
重定向是客户端行为
重定向过程 请求-》调用servlet-》发送302给浏览器-》客户端收到302继续请求-》收到服务端返回
2次request,request作用域掉失
===================================
session作用域是默认时间为三十分钟
也可以自己设置时间,单位为秒
转发
在同一个浏览器中
两个页面,互相操作控制
http://127.0.0.1:8090/MyServlet/login.do?userName=小樱&pwd=123456
http://127.0.0.1:8090/MyServlet/main.jsp
两个网址一样的内容
==================================================================================
servlet 一种服务器端Java的应用程序 构造 初始 服务 销毁
filter 过滤器 初始 拦截doFilter() 销毁
listener 监听器 和服务器一起存亡
web.xml 加载的顺序 context-param-listrener-filter-servlet 0-9
interceptpor 拦截器
=================================================================================