7 Servlet交互和作用域对象
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了7 Servlet交互和作用域对象相关的知识,希望对你有一定的参考价值。
1.多个web组件进行跳转(加上/就是绝对路径)WEB组件跳转的三种方式:(组件包括Servlet,jsp,Filiter)
①.请求转发(forword)
request对象.getRequestDispatcher(String path).forword(request,response);
特点:
地址栏不变
AServlet和BServlet共享同一个请求(共享请求数据)
页面响应的数据是有BServlet决定的
不能跨域访问
可以访问WEB-INF下面的资源
②.URL重定向(redirect)
response对象.sendRedirect(String path);
特点:
地址栏中的地址改变
AServlet和BServlet各自发一个请求(不能共享请求数据)
页面响应的数据是由BServlet决定的
可以跨域访问
不能访问WEB-INF下面的资源
1.1使用请求转发
需要在同一个请求对象中共享数据
需要访问WEB-INF下面的资源
1.2.使用URL重定向
需要跨域访问
使用URL重定向可以防止表单重复提交
1.3.请求包含(include)
2.需要多个页面跳转共享数据要依赖作用域对象(web组件的3大作用域)
对象名称 数据类型 对象描述
request HttpServletRequest 在一个请求中共享数据
session HttpSession 在一个会话共享数据
(ServletContext)application ServletContext 在一个应用中共享数据
所有作用域对象设置/获取数据一样:
设置共享数据:
作用域对象.setAttribute(String name,Object value);
获取共享数据:
作用域对象.getAttribute(String name);
各自的作用共享的数据只能在各自的作用域中取出来,不能跨作用域取共享数据
3.ServletContext接口和常用方法
接口ServletContext就是上下文
获取ServletContext对象:
ServletContext ctx=request.getSession().getServletContext();
获取当前应用的上下文路径:
String path=ctx.getContextPath();
获取当前项目的根路径:
ctx.getRealPath(String name);
获取全局的初始化参数:
ctx.getInitParameter(String name);
获取局部的初始化参数:
super.getInitParameter(String name);
全局初始化参数的配置:
<context-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</context-param>
4.JSP
①.JSP的原理:
JSP文件-->Servlet类-->编译成字节码-->解释执行
JSP底层使用Servlet输出流输出html代码片段
JSP语法:
输出数据到页面上:<%= %>
相当于在servlet中的service方法写java代码:<% %>
②.JSP的三大指令:
page/include/taglib
指令的语法:
<%@ 指令名称 属性名称="属性值"%>
2. include(静态包含,包含其他组件)
语法:<%@ include file=""%>
动态包含:<jsp:include page=""/>
3.taglib(引入外部标签)
<%@taglib uri="" prefix=""%>
③.JSP的九大内置对象
pageContext 在当前页面共享数据
request 在一个请求共享数据
session 在一个会话中共享数据
application 在一个应用中共享数据
response 响应对象
exception 异常对象
config 获取初始化配置参数对象
out 输出流对象
page 当前servlet对象
④.JSP的四大作用域
pageContent
request
session
application
⑤.JSP的动作元素
<jsp:include/>
<jsp:forward/>
<jsp:param/>:在包含和转发时,利用该标签传递请求参数
静态包含和动态包含的区别:
静态包含在翻译的时候,将多个JSP合并翻译成一个Servlet
动态包含在翻译时,每个jsp文件都会翻译成对应的Servlet,
在程序运行加载到JVM中的时候动态合并
动态包含可以传递参数
⑥.改JSP的模版文件
JSP Files-->Templates-->New JSP File(html)
以上是关于7 Servlet交互和作用域对象的主要内容,如果未能解决你的问题,请参考以下文章