1. 作用域
1.1 数据的使用范围
setAttribute("属性",object):用于向对应作用域中保存数据
getAttribute("属性"): 用于在对应作用域中获取数据。
1.2 Request
当前请求有效,如果向 request中保存了一个数据,该数据在当前请求结束前有效
通过测试 页面显示 永远都是1 因为每次新的请求 都是一个新的request对象 数据不共享
Integer value = (Integer)request.getAttribute("value");
request.setAttribute("value",value);
1.3 Session
当前会话有效,默认一次会话就是打开浏览器一直到浏览器关闭 是一次会话
当然可以指定session的过期时间
经常用于登陆校验
//获取Session
HttpSession session = request.getSession();
Integer value = (Integer)session.getAttribute("value");
session.setAttribute("value",value);
通过测试 session作用域的范围 是当前会话有效
当前会话不结束时 数值一次递增,当结束会话的时候,或者是新的浏览器的时候 会从1开始
1.4 ServletContext
全局作用域,一般叫application ,只要服务器没关闭,数据一直有效
//获取ServletContext
ServletContext application = request.getServletContext();
Integer value = (Integer)application.getAttribute("value");
application.setAttribute("value",value);
2. 初始化参数
request.setCharacterEncoding("UTF-8")
response.setCharacterEncoding("UTF-8")
2.1 局部初始化参数
<!--注册-->
<servlet>
<servlet-name>ServletName</servlet-name>
<servlet-class>com.ServletNameClass</servlet-class>
<!--初始化参数,只能让该servlet使用-->
<init-param>
<param-name>name</param-name>
<param-value>value</param-value>
</init-param>
</servlet>
<!--映射-->
<serlvet-mapping>
<servlet-name>ServletName</servlet-name>
<url-pattern>luyou</url-pattern>
</serlvet-mapping>
在web.xml中 某个servlet注册的时候,在注册内 指明 初始化的参数
然后再servlet中可以通过servletConfig对象获取
ServletConfig servletConfig = getServletConfig();
String name = servletConfig.getInitParameter("name");
System.out.println(name);//value
2.2 全局初始化参数
<context-param>
<param-name>Enconding</param-name>
<param-value>context</param-value>
</context-param>
全局初始化参数可以再所有servlet中 通过servletContext获取
ServletConfig servletConfig = getServletConfig();
String enconding =servletConfig.getInitParameter("Enconding");
System.out.println(enconding);//context
通过测试 全局初始化参数 可以在任何servlet中获取使用
3. JSP
3.1 概述
Servlet中 想要将数据内容打印到页面,需要在java中进行大量的html代码拼接,非常不合理,代码不美观,容易出错
而jsp就解决了这个问题,数据交给jsp 由他来完成数据的展示工作
JSP本质就是一个servlet,只不过之前是在java代码中拼接html代码
现在等于是在html代码中编写部分java代码获取内容
编写完之后,通过jsp引擎把jsp文件转换为 servlet文件。
我们再jsp中进行编码,常规的html编码,然后只需要嵌入少量的java代码把内容展示即可
最终运行这个jsp的时候,会先把jsp转换为java代码,还是转换为 拼接html的方式
3.2 使用
三种语法。
<!-- 该servlet的类体 -->
<%!
// 私有化成员变量
private String name = "root";
%>
<!-- 该servlet的service方法体 -->
<%
// 局部变量
int age = 19;
%>
<!-- println() 方法,向页面输出 -->
<h1><%=name+":"+age %></h1>
<%-- <%="<h1>"+name+":"+age+"</h1>"%> --%>