注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

骇客归来

ぁ枫あ

 
 
 

日志

 
 

JSP语法基础

2006-10-19 17:16:49|  分类: Jsp |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
JSP的三种元素:

一 Scripting elements

Comments

<%--This is a JSP comment --%> JSP
<!--This is an HTML comment -->Html



Declarations

<%! Date now = new Date(); %>



Scriptlets

<% User user = (User)request.getAttribute("User"); if (user != null) { %>



Expressions

<%= user.getName() %>



Expression language expressions


<c:if test="${user.salary > 10000}" > ... </c:if>






Jsp内置对象:

A.request对象:该对象封装了用户提交的信息,通过调用该对象相应的方法可以获取封装的信息,即使用该对象可以获取用户提交信息。javax.servlet.http.ServletRequest

使用request对象获取信息要格外小心,要避免使用空对象,否则会出现NullPointerException异常,所以我们在使用之前先判断下得到的对象是否为null.
String textContent=request.getParameter("girl");
double number=0,r=0;
if(textContent==null) {
textContent="";
}

处理汉字信息:当request对象获取客户提交的汉字字符时,会出现乱马问题,必须进行特殊处理。首先,将获取的字符串用ISO-8859-1进行编码,并将编码存放到一个字节数组中,然后再将这个属组转化为字符窜对象即刻
String textContent=request.getParameter("boy");
byte b[]=textContent.getBytes("ISO-8859-1");
textContent=new String(b);
常用方法
getProtocol(), 
getServletPath(),
getContentLength(),
getMethod(),
getRemoteAddr(),
getRemoteHost(),
getServerName(),
getParameterName()

B.Response对象:对客户的请求做出动态的响应,向客户端发送数据。 javax.servlet.http.HttpServletResponse
1.动态响应contenType属性 当一个用户访问一个jsp页面时,如果该页面用page指令设置页面的contentType属性是text/html,那么jsp引擎将按照这种属性值作出反映。如果要动态改变这个属性值来响应客户,就需要使用response对象的setContentType(String s)方法来改变contentType的属性值。
格式:response.setContentType(String s) 参数s可取text/html,, application/x-msexcel, application/msword等。

2.Response重定向:在某些情况下,当响应客户时,需要将客户重新引导至另一个页面,可以使用response的sendRedirect(URL)方法实现客户的重定向。

C.Session对象 javax.servlet.http.HttpSession

1.什么是Session:Session对象是一个jsp内置对象,它在第一个jsp页面被装载时自动创建,完成会话期管理。

从一个客户打开浏览器并连接到服务器开始,到客户关闭浏览器离开这个服务器结束,被称为一个会话。当一个客户访问一个服务器时,可能会在这个服务器的几个页面之间反复连接,反复刷新一个页面,服务器应当通过某种办法知道这是同一个客户,这就需要session对象。

2.session对象的Id:当一个客户首次访问服务器上的一个jsp页面时,jsp引擎产生一个session对象,同时分配一个String类型的Id号,jsp引擎同时将这个Id号发送到客户端,存放在Cookie中,这样session对象和客户之间就建立了一一对应的关系。当客户再访问连接该服务器的其他页面时,不再分配给客户新的session对象,直到客户关闭浏览器后,服务器端该客户的session对象才取消,并且和客户的会话对应关系消失。当客户重新打开浏览器再连接到该服务器时,服务器为该客户再创建一个新的session对象。

3.session对象常用方法:

i.public String getId():获取session对象编号。

ii.public void setAttribute(String key,Object obj):将参数Object指定的对象obj添加到session对象中,并为添加的对象指定一个索引关键字。

iii.public Object getAttribute(String key):获取session对象中含有关键字的对象。

iv.public Boolean isNew():判断是否是一个新的客户。

D.aplication对象 javax.servlet.ServletContext

1.什么是application:

服务器启动后就产生了这个application对象,当客户再所访问的网站的各个页面之间浏览时,这个application对象都是同一个,直到服务器关闭。但是与session不同的是,所有客户的application对象都是同一个,即所有客户共享这个内置的application对象。

2.Application对象常用方法:

(1)public void setAttribute(String key,Object obj): 将参数Object指定的对象obj添加到application对象中,并为添加的对象指定一个索引关键字。

(2)public Object getAttribute(String key): 获取application对象中含有关键字的对象。

E.Out对象 javax.servlet.jsp.JspWriter

Out对象是一个输出流,用来向客户端输出数据。Out对象用于各种数据的输出。

常用方法:

(1)out.print():输出各种类型数据。

(2)out.newLine():输出一个换行符。

(3)out.close():关闭流。

F.Cookie

1.什么是Cookie:

Cookie是Web服务器保存在用户硬盘上的一段文本。Cookie允许一个Web站点在用户的电脑上保存信息并且随后再取回它。

举例来说,一个Web站点可能会为每一个访问者产生一个唯一的ID,然后以Cookie文件的形式保存在每个用户的机器上。

如果您使用IE浏览器访问Web,您会看到所有保存在您的硬盘上的Cookie。它们最常存放的地方是:c:\windows\cookies(在Win 2000中则是C:\Documents and Settings\您的用户名\Cookies )

cookie是以“关键字key=值value“的格式来保存纪录的.

2.创建一个Cookie对象,调用Cookie对象的构造函数可以创建Cookie。Cookie对象的构造函数有两个字符串参数:Cookie名字和Cookie值。

Cookie c=new Cookie(“username”,”john”);

3. jsp中如果要将封装好的Cookie对象传送到客户端,使用response的addCookie()方法。

格式:response.addCookie(c)

4.读取保存到客户端的Cookie,使用request对象的getCookies()方法,执行时将所有客户端传来的Cookie对象以数组的形式排列,如果要取出符合需要的Cookie对象,就需要循环比较数组内每个对象的关键字。

G.page

The implicit page object references an instance of the JSP's page implementation class and is declared of type Object. The page object is rarely used in scripting elements and simply serves as a link between the JSP and its implementing servlet.

H.pageContext

The pageContext object is slightly different in its functionality from the rest of the available implicit objects. A pageContext instance provides the JSP developer with access to all of the available JSP scopes and to several useful page attributes such as the current request and response, the ServletContext, HttpSession, and ServletConfig to name but a few.

I.exception

The implicit exception object is only available to those JSP pages that declare themselves as error pages using the following page directive (You'll learn more about directives shortly!).

    <%@ page isErrorPage="true" %>  

The application object itself is an instance of a java.lang.Throwable and will represent a runtime error that occurred during the request process.

J.config

The config object simply provides the JSP developer with access to the ServletConfig object that is used by the web container to configure the JSP and its implementation servlet. The ServletConfig interface is most commonly used to provide access to any initialization parameters that have been configured for either the JSP or its implementation servlet via the deployment descriptor of the web application.







二 Directives(指令)

page directives

语法:

<%@ page
[ language="java" ]
[ extends="package .class" ]
[ import="{package .class | .*}, ..." ]
[ session="true|false" ]
[ buffer="none|8kb|sizekb" ]
[ autoFlush="true|false" ]
[ isThreadSafe="true|false" ]
[ info="text" ]
[ errorPage="relativeURL" ]
[ contentType="mimeType [ ;charset=characterSet ]" | "text/html ; charset=ISO-8859-1" ]
[ pageEncoding ="true|false" ]
[ isELIgnored ="true|false" ]
[ errorPage ="true|false" ]
[ info ="true|false" ]
[ isErrorPage="true|false" ]
%>




include directives

<%@ include file="relativeURL" %>



taglib directives

<%@ taglib uri="/tagLibraryURI" prefix="tagPrefix" %>
<%@ taglib uri="/WEB-INF/lib/myTaglib.jar" prefix="myPrefix" %>

Relative Uri
<webapp>
<taglib-uri>/myTaglib</taglib-uri>
<taglib-location>/WEB-INF/tlds/myTaglib.tld</taglib-location>
</webapp>
<%@ taglib uri="/myTaglib" prefix="myPrefix" %>








三 Action elements



Standard actions

一 <jsp:include page=""/>
他和<%@ include file=""%> 的区别在于 <%@ include file=""%>被翻译为servlet的时候是直接将他包含的页面的内容嵌套在代码中,而 <jsp:include page=""/>则要通过 org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "被包含的页面", out, false);而且他还在servlet中生成了一个静态构造块
static {
_jspx_dependants = new java.util.ArrayList(1);
_jspx_dependants.add("被包含的页面");
}
一般来说使用<%@ include file=""%>包含静态内容,<jsp:include page=""/>包含动态内容
<jsp:include page="${param.nextPage}" />




    <jsp:useBean scope="page|request|session|application" typeSpec/>  
<jsp:getProperty property="propertyName" />  
 <jsp:setProperty property="property" value="value"/>  



where:

    typeSpec ::=   |                   
class="className" type="typeName"   |                   
beanName="beanName" type="typeName" |                   
type="typeName" beanName="beanName" |                   
type="typeName"  



三、
<jsp:forward page="/pages/login.jsp">
<jsp:param value="Dan" />
</jsp:forward>



Custom actions

<%@ taglib uri="/myTagLib" prefix="myPrefix" %>
<myPrefix:foo> ... </myPrefix:foo>



JSTL actions



Core

Internationalization (I18n) and Formatting

XML

SQL





  评论这张
 
阅读(318)| 评论(3)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018