保存作用域与路径问题

保存作用域

Request保存作用域

数据仅仅保存一次请求响应

https://moonshuo.cn/posts/43816.html

所以说,对于我们页面的重定向,经过了两次请求与响应,所以我们用request保存的不会在下一个页面对应的Servlet中展现出来,而在springmvc中model也是属于Request作用域的。

1
request.setAttribute("fruitlist",list);

image-20220402160545843

但是对于内部转发来说,可以获取到request保存的值

image-20220402160305352

Session保存作用域

保存一次会话的范围,只要我们的session没有过期,并且session相同,同一个浏览器不同请求之间传递数据。

https://moonshuo.cn/posts/16634.html

Application作用域

范围为整个应用范围(tomcat从启动到结束为一个应用),相对比于session,不同的浏览器进行访问都可以得到application的保存的数据,只要是同一个应用(即tomcat从)发出的,而session只要id不相同,就不会访问得到,所以application存放所有用户都共享的数据,而且大家都经常使用的。

同时保存的方法比较特殊,为

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package com.zss.servlets;

import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
* @author zss
* 下面的注解表示于web.xml相匹配的作用相同
*/

@WebServlet("/demo06")
public class TestServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
ServletContext servletContext =req.getServletContext();
servletContext.setAttribute("name","haha");
resp.sendRedirect("hi");
}
}

路径问题

image-20220404154436963

相对路径

我们要在FruitShow.html中引用其响应的css与js

相对引用,其一个点代表其fruit路径发,而两个点代表web路径下文件

1
2
<link href="../css/FruitShow.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="../js/FruitShow.js"></script>

绝对路径

1
2
<link href="http://localhost:8080/css/FruitShow.css" type="text/css" rel="stylesheet">
<script type="text/javascript" src="http://localhost:8080/js/FruitShow.js"></script>

前提是同名tomcat服务器的8080端口必须开启,而对于绝对路径来说我们可以使用base标签,表示当前页面的所有路径发根路径。

1
<base href="http://localhost:8080">