JSP和JSTL
一.JSP概念
Servlet是j2ee提供的动静资源开发技术,是以java的程序的模式进行开发,在java中书写HTML标签是一件非常头疼的事件,所以人们开发出了JSP,看起来像是HTML一样,然而通过服务器的编译最终能够生成Servlet。
输入以后工夫:
<% Date date = new Date(); String dateStr = date.toLocaleString(); out.write(dateStr);%>
二.JSP的组成部分
1.模版元素
间接书写在JSP中的HTML内容,看起来就像写HTML一样的不便,然而最终会在被翻译成Servlet的过程中 out.write()间接输入。
2.脚本表达式
<%= 表达式%> 承受的是一段java表达式,在JSP翻译到Servlet的过程中,将会计算表达式的值,利用out.write()输入进来。
输入以后工夫:
<%= new Date().toLocaleString() %>
3.脚本片段
<% %>间接能够在脚本片段中书写java源代码,其中的源代码将会间接拷贝到翻译过去的servlet中的响应地位上。
4.JSP申明
<%! %>在其中能够写java代码,其中的源代码会被拷贝到servlet中的service办法之外,能够利用它来为servlet减少成员办法、成员变量、动态代码块。
5.JSP正文
<%-- --%>被jsp正文包围起来的内容将不会被服务器翻译到servlet之中,要留神辨别html正文和java正文的区别。
1)jsp正文不会被翻译到servlet中,会在翻译时遗弃。
2)java正文(<%// %>)不会被编译到class文件中,会在编译时遗弃。
3)html正文(<!-- -->)将会当作模版元素,间接输入到浏览器中,浏览器将不会显示html正文中的内容。
<% int i = 0; %><!-- <% i=i+100; %> --><%=i %> 浏览器输入:100 因为是HTML正文,会被执行,过后不会显示,所以i+100会被执行,最初输入100
三.JSP指令
1)Page指令
page指令(https://segmentfault.com/a/11...
Tips:
1.errorPage能够设置谬误提醒界面
<%@ 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中所有的中文乱码问题
2)include指令
<%@ incluede file=""%> 动态引入其余页面的内容
动态引入:在源文件级别进行合并,多个jsp生成一个servlet,最终由这一个servlet生成响应,举荐应用。
3)taglib指令
四.九大隐式对象(config,reponse,request,application,session,out,page,pageContext,exception)
1)out对象
能够将它了解成response.getWriter()取得的PrintWriter,在JSP页面中,只用它去输入数据,不要用response.getWriter()
<% Date date = new Date(); String dateStr = date.toLocaleString(); out.write(dateStr);%>
2)PageContext对象
(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_SCOPEPageContext.SESSION_SCOPEPageContext.REQUEST_SCOPEPageContext.PAGE_SCOPE
(3)findAttribute(name)办法 -- 搜查四大作用域中的属性,如果找到则返回该值,如果四大作用域中都找不到则返回一个null,搜查的程序是从最小的域开始向最大的域开始寻找(application>session>request>pageContext)
(4)提供了申请申请蕴含和转发的快捷办法
pageContext.include("/index.jsp");pageContext.forward("/index.jsp");
Tips:
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域中。