1.JSP是简化Servlet编写的一种技术,它将Java代码和html语句混合在同一个文件中编写,只对网页中的要动态产生的内容采用Java代码来编写,而对固定不变的静态内容采用html编写。
2.JSP可以放在除web-info以外的任何目录
3.JSP的本质就是一个Servlet
4.JSP页面的9个隐含对象:
①Request:HttpServletRequest的一个对象
②Response:HttpServletResponse的一个对象(这个隐含对象一般不用)
③pageContext:页面的上下文,是PageContext的一个对象,可以从该对象中获取其他8个隐含对象,也可以从中得到当前页面的其他信息。
④Session:代表浏览器和服务器的一次会话
⑤application:代表当前web应用,是ServletContext对象。
⑥Config:ServletConfig对象
⑦out:JspWriter对象,调用out.println()可以直接把字符串打印到浏览器上。
⑧page:指向当前Jsp对应的Servlet对象引用,但为Object类型,只能调用Object类的方法
⑨exception:在声明了page指令的isErrorPage="true"后才能使用
5.Jsp表达式:<%=某个值>:能将值直接输出到浏览器界面上
<%=date%>
6.脚本片段:脚本片段可以相互嵌套
<!--脚本片段 -->
<%
StringageSrc=request.getParameter("age");
Integerage=Integer.parseInt(ageSrc);
if(age>18){
%>
成年
<%
}else{
%>
未成年
<%
}
%>
7.jsp属性和相关的方法
(1)相关方法:objectgetAttribute(String name):获取指定的属性
EnumerationgetAttributeNames():获取所有属性名字组成的Enumeration对象
RemoveAttribute(String name):移出指定的属性
VoidsetAttribute(String name,Object o)设置属性
(2)jsp的请求域:pageContext(当前页面),request(同一个请求,在有请求的转发的情况下可以跨页面获取属性值),session(同一次会话),application(整个web应用) 他们都有上述方法
8.请求的转发和重定向
(1)本质区别:请求的转发只发出了一次请求,重定向则发出了两次请求
①.请求的转发:地址是初次发出请求的地址。
请求的重定向:地址栏不再是初次请求的地址,地址为最终响应的地址
②.请求转发:在最终的servlet中request对象和焕发的那个request是同一个对象;
请求重定向:在最终的servlet中request对象和焕发的那个request不同一个对象。
③.请求的转发:只能转发到当前web应用的资源
请求的重定向:能转发到任何资源
④.对于请求的转发而言“/”代表当前web应用的根目录
对于请求的重定向而言“/”代表当前web站点的根目录
//请求的转发
//1.调用HttpServletRequest的getRequestDispatcher()方法获取RequestDispatcher对象
//调用getRequestDispatcher()需要传入地址
Stringpath="testServlet";
RequestDispatcherdispatcher=request.getRequestDispatcher("/"+path);
//调用RequestDispatcher的forward(request,response)进行请求的转发
dispatcher.forward(request,response);
//执行请求的重定向,直接调用response.sendRedirect(path)方法
//path为要重定向的地址
Stringpath="testServlet";
response.sendRedirect(path);
9.jsp指令
(1)page指令常用的属性:
①import属性:指定当前jsp页面对应的servlet需要导入的类
<%@ page import="java.util.Date"%>
②session属性:取值为true或false,指定当前页面的session隐藏变量是否可用,也可以说访问当前页面时是否一定要生成HttpSession对象。
③. errorPage 和 isErrorPage:
> errorPage 指定若当前页面出现错误的实际响应页面时什么.其中 / 表示的是当前 WEB 应用的根目录.
<%@ pageerrorPage="/error.jsp" %>
> 在响应 error.jsp 时,JSP 引擎使用的请求转发的方式.
> isErrorPage 指定当前页面是否为错误处理页面, 可以说明当前页面是否可以使用 exception 隐藏变量. 需要注意的是: 若指定
isErrorPage="true", 并使用 exception 的方法了, 一般不建议能够直接访问该页面.
> 如何使客户不能直接访问某一个页面呢 ? 对于 Tomcat 服务器而言, WEB-INF 下的文件是不能通过在浏览器中直接输入地址的方式
来访问的. 但通过请求的转发是可以的!
> 还可以在 web.xml 文件中配置错误页面:
<error-page>
<!--指定出错的代码:404 没有指定的资源, 500 内部错误. -->
<error-code>404</error-code>
<!-- 指定响应页面的位置 -->
<location>/WEB-INF/error.jsp</location>
</error-page>
<error-page>
<!-- 指定异常的类型 -->
<exception-type>java.lang.ArithmeticException</exception-type>
<location>/WEB-INF/error.jsp</location>
</error-page>
④. contentType: 指定当前 JSP 页面的响应类型. 实际调用的是response.setContentType("text/html; charset=UTF-8");
通常情况下, 对于 JSP 页面而言其取值均为text/html; charset=UTF-8. charset 指定返回的页面的字符编码是什么. 通常取值为 UTF-8
⑤. pageEncoding: 指定当前 JSP 页面的字符编码. 通常情况下该值和 contentType 中的 charset 一致.
⑥. isELIgnored: 指定当前 JSP 页面是否可以使用 EL 表达式. 通常取值为false.
(2).include 指令: <%@ include file="b.jsp" %>
1).include 指令用于通知 JSP 引擎在翻译当前 JSP 页面时将其他文件中的内容合并进当前 JSP 页面转换成的 Servlet 源文件中,
这种在源文件级别进行引入的方式称之为静态引入, 当前JSP页面与静态引入的页面紧密结合为一个Servlet。
2).file属性的设置值必须使用相对路径
3).如果以 / 开头,表示相对于当前WEB应用程序的根目录(注意不是站点根目录),否则,表示相对于当前文件。