jsp: java server page
是sun公司发明的一种服务器端页面生成.
用于替换servlet中的out.printlin()
如何编写以及运行一张jsp页面?
webConten>>xxx.jsp
http://localhsot:8080/web05/index.jsp
Jsp的实质是servlet类
jsp生成的.java源文件目录
/Users/kinderice/Pictures/Desktop/apache-tomcat-6.0.47/work/Catalina/localhost/web05/org/apache/jsp
JSP的组成部分:
1>jsp指令
page指令:
<%@page %>
属性:contentType:在生成的.java的源文件设置resp输出内容类型:response.setContentType("");
pageEncoding:
告诉tomcat,在输出.java文件时所使用的编码.(输出到源文件保存)
告诉浏览器以什么编码打开改页码:
<metahttp-equiv="Content-Type"content="text/html; charset=UTF-8">
2,html/css/js页面代码
jsp引擎会把这些页面代码原样输出到客户端.
导包:
<%@page import="java.text.*,"%>
<!-- 被包含在<%%>中的代码是java代码-->
<% %>
<%=now %>在html页面显示java变量值
请求到达服务器,Servlet 控制器调用Model(Service)>>Dao()>>>拿到返回数据时需要在jsp页面显示结果就需要把结果封装到response中转发到jsp页面显示结果.
请求转发:
什么是请求转发?
request.setAttribute("key",value);
请求转发
request.getRequestDispatcher("emplist.jsp").forward(req.resp);
转发和重定向的区别:
转发是服务器内部组件跳转,所有涉及的组件共享request对象,所以我们使用的request进行参数传递.
重定向是客户端再次发送新的请求,所以request对象是新的,不能使用request进行组件之间参数传递.
发送了几次请求?
转发:1次
重定向:2次
请求转发完成后浏览器地址停留的地址?
重定向:第二次请求的地址
转发:唯一次请求的地址
什么时候用转发?什么时候用重定向?
如果需要向第二个组件传递参数必须用转发,其余都可以用重定向.
如果一件事情在第一个组件中没有完成,需要交个第二个组件去做,那么使用转发.若已经完成了可以直接重定向.
转发和重定向是两回事:
// 4,重定向
resp.sendRedirect("list.do");
//如果使用请求转发,客户端不知道,浏览器地址栏不会更新一刷新就会再次访问之前的地址执行delete请求.所以不能用请求转发.
req.getRequestDispatcher("list.do").forward(req, resp);
<%@include file="header.jsp"%>引入子jsp. 多个jsp页面使用同一个header.
<%include file="header.jsp"%>
可以导入子页面.
servlet处理错误页面(service:)
throw new ServletException()
异常会被web容器捕获,tomcat会去web.xml中寻找有没有匹配的异常处理页面,若有则跳转到页面
若果没有,则返回一张默认异常页面.
web.xml
<error-page>
<error-code>500</error-code>
<location>/error500.html/jsp</location>
</error-page>