jsp详细说明

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jsp详细说明相关的知识,希望对你有一定的参考价值。

1JSP (Java Server Page)是 Sun Microsystems 公司的一种规范,它将 Java 与 html 相结合。JSP本质是就是Servlet; JSP 是使用Java 开发基于 Web 的应用程序不可或缺的组成部分

<%

for(int i=0;i<3;i++)

{

%>

<input type="button" value="<%=i%>"><br>

<%

}

%>

2jsp程序(文件)的基本组成元素:

注释元素,

指令元素(相当是编译指令)

脚本元素  (其中包括九大内建对象) ,

动作元素

注释元素

Jsp文件中包含四种注释:

客户端显示的注释 (可在其中包括动态内容)

<!-- comment [ <%= expression %> ] -->

程序员专用注释(只能通过查看原始 JSP 文件查看; JSP容器忽略此注释的主体)

<%-- comment --%>

<% /** 多行注释 **/ %>

<% //单行注释 %>

 

指令元素

指令(Directives)主要用来提供整个JSP 网页相关的信息,并且用来设定JSP网页的相关属性,例如:网页的编码方式、语法、信息等。

起始符号为: <%@

终止符号为: %>

中间部分就是一些指令和一连串的属性设定,如下所示:

<%@ directive  attribute ="value"  %>

包含三种指令: page指令     include指令   taglib指令 

page指令

page 属性 (属于指令元素)

  info  页面信息

  language  定义使用的脚本语言,目前只能是java

  pageEncoding 定义JSP字符编码

  contentType  定义JSP字符编码和页面MIME

  contentType=“text/html; charset=gb2312” 

  extends  继承

  Import  引用java类包

  session  指定在一个http会话该页面是否参与默认值为true

  buffer  到客户端输出流的缓冲大小  buffer=“8kb”或者               buffer=“none” 

  autoFlush  默认true,如果false,缓冲满时运行就异常

  isThreadSafe  是否多线程处理请求

  errorPage  指定该页面出现异常时调用的页面

  isErrorPage  该页是否是错误页,则可以使用exception

 

include指令

将其他文件(.jsp .html)引入到本文件中。

格式: <%@ include file = "relativeURLspec" %>

include 指令只有一个属性,那就是file,而relativeURLspec 表示此file 的路径。

例如: <%@include  file=“/other.htm”%>

注意不能将Servlet引入到jsp中。 即file属性不能指向一个Servlet

 

taglib指令 

taglib 指令的语法如下:

<%@ taglib uri = "tagLibraryURI" prefix="tagPrefix" %>

此指令将在JSTL一节有详细使用

脚本元素  (九大内建对象)

使开发者能直接将java代码嵌入JSP页面HTML标记中。

