您的位置:首页 > 编程语言 > Java开发

7 Servlet交互和作用域对象

2018-02-12 12:41 260 查看
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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JAVAEE JAVAWEB Servlet