关于jsp 的那些事

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 拦截器

 

=================================================================================