笔记91-100

来源:互联网 发布:龙之信条男性捏脸数据 编辑:程序博客网 时间:2024/05/29 03:28
090 session对象

在web开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象)。一个浏览器独占一个session对象。当需要保存用户数据时,服务器会将其保存到时用户session中

session对象引用保存在request中

例:

response.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");PrintWriter out=response.getWriter();//处理中文乱码问题HttpSession session=request.getSession();String product=(String)session.getAttribute("name");//取出相关数据当访问网站调用getSession后生成session, 当session未被调用三十分钟后自动销毁



调整session自动销毁时间
<session-config>  <session-timeout>10</session-timeout></session-config>


或session.invalidate()可以直接销毁session


getSession方法中传入false参数时,服务器将不会主动创建session对象
session实现原理:当浏览器第一次访问时,服务器为浏览器创建一个session对象,并以cookie的形式将id写给浏览器。因此,当浏览器关掉时cookie丢失,尽管session仍然在,但已经无法再访问到原来的session。所以如果想要再浏览器关闭后再使用cookie需要在其中设置cookie的活动时间

例:

HttpSession session=request.getSession();String sessionid=session.getId();Cookie cookie=new Cookie("JSESSIONID",sessionid);cookie.setPath("/day07");cookie.setMaxAge(30*60);response.addCookie(cookie);




091 session的工作原理

用户的浏览器有时会设置禁用cookie,为了可以进行session处理,需要将session接入url中。这种技术称为url重写。response中有encodeURL方法可以将sessionid写入到url中去用来传递cookie

encodeURL方法只有当请求不带cookie时才会重写url,当其带了cookie时,url将不会重写



098 jsp入门和jsp运行原理

jsp为sun公司定义的一种开发动态web页面资源的技术,允许在页面中写入java代码并调用request,response等常用对象

例:

Date date=new Date();

out.write(date.toLocaleString());//输出当前时间

服务器在输出jsp时,会先将jsp翻译成servlet输出而其中的<%java代码会直接进入jspservlet的代码中

jsp转换为servlet时已经定义了一些内置对象

例:

PageContext pageContext

HttpSession session
ServletContext application
ServletConfig config
JspWriter out
Object page=this
JspWriter _jspx_out
PageContext _jspx_page_context

servlet一般用于web应用中的控制器组件,而jsp一般作为数据显示模板

在jsp和servlet中传递数据一般使用Request setAttribute和forward(request)来传递参数



099 jsp语法

jsp模板元素
jsp页面中的内容称为模板元素,其定义的jsp的基本骨架
jsp脚本表达器:<%=表达式%>用于输出表达式的值
jsp脚本片段:<%java代码%>jsp会将其中的代码依照原样放入到servlet中,多段标签中的代码可以相互调用,甚至单个脚本中的java代码可以是不完整的,只需要前后连续即可
jsp声明:<%!java代码%>,jsp页面中的所有代码,默认会翻译到servlet的service方法中,但jsp声明中的代码会被翻译到_jspService方法的外面。例如jsp中的方法必须使用这种方法
jsp注释:<%-- 代码块--%>用这种方式注释的代码不会输出给浏览器页面源码,可以减少流量



100 jsp语法-page指令详解

page指令用于定义JSP页面的各种属性,无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面。page指令最好是放在整个JSP页面的起始位置。 

page指令常用属性:
language:设置jsp中使用的语言
extends:jsp翻译后继承的类
import:指定jsp引入的包,默认引入lang和servlet相关包
session:指定是否自动创建session对象
buffer:浏览器缓冲区大小
autoFlush:是否自动刷新
isThreadSafe:是否为线程安全,一般为false
errorPage:指定出错后访问的页面,也可以在web.xml元素设置错误处理页面,其中<exception-type>子元素指定异常类的完全限定名,<location>元素指定以“/”开头的错误处理页面的路径。当在jsp中已设置了错误页面时,web页面中的配置将失效

例:

<error-page><exception-type>java.lang.ArithmeticException</exception-type><location>/error/error.html</location></error-page>

或<error-code>404</error-code>//当出现特定错误码时出现的页面
isErrorPage:设置该页面是否是错误页面,当服务器访问到属性为TRUE的页面时,会抛出相关异常
contentType:解释页面的类型
pageEncoding:页面采用的编码方式,当jsp出现中文乱码时可能会出现错误,一般需要设置pageEncoding和contentType均为本地编码格式
isELIgnored:是否支持EL表达式

jsp乱码问题:pageEncoding指jsp被翻译成java时使用的编码格式,contentType属性影响的是Content-Type响应报头属性,浏览器根据这个属性来显示页面,Web容器根据这个属性指定的字符集编码Response Body,浏览器来解码Response Body。
0 0
原创粉丝点击