JSP
JSP:Java Server Page 动态页面生成技术
Sun公司制定的一种服务器端动态生成页面的组件规范
JSP运行原理
第一次访问一个JSP,容器先将JSP按照JSP规范,转换成一个servlet,容器调用JSP中的servlet()方法,将JSP中的内容相应给浏览器
JSP语法
- HTML、CSS、JavaScript直接写,语法没有变化
- 注释:
HTML注释:
JSP注释: <%– –%>
JSP中的Java代码
<% %> Java代码段
<%= %> JSP表达式
<%! %> JSP声明,全局变量
JSP中的指令
page属性
page指令通常为JSP的第一行语句
控制在JSP转译生成Servlet类中生成的内容
pageEncoding: 设置页面编码
import: 导包(唯一一个可多次使用的指令)
contentType: 设置页面相应的MIME类型和字符编码
<!-- 设置编码 -->
<%@ pageEncoding="utf-8" %>
<%@ contentType="text/html,character=utf-8" %>
include指令
JSP包含其他的JSP或者HTML
<%@ include file="url" %>
taglib指令
导入标签库
<%@ taglib prefix="c" url="" %>
JSP的隐含(内部)对象
- out —- JspWriter
- request —– HttpServletRequest
- response —– HttpServletResponse
- application —– ServletContext
- session —– HttpSession
- page —– Object
- exception —– Exception
- config —– ServletConfig
- pageContext —– PageContext
转发
一个web组件将未完成的处理通过容器转交给另一个web组件
转发的步骤
1.将数据绑定到request
request.setAttribute("empList", list);
2.获得转发器
RequestDispatcher rid = request.getRequestDispatcher("empList.jsp");
3.转发
rid.forward(request, response);
request.setAttribute("empList", list);
request.getRequestDispatcher("empList.jsp").forward(request, response);
转发的特点
- 转发之后地址栏地址不会发生改变
- 转发的目的地必须是同一个应用内部的地址
- 转发涉及的各个web组件之间共享同一个request和response
转发和重定向的区别
- 重定向是浏览器发送请求并收到响应以后,再次向一个新地址发请求;转发是服务器收到请求之后,为了完成响应转到一个新的地址。
- 重定向中有两个请求对象,不共享数据;转发只产生一个请求对象,在组件中共享数据。
- 重定向地址栏数据会改变,转发不会。
- 重定向的地址可以是任意地址,转发到的新地址必须是同一个应用内的地址。
JSP异常处理
编程式异常处理
try {
......
......
} catch (NumberFormatException e) {
request.setAttribute("info", "数据错误");
request.getRequestDispatcher("error.jsp").forward(request, response);
}
声明式异常处理
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
......
} catch (SQLException e) {
e.printStackTrace();
throw new ServletException(e);
}
}
web.xml
<error-page>
<exception-type>javax.servlet.ServletException</exception-type>
<location>/SystemError.jsp</location>
</error-page>
不同异常处理的应用场景
针对程序自身异常,使用编程式异常处理方式。
对于系统级异常,最好使用声明式异常处理方式。
JSP路径问题
Servlet中路径分为绝对路径和相对路径
绝对路径
以“/”开头
“/”在转发中表示http://localhost/项目名/
在HTML中,重定向中,表示http://localhost/
相对路径
比以“/”开头
JSP页面路径写法
- 不加base使用绝对路径
- 加base使用相对路径
Servlet路径写法
建议使用绝对路径
重定向:“/项目名”
转发:“/”