Servlet是j2ee提供的动态资源开发技术,是以java的程序的形式进行开发,在java中书写HTML标签是一件十分头疼的事情,因此人们开发出了JSP,看起来像是HTML同样,可是经过服务器的编译最终能够生成Servlet。html
输出当前时间:java
<% Date date = new Date(); String dateStr = date.toLocaleString(); out.write(dateStr); %>
直接书写在JSP中的HTML内容,看起来就像写HTML同样的方便,可是最终会在被翻译成Servlet的过程当中 out.write()直接输出。web
<%= 表达式%> 接受的是一段java表达式,在JSP翻译到Servlet的过程当中,将会计算表达式的值,利用out.write()输出出去。segmentfault
输出当前时间:浏览器
<%= new Date().toLocaleString() %>
<% %>直接能够在脚本片断中书写java源代码,其中的源代码将会直接拷贝到翻译过来的servlet中的响应位置上。服务器
<%! %>在其中能够写java代码,其中的源代码会被拷贝到servlet中的service方法以外,能够利用它来为servlet增长成员方法、成员变量、静态代码块。session
<%-- --%>被jsp注释包围起来的内容将不会被服务器翻译到servlet之中,要注意区分html注释和java注释的区别。
1)jsp注释不会被翻译到servlet中,会在翻译时遗弃。
2)java注释(<%// %>)不会被编译到class文件中,会在编译时遗弃。
3)html注释(<!-- -->)将会看成模版元素,直接输出到浏览器中,浏览器将不会显示html注释中的内容。app
<% int i = 0; %> <!-- <% i=i+100; %> --> <%=i %> 浏览器输出:100 由于是HTML注释,会被执行,当时不会显示,因此i+100会被执行,最后输出100
page指令(https://segmentfault.com/a/11...jsp
1.errorPage能够设置错误提示界面url
<%@ page language="java" import="java.util.*" pageEncoding="utf-8" errorPage="/error.jsp" %>
也能够在web.xml中配置
<error-page> <error-code>404</error-code> <location>/error/404.jsp</location> </error-page>
2.pageEncoding="utf-8"能够解决JSP中全部的中文乱码问题
<%@ incluede file=""%> 静态引入其余页面的内容
静态引入:在源文件级别进行合并,多个jsp生成一个servlet,最终由这一个servlet生成响应,推荐使用。
能够将它理解成response.getWriter()得到的PrintWriter,在JSP页面中,只用它去输出数据,不要用response.getWriter()
<% Date date = new Date(); String dateStr = date.toLocaleString(); out.write(dateStr); %>
(1)获取其它八大隐式对象,能够认为是一个入口对象。(在自定义标签中使用)
getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象
(2)域对象,四大做用域的入口,能够操做四大做用域中的域属性
做用范围: 当前jsp页面
生命周期: 当对jsp页面的访问开始时,建立表明当前jsp的
PageContext,当对当前jsp页面访问结束时销毁表明当前jsp的pageContext
做用:在当前jsp中共享数据
public void setAttribute(java.lang.String name,java.lang.Object value) public java.lang.Object getAttribute(java.lang.String name) public void removeAttribute(java.lang.String name) public void setAttribute(java.lang.String name, java.lang.Object value,int scope) public java.lang.Object getAttribute(java.lang.String name,int scope) public void removeAttribute(java.lang.String name,int scope) PageContext.APPLICATION_SCOPE PageContext.SESSION_SCOPE PageContext.REQUEST_SCOPE PageContext.PAGE_SCOPE
(3)findAttribute(name)方法 -- 搜寻四大做用域中的属性,若是找到则返回该值,若是四大做用域中都找不到则返回一个null,搜寻的顺序是从最小的域开始向最大的域开始寻找(application>session>request>pageContext)
(4)提供了请求请求包含和转发的快捷方法
pageContext.include("/index.jsp"); pageContext.forward("/index.jsp");
1.JSP映射
<servlet> <servlet-name>index</servlet-name> <jsp-file>/index.jsp</jsp-file> </servlet> <servlet-mapping> <servlet-name>index</servlet-name> <url-pattern>/jsp/*</url-pattern> </servlet-mapping> 经过"http://localhost:8080/Day01/jsp/任意字符"均可以访问这个jsp。
2.域的总结(由大到小)
servletContext (application)
session (session)
request (request)
pageContext
若是一个数据只在当前jsp页面使用,可使用pageContext域存储。
若是一个数据,除了在当前Servlet中使用,还要在请求转发时带到其余Servlet处理或jsp中显示,这个时候用request域。
若是一个数据,除了如今我本身要用,过一会我本身还要用,存在session域。
若是一个数据,除了如今我本身要用过一会其余人也要用,存在ServletContext域中。