日常问题小记(cookie session jsp el jstl)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_40703552/article/details/100190782

0901

1)Session与Cookie的区别

1.数据存储的位置不同,cookie在客户端,session在服务端

2.声明周期不同

​ cookie会话(游览器关闭,持久化cookie,setMaxAge(秒数))

3.cookie只能存放在字符串,键值对;而session可以是任意对象

4.同一个游览器接受cookie是有上限的

2)Session运行原理

基于cookie,利用cookie回写到一个JSESSIONID

3)禁用游览器端Cookie,怎么获取Session

1.手动在路径后面拼接一个

2.使用response的encodeRedirectURL方法

4)encodeRedirectURL与encodeURL的区别


encodeRedirectURL(java.lang.String url)
Encodes the specified URL for use in the sendRedirect method or, if encoding is not needed, returns the URL unchanged.
对给定的url进行编码,以用于sendRedirect方法;如果不需要编码,则直接返回(未经修改的)url。

encodeURL(java.lang.String url)
Encodes the specified URL by including the session ID in it, or, if encoding is not needed, returns the URL unchanged.

对给定的url,通过加上session ID的方式进行编码;如果不需要编码,则直接返回(未经修改的)url。

扫描二维码关注公众号,回复: 7637296 查看本文章

原文链接:https://blog.csdn.net/SpbDev/article/details/37879549

5)jsp运行原理

jsp在第一次访问的时候会被web容器翻译成servlet,在执行.

过程:

​ 第一次访问—>helloServlet.jsp—>helloServlet_jsp.java—>编译运行

PS:被翻译成的servlet在tomcat的work目录中可以找到

6)jsp常用的三个指令

jsp的指令是指导jsp翻译和运行的命令,jsp包括三大指令:

1)page指令–属性最多的指令(实际开发中page指令默认)

属性最多的一个指令,根据不同的属性,指导整个页面特性

格式<%@ page 属性名1 = “属性值1” 属性名2 = “属性值” … %>

常用属性如下:

language:jsp脚本中可以嵌入的语言种类

pageEncoding:当前jsp文件的本身编码—内部可以包括contentType

contentType:response.setContentType(text/html;charset=UTF-8)

session:是否jsp在翻译时自动创建session

import:导入java的包

errorPage:当当前页面出错后跳转到那个页面

isErroPage:当前页面是一个处理错误的页面

2)include指令

页面包括(静态包括)指令,可以将一个jsp页面包含到另一个jsp页面中

格式:<%@ include file=“被包含的文件地址”%>

3)taglib指令

在jsp页面中引入标签库(jstl标签库 struts2标签库)

格式:<%@ taglib uri = “标签库地址” prefix = “前缀”%>

1)其他标签<jsp: forward> jsp:param

1)jsp:forward标签用于把请求转发给另外一个资源

2)语法:

<jsp:forward page=“relativeURL|<%=expression%>” />

page 属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式

来获得。

1)当使用<jsp:include><jsp:forward>标签引入或将请求转发给的资源是一个能动态执 行的程序时,例如 Servlet 和 JSP 页面,那么,还可以使用<jsp:param>标签向这个程序传 递请求参数。 
2<jsp:param>标签的 name 属性用于指定参数名,value 属性用于指定参数值。在 <jsp:include><jsp:forward>标签中可以使用多个<jsp:param>标签来传递多个参数。

(1)out对象

out的类型:JspWriter

out作用就是想客户端输出内容----out.write()

out缓冲区默认8kb 可以设置成0 代表关闭out缓冲区 内容直接写到respons缓冲 器

(2)pageContext对象

jsp页面的上下文对象,作用如下:

page对象与pageContext对象不是一回事

1)pageContext是一个域对象

setAttribute(String name,Object obj)

getAttribute(String name)

removeAttrbute(String name)

pageContext可以向指定的其他域中存取数据

setAttribute(String name,Object obj,int scope)

getAttribute(String name,int scope)

removeAttrbute(String name,int scope)

findAttribute(String name)

—依次从pageContext域,request域,session域,application域中获 取属性,在某个域中获取后将不在向后寻找

jsp内置/隐式对象(9个)

out 用于页面输出

request 得到用户请求信息

response 服务器向客户端的回应信息

config 服务器配置,可以取得初始化参数

session 用来保存用户的信息

application 所有用户的共享信息

page 指当前页面转换后的servlet类的实例

pageContext jsp的页面容器

exception 表示jsp页面所发生的异常,在错误页中才起作用

四大作用域的总结:

page域:当前jsp页面范围

request域:一次请求

session域:一次会话

application域:整个web应用

2)可以获得其他8大隐式对象

例如: pageContext.getRequest()

pageContext.getSession()

7)jsp标签(动作)

1)页面包含(动态包含):<jsp:include page=“被包含的页面”/>

2)请求转发:<jsp:forward page=“要转发的资源” />

8)jsp入门、El表达式、JSTL标签库

推荐https://blog.csdn.net/zhongkelee/article/details/52474695

9)错误页面处理

1.通过errorPage和isErrorPage 控制 JSP页面发生错误时跳转

通过errorPage指定发生错误时跳转到那个界面

通过isErrorPage获得jsp内置对象exception,从而获取内部发生错误的原因

2.配置web.xml


500 /demo5/500.jsp 404 /demo5/404.jsp

10)maven的jstl引入问题

1.链接:http://www.javacoder.cn/?p=195

2.出现错误The absolute uri: http://java.sun.com/jsp/jstl/core cannot be resolved in either web.xml

解决方法在maven引入

<!-- JSTL -->
<dependency>
	<groupId>javax.servlet</groupId>
	<artifactId>jstl</artifactId>
	<version>1.2</version>
</dependency>
<!-- JSTL实现包 -->
<dependency>
	<groupId>org.apache.taglibs</groupId>
	<artifactId>taglibs-standard-impl</artifactId>
	<version>1.2.5</version>
</dependency>
<!-- spec包 -->
<dependency>
	<groupId>org.apache.taglibs</groupId>
	<artifactId>taglibs-standard-spec</artifactId>
	<version>1.2.5</version>
</dependency>

jsp的标签提示

      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>jsp-api</artifactId>
          <version>2.0</version>
          <scope>provided</scope>
      </dependency>

10)out对象和Servlet中PrintWriter的区别:

         1,out内容先输入jspwriter缓存区,然后输给printwriter缓存区,然后在输给浏览器
         2,pageContext是一个作用域,仅在当前jsp页面中有效,也能完成转发和包含功能。

         3,pageContext也可以获取其他八个内置对象

         4,pageContext能将值绑定到其他域对象中。

         5,pageContext对象的findAttribute方法会依次从page->request -> session -> application域对象查找,找到即止。

猜你喜欢

转载自blog.csdn.net/qq_40703552/article/details/100190782