`
webdev2014
  • 浏览: 680378 次
文章分类
社区版块
存档分类
最新评论

felayman——细学JSP

阅读更多

1. 什么是JSP

l JSP

– 简单的说,就是嵌入了Java代码的HTML,由静态HTML、专用的JSP标签和Java代码组成

– 服务器端的技术。在后台被自动转换成servlet

– 仅在修改后的第一次被访问时,才会被转换成servlet并进行编译,创建JSP唯一的一个一实例,并调用_jspInit完成初始化,之后每个用户请求都会创建一个调用JSP实例的_jspService方法的线程。因而多个并发请求会导致多个线程同时调用_jspService

– Tomcat中,默认目录下的JSP文件被转换生成的servlet文件及编译后生成的class文件被放在install_dir/work/ Catalina/ localhost/ _/org/apache/jsp目录下

JSP页面page指令的15个常用属性

<%@pageimport="java.util.Date"%>

<%@ page language="java"contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPEhtml>

<html>

<head>

<meta charset="UTF-8">

<title>第一个JSP页面</title>

<!-- JSP里的page指令的15个属性

1.language 设置JSP页面的默认语言

2.extends 设置JSP页面继承的java类

3.import 导入JSP页面所需要的类

4.pageEncoding 设置JSP页面的编码格式

5.contentType 设置JSP页面的MIME类型和字符编码

6.session 设置JSP页面是否使用HTTP的session

7.buffer 设置JSP的out输出对象使用的缓冲区大小

8.autoFlush 设置JSP页面页面的缓存满的时候是否自动刷新

9.isErrorPage 设置当前JSP页面是否被设置成错误处理页面

10.info 属性定义一个可以在 servlet 中通过 getServletInfo 方法获取的字符串

11.errorPage 用来指定一个 JSP 页面,由该页面来处理当前页面中抛出但未被捕获的任何异常

12.isThreadSafe 控制由 JSP页面生成的 servlet 是允许并行访问

13.isELIgnored 略(true)JSP 2.0 表达式语言(EL),还是进行正常的求值(false)

-->

</head>

<body>

<%

Date date = new Date();

out.print(date);

%>

</body>

</html>

1. include指令

JSP的用法中,经常通过Include指令来包含另外一个页面。

当我们对这些页面进行编译时,当前的页面会与include指令指定的页面进行合并。

这就是JSPinclude的运行机制

2. taglib指令

可以通过taglib指令标识申明该页面中所使用的标签库,jstl,struts2

4. JSP的动作标签

在JSP中的动作指令包括:Include、 Forward、 UseBean、 GetProperty、 SetProperty、 Plugin。
一、Include指令
<jsp:include>标签表示包含一个静态的或者动态的文件。
语法:
<jsp:include page="path" flush="true" />
or
<jsp:include page="path" flush="true">
<jsp:param name="paramName" value="paramValue" />
</jsp:include>
注:
1、page="path" 为相对路径,或者代表相对路径的表达式。
2、flush="true" 必须使用flush为true,它默认值是false。
3、<jsp:param>子句能让你传递一个或多个参数给动态文件,也可在一个页面中使用多个<jsp:param>来传递多个参数给动态文件。
二、Forward指令
<jsp:forward>标签表示重定向一个静态html/jsp的文件,或者是一个程序段。
语法:
<jsp:forward page="path"} />
or
<jsp:forward page="path"} >
<jsp:param name="paramName" value="paramValue" />……
</jsp:forward>
注:
1、page="path" 为一个表达式,或者一个字符串。
2、<jsp:param> name 指定参数名,value指定参数值。参数被发送到一个动态文件,参数可以是一个或多个值,而这个文件却必须是动态文件。要传递多个参数,则可以在一个JSP文件中使用多个<jsp:param>将多个参数发送到一个动态文件中。
三、UseBean指令
<jsp:useBean>标签表示用来在JSP页面中创建一个BEAN实例并指定它的名字以及作用范围。
语法:
<jsp:useBean id="name" scope="page | request | session | application" typeSpec />
其中typeSpec有以下几种可能的情况:
class="className" | class="className" type="typeName" | beanName="beanName" type="typeName" | type="typeName" |
注:
你必须使用class或type,而不能同时使用class和beanName。beanName表示Bean的名字,其形式为“a.b.c”。
四、GetProperty指令
<jsp:getProperty>标签表示获取BEAN的属性的值并将之转化为一个字符串,然后将其插入到输出的页面中。
语法:
<jsp:getProperty name="name" property="propertyName" />
注:
1、在使用<jsp:getProperty>之前,必须用<jsp:useBean>来创建它。
2、不能使用<jsp:getProperty>来检索一个已经被索引了的属性。
3、能够和JavaBeans组件一起使用<jsp:getProperty>,但是不能与Enterprise Java Bean一起使用。
五、SetProperty指令
<jsp:setProperty>标签表示用来设置Bean中的属性值。
语法:
<jsp:setProperty name="beanName" prop_expr />
其中prop_expr有以下几种可能的情形:
property="*" | property="propertyName" | property="propertyName" param="parameterName" | property="propertyName" value="propertyValue"
注:
使用 jsp:setProperty 来为一个Bean的属性赋值;可以使用两种方式来实现。
1、在jsp:useBean后使用jsp:setProperty:
<jsp:useBean id="myUser" … />

<jsp:setProperty name="user" property="user" … />
在这种方式中,jsp:setProperty将被执行。
2、jsp:setProperty出现在jsp:useBean标签内:
<jsp:useBean id="myUser" … >

<jsp:setProperty name="user" property="user" … />
</jsp:useBean>
在这种方式中,jsp:setProperty只会在新的对象被实例化时才将被执行。
* 在<jsp:setProperty>中的name值应当和<jsp:useBean>中的id值相同。
六、Plugin指令
<jsp:plugin>标签表示执行一个applet或Bean,有可能的话还要下载一个Java插件用于执行它。
语法:
<jsp:plugin
type="bean | applet"
code="classFileName"
codebase="classFileDirectoryName"
[ name="instanceName" ]
[ archive="URIToArchive, ..." ]
[ align="bottom | top | middle | left | right" ]
[ height="displayPixels" ]
[ width="displayPixels" ]
[ hspace="leftRightPixels" ]
[ vspace="topBottomPixels" ]
[ jreversion="JREVersionNumber | 1.1" ]
[ nspluginurl="URLToPlugin" ]
[ iepluginurl="URLToPlugin" ] >
[ <jsp:params>
[ <jsp:param name="parameterName" value="{parameterValue | <%= expression %>}" /> ]+
</jsp:params> ]
[ <jsp:fallback> text message for user </jsp:fallback> ]
</jsp:plugin>
注:
<jsp:plugin>元素用于在浏览器中播放或显示一个对象(典型的就是applet和Bean),而这种显示需要在浏览器的java插件。
当Jsp文件被编译,送往浏览器时,<jsp:plugin>元素将会根据浏览器的版本替换成<object>或者<embed>元素。注意,<object>用于HTML 4.0 ,<embed>用于HTML 3.2。
一般来说,<jsp:plugin>元素会指定对象是Applet还是Bean,同样也会指定class的名字,还有位置,另外还会指定将从哪里下载这个Java插件

Request对象

<%@ page language="java"contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPEhtml>

<html>

<head>

<meta charset="UTF-8">

<title>request</title>

</head>

<body>

<%

request.setCharacterEncoding("utf-8");

%>

<%="传递方式:"+request.getMethod()%><br/>

<%="字符编码方式:"+request.getCharacterEncoding()%><br/>

<%="使用的协议:"+request.getProtocol()%><br/>

<%="客户端地址:"+request.getRequestURI()%><br/>

<%="客户端地址:"+request.getRequestURL()%><br/>

<%="客户端IP地址:"+request.getRemoteAddr()%><br/>

<%="获取服务器端口:"+request.getServerPort()%><br/>

<%="获取服务器名称:"+request.getServerName()%><br/>

<%="获取主机名:"+request.getRemoteHost()%><br/>

<%="获取脚本文件路径:"+request.getServletPath()%><br/>

<%="获取协议头部信息:"+request.getHeader("host")%><br/>

<%="获取协议头部信息:"+request.getHeader("user-agent")%><br/>

<%="获取协议头部信息:"+request.getHeader("accept-language")%><br/>

</body>

</html>

Response

<%@ page language="java"contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPEhtml>

<html>

<head>

<meta charset="UTF-8">

<title>response</title>

</head>

<body>

<%

//重定向页面

response.sendRedirect("out.jsp");

//禁止使用缓存

response.setHeader("Cache-Contral","no-store");

//禁用缓存

response.setHeader("Expires","0");

//设置页面自动刷新

response.setHeader("refresh","1");

//定时跳转页面

response.setHeader("refresh","5;URL=out.jsp");

//强制将缓冲区内容输出客户端

response.flushBuffer();

//获取缓冲区大小

response.getBufferSize();

//设置缓冲区大小

response.setBufferSize(1023);

//清除缓冲区大小

response.reset();

//检查服务器端是否已经把数据写入到了客户端

response.isCommitted();

%>

</body>

</html>

Session

1.test1.jsp

<%@ page language="java"contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPEhtml>

<html>

<head>

<meta charset="UTF-8">

<title>Session</title>

</head>

<body>

<%

String name = "felayman";

session.setAttribute("username",name);

%>

<jsp:forward page="getsession.jsp"></jsp:forward>

</body>

</html>

3. test.jsp

<%@ page language="java"contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPEhtml>

<html>

<head>

<meta charset="UTF-8">

<title>Insert title here</title>

</head>

<body>

<%

String username = (String)session.getAttribute("username");

%>

session:<%=username %>

</body>

</html>

PageContext对象

<%@ page language="java"contentType="text/html; charset=UTF-8"

pageEncoding="UTF-8"%>

<!DOCTYPEhtml>

<html>

<head>

<meta charset="UTF-8">

<title>pageContext</title>

</head>

<body>

<!-- pageContext对象是或获取上下午对象的一个内置对象

改对象的创建和销毁是由服务器来完成的,该对象在开发的时候比较少用

-->

<%

//跳转页面

pageContext.forward("out.jsp");

%>

</body>

</html>

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics