关于java:JavaWeb开发04JSP和JSTL

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_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");
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域中。

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理