Servlet学习笔记06——什么是转发,路径,状态管理?

1.include指令

(1)作用:

告诉容器,在将jsp转换成Servlet时,将
某个文件的内容插入到该指令所在的位置。

(2)语法:

<%@ include file=""%>
file属性用于指定被包含的文件。

2.比较重定向和转发

(1)能否共享request和response

转发可以,重定向不行。
注:
    request和response的生存时间是
    一次请求和响应期间存在。

(2)浏览器地址栏的地址有无变化

转发没有变化,重定向有变化。

(3)目的地有无限制

转发有限制(同一个应用),重定向没有。

3.路径问题

链接地址,表单提交,重定向,转发
<a href="">
<form action="">
response.sendRedirect("")
request.getRequestDispatcher("")

(1)什么是相对路径?

不以"/"开头的路径。

(2)什么是绝对路径?

以"/"开头的路径。

(3)如何写绝对路径?

链接地址,表单提交,重定向从应用名开始写,
而转发从应用名之后开始写。
注意:
    不要将应用名直接写在路径里面,而应该
使用以下方法来获得实际部署时的应用名。
    String request.getContextPath()
建议使用绝对路径,易写,易维护。

4.状态管理

(1)什么是状态管理?

将浏览器与服务器之间多次交互当做一个整体来
看待,并且将多次交互所涉及的数据(即状态)保存
下来。

(2)如何进行状态管理?

1)将状态保存在浏览器端(Cookie)
2)将状态保存在服务器端(Session)

1)什么是Cookie?

服务器临时存放在浏览器端的少量数据。

2)工作原理

当浏览器第一次访问服务器时,服务器会将少量数据以
set-cookie消息头的形式发送给浏览器,浏览器会将这些数据保存下来;
当浏览器再次访问服务器时,会将这些数据以cookie消息头的形式发送给服务器。



3)如何添加Cookie?

Cookie c = new Cookie(String name,
String value);
注:  name称之为cookie的名称,value
    称之为cookie的值。
response.addCookie(c);

4)如何读取cookie?

注:读取浏览器发送过来的cookie

Cookie[] request.getCookies();
注: 该方法有可能返回null!
String cookie.getName();
String cookie.getValue();

5)cookie的编码问题

a.什么是cookie的编码问题?
cookie只能存放合法的ascii字符,中文需要
转换成ascii字符的形式来存放。
b.如何处理?
 step1.在添加cookie时,使用encode方法。
String URLEncoder.encode(String str,
String charset);
 step2.在读取cookie时,使用decode方法。
String URLDecoder.decode(String str,
String charset);

c.建议:添加cookie时,最好统一使用encode
方法编码。

6)cookie生存时间问题

a. 浏览器默认情况下,会将cookie保存在内存里面。
注:
    浏览器只要不关闭,cookie就会一直存在,
关了,则cookie会被销毁。
b. 可以调用以下方法来设置生存时间
    cookie.setMaxAge(int seconds)
注:
    b1. 单位是秒。
        cookie.setMaxAge(365 * 24 * 60 * 60);
    b2. seconds可以大于0,等于0和小于0
        大于0: 浏览器会把cookie保存在硬盘上,超过指定时间,浏览器会删除该cookie。
        小于0:(缺省值),即把cookie存放到内存里面。
        等于0:浏览器会立即删除该cookie。
            比如,要删除名称为uid的cookie:
            Cookie c = new Cookie("uid","");
            c.setMaxAge(0);
            response.addCookie(c);

猜你喜欢

转载自www.cnblogs.com/author-huweidong/p/9212238.html