关于jsp 的那些事

4 篇文章 0 订阅
3 篇文章 0 订阅

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

 

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

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在Spring MVC中,JSP页面是作为视图层来展示数据的。JSP页面依赖于以下几个方面: 1. 控制器(Controller):控制器负责处理用户请求并返回相应的数据和视图。在Spring MVC中,控制器使用注解或配置文件来映射请求URL,并将数据存储在ModelAndView对象中,然后将其传递给视图层。 2. 模型(Model):模型是用于存储数据的对象。在Spring MVC中,模型可以是一个POJO(Plain Old Java Object)或一个JavaBean。控制器将数据存储在模型中,并将其传递给视图层。 3. 视图解析器(View Resolver):视图解析器负责将逻辑视图名称解析为实际的视图对象。在Spring MVC中,视图解析器可以将JSP页面的逻辑视图名称解析为实际的JSP页面。 4. JSP页面:JSP页面是用于展示数据的视图。在JSP页面中,可以使用EL表达式或JSTL标签来获取和展示模型中的数据。 下面是一个简单的示例,演示了Spring MVC中JSP页面的依赖关系: 1. 控制器中设置模型数据: ```java @Controller public class MyController { @RequestMapping("/hello") public ModelAndView hello() { ModelAndView modelAndView = new ModelAndView("hello"); // 设置逻辑视图名称为"hello" modelAndView.addObject("message", "Hello, Spring MVC!"); // 将数据存储在模型中 return modelAndView; } } ``` 2. 视图解析器配置: ```xml <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/"/> <!-- JSP页面所在的目录 --> <property name="suffix" value=".jsp"/> <!-- JSP页面的后缀 --> </bean> ``` 3. JSP页面中获取并展示模型数据: ```jsp <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <!DOCTYPE html> <html> <head> <title>Hello</title> </head> <body> <h1>${message}</h1> <!-- 使用EL表达式获取模型中的数据 --> </body> </html> ``` 通过以上配置和代码,当用户访问"/hello"时,控制器将数据存储在模型中,并将逻辑视图名称设置为"hello"。视图解析器将"hello"解析为实际的JSP页面,并将模型中的数据传递给JSP页面。在JSP页面中,使用EL表达式"${message}"获取并展示模型中的数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值