有三种类型:代码段(Scriptlets 表达式(Expressions  声明(Declarations

代码段(Scriptlets

scriptlet中可以包含有效的程序片段只要是合乎java本身的标准语法即可。通常我们主要的程序也是写在这里面,scriptlet 是以 <% 为起始;%> 为结尾。

 Scriptlet 的语法:<% code fragment %>

表达式(Expressions

expressions标签是开始是:<%=

    结束是:%>。 其中间内容包含一段合法的表达式;

expressions 的语法:<%= expression %>

范例:

<font color="blue"><%= getName() %></font>

<%= (new java.util.Date()).toLocaleString() %>

表达式在执行后会被自动转化为字符串,然后显示出来。

 

声明(Declarations

JSP 程序中声明合法的变量和方法。

起始标记是: <%!

终止标记是: %>

声明的语法:

<%! declaration; [ declaration; ]+ ... %>

示例:

<%! int i = 0; %>

<%! int a, b, c; %>

<%! public String speak(){ return “”; } %>

<%!

          int i=0; 

          public String speak(){ return “”; }

    %>

注意:使用<%! %>方式所声明的变量为全局变量,即表示:若同时个用户在执行此JSP网页时,将会共享此变量

jsp内建对象是)(属于脚本元素)jsp中预定义好的对象;开发者可以在jsp直接使用,无需定义和创建。

Jsp内建对象有:  (蓝色要求撑握)

page

out

request

response

session

application

config

exception

pageContext 

 

动作元素

动作元素实际就是jsp页面的一些标记,通过解释转换成相应的java代码,达到某些功能。

动作元素与指令元素不同,动作元素是在客户端请求时动态执行的,每次有客户端请求时可能都会被执行一次,而指令元素是在编译时被编译执行,它只会被编译一次。

一个JSP动作元素,通过它可以操作隐含对象和其它服务器端对象,也能够定义新的脚本变量。

动作元素(Actions)遵循XML的语法,由一个开始标记开始,一个主体和一个结束标记。如果主体是空的,它也可以使用空标记。标记必须有一个前缀 ”jsp:”

技术分享

上面中:<jsp:useBean scope 是设置其范围的:例如可以设这些值

<jsp:useBean scope = page|request|session|application>

<%@includejsp:include的区别

<%@ include file="date.jsp" %>

<jsp:include page="date.jsp" flush="true"/>

include编译指令是在JSP程序的转换时期就将file属性所指定的程序内容嵌入,然后再编译执行;

include指令在转换时期是不会被编译的,只有在客户端请求时期如果被执行到才会被动态的编译载入

根据运行时的情况来决定要引入哪一个页面

只生成一个class文件

多个

Include不能带参数

 

<jsp:include>可以

 

同一个request对象

不同的request对象,可以取得包含它的页面的参数,并添加了自己的参数

<%@ include file=“”%>在编译时包含进主组件,称之为静态包含; 效率相比高

<jsp:include page=“”> 在请求运行时包含进主组件,称之为动态包含; 效率相比低

 

常用

不常用

 

<jsp:forward>

该操作允许将请求转发到另一个web组件(JSPServlet,HTML)。一旦遇上此标记即会停止执行当前的JSP,转而执行被转发的资源。和Servlet和的请求转发相似。

格式:<jsp:forward page=""/>

<jsp:param>

jsp:param操作被用来以名-值对的形式为其他标签提供附加信息。写一般与<jsp:forward><jsp:include>,<jsp:plug>一起使用。

它的使用方式如下:

<jsp:param name="paramName"  value="paramValue"/>

<jsp:include page=“userinfo.jsp”>

<jsp:param name=“username” value=“hellking”>   ….

</jsp:include>

<jsp:forward page=“userinfo.jsp”>

<jsp:param name=“username” value=“hellking”>

 

forwardsendredirect的区别

Sendredirect

Forward

是不同的request

虽然是不同的对象,但是,可以取到上一个页面的内容

send后的语句会继续执行,除非return

forward后的语句不会继续发送给客户端

速度慢

速度快

需要到客户端的往返,可以转到任何页面,

服务器内部转换,

地址栏有变化

地址栏没有变化

可以传参数,直接写在url后面

可以传参数

/代表的是http://127.0.0.1/

<%response.sendRedirect("/test/ServletToJSP");%>

<form action="/test/ServletToJSP">

<a href="/test/ServletToJSP">test</a>

/代表的是http://127.0.0.1/test

this.getServletContext().getRequestDispatcher ("/servlet_jsp/ServletUseJsp.jsp")
.forward(req, resp);

并且只能以/开头

常用

常用

 

Cookie session的区别

注意cookie有时候禁不掉

Cookie

session

存储在客户端

存储在服务器端

两种类型

有声明周期

无声明周期

两种实现方式

依赖于cookie

url重写

父路径不能访问子路径的cookie

同一个session的窗口共享一个session

典型应用:

3个月不用再登陆

购物车(http://www.china-pub.com/

典型应用:

用户登陆

购物车也可以用session实现。·

不可靠

可靠

 


以上是关于jsp详细说明的主要内容,如果未能解决你的问题,请参考以下文章

在 JSP 中的 <% %> 代码片段中添加链接

JSP基础

Android 嵌套片段方法

day06-jsp

jsp

详细实例说明+典型案例实现 对动态规划法进行全面分析 | C++