- 浏览: 206699 次
- 性别:
- 来自: 紫禁城
文章分类
最新评论
-
a1439226817:
<!doctype html><html l ...
发布一个支持N级下拉列表联动的控件 -
a1439226817:
也不高个测试的demo,别人怎么用啊
发布一个支持N级下拉列表联动的控件 -
davaidgao:
不全啊,这是
Spring3.x权威开发指南 -
caizi12:
对于map绑定很是不方便,现在的做法,需要创建一User类,再 ...
浅谈 SpringMVC 数据绑定 -
joeyhuang:
不全啊..
Spring3.x权威开发指南
1.
Jsp指令:
语法:<%@ 指令名 属性="值"%>.
jsp指令负责告诉jsp引擎如何把页面翻译成servlet.
page指令:用于定义jsp页面的各种属性,最好放在jsp页面的起始位置,属性有language,extends,import,session,buffer,autoFlush,isThreadSafe,info,isErrorPage,contentType,pageEncoding,isELIgnored.
include指令:在后面与include标签对比讲解.
2.
out对象:这个out不是servlet里面的out.是PageContext.getWriter()方法返回的out对象.
实验1:
<%
out.println("first");
response.getWriter("second");
%>
结果如下:
second
first
为什么out的后输出?这是因为jsp引擎先把内容放到PageContext.getWriter()方法返回的out对象的缓冲区.写完后再交给servlet的response.getWriter()方法写到servlet引擎提供的缓冲区,缓冲区再把内容写到客户端.
实验2:
<%
ServletOutputStream sos = response.getOutputStream();
sos.println("hehe");
%>这里加上一个换行
运行结果报错了,为什么?上面说过,out最终会调用response.getWriter()方法返回的out对象,我们这个实验首先使用了response.getOutputStream()方法,记住我们写的所有的jsp页面都会翻译成Servlet的,然而在这里的代码中输出换行符时又去调用了response.getWriter()方法,而response的getWriter()和getOutputStream()不能同时在一个方法里面调用,所以报错了.注意:用了ServletOutputStream 就不能再使用out对象了.
实验3:
<%
RequestDispatcher rd = application.getRequestDispatcher("/test.html");
rd.forward(request,response);
%>在这里回车
结果报告有错.为什么?
实际上当调用forward方法时,是去找了一个缺省的servlet,这个缺省的servlet使用的是getOutputStream()方法,而这里的回车使用的是jsp的out对象打印出来的.这个out对象最终要使用的是getWriter(),而上面说过response的getWriter()和getOutputStream()不能同时使用,所以报错了.当然在前面加上回车也是一样的效果.
3.
pageContext对象:->request->session->application
pageContext对象代表此jsp页面,它是通过调用JspFactory.getPageContext方法返回的,在自定义标签用的非常多.
可以使用pageContext得到其他8大内置对象.
实验4:
这是一个换行
<%
1.//RequestDispatcher rd = application.getRequestDispatcher("/test.html");
//rd.forward(request,response);
2. pageContext.forward("/test.html");
%>
第一种方法会出错,第二种不会,为什么?
第一种出错的原因我们在上面说过,第二种为什么不会出错呢?我们说过,pageContext包装了其他八大隐式对象,所以它的forward方法内部也是调用了request.getRequestDispatcher的forward方法,但是在执行RequestDispatcher的forward方法之前调用了out.clear()方法.这样就不会出错了,去掉前面的换行,在%>后面加一个换行,两种方法都会报错.
几个常用的方法:
setAttribute(String name,Object object);
setAttribute(String name,Object object,int scope);scope代表指定的范围(page,request,session,application)
getAttribute(String name);
getAttribute(String name,int scope);
removeAttribute(String name);
findAttribute(String name);此方法依次从page,request,session,appllication这四个范围去找,直到找到为止.如果没找到则返回null.
4.
jsp标签:
<%@ include file=""%>:静态包含,a包含b,编译过程中a会受到b的jsp指令的影响,例如,b中有一个isELIgnored指令,会影响b,效率更高,不仅仅是引入输出内容,引入共同的的编译元素,不会检查所含文件的变化,适用于包含静态页面
<jsp:include page=""/>:动态包含,a包含b,a在执行过程中调用b,page的值可以是变量.它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数
<jsp:forward>:此forward调用的pageContext的forward然后return了
<jsp:param>:用于给上面两个标签传参数.
以下是jsp2.0里面才可以使用的标签:
<jsp:scriptlet>:相当于<%%>
<jsp:scriptlet>
int x = 3;
if(x < 5){
out.println(x);
}
</jsp:scriptlet>
会报错.因为在此使用了"<"这个符号,必须用
<![CDATA[
代码
]]>
<jsp:declartion>
</jsp:declaration>相当于<%!%>
<jsp:expression>
</jsp:expression>相当于<%=%>
<jsp:directive.指令名 属性="值"/>相当于<%@ page 属性="值"%>
<%@ page contentType="text/html;charset=gb2312"%>
<%
out.println("中国");
%>
和
<%
response.setContentType("text/html;charset=gb2312");
out.println("中国");
%>
的效果是不一样的.前者打印出了"中国"两字,后者打印出来的是乱码,为什么呢?
前者告诉jsp引擎按照指定的contentType去把jsp的内容翻译成servlet,因为charset指定为了gb2312,所以正常的输出了.
后者为什么是乱码呢?这是因为jsp源文件的中文字符在翻译成Servlet源文件时已经不是其正确的unicode编码了,当服务器把这两个字符按照gb2312输出正文时,出现的就是乱码了.
<jsp:setProperty name="date" property="time" param="time"/>
和
<jsp:setProperty name="date" property="time" value="<%=Integer.parseInt(request.getParameter("time"))%>"/>
意思是一样的.
自省机制:<jsp:setProperty name="date" property="*"/>
这种形式用于对javaBean实例对象中的多个属性赋值,它表示将请求消息中的参数逐一与javaBean实例对象中的属性进行比较,如果两个属性同名,则将该参数值赋值给该属性.注意:必须是同名的才赋值.
<jsp:useBean id="date" class="java.util.Date" scope="request"/>
这个jsp标签的含义为:
在指定范围(这里是request,如果不写,默认为page)内去找一个名字为date的对象,如果找到了则把它取出来,如果没找到则实例化一个新的类型为java.util.Date的名字为date的对象,并将它保存在request中,
<jsp:useBean id="date" class="java.util.Date" scope="request">
......
</jsp:useBean>
如果上面的语句这样写,其含义则为:
在指定范围(这里是request,如果不写,默认为page)内去找一个名字为date的对象,如果找到了则把它取出来,"......"地方的代码不再执行.如果没找到则实例化一个新的类型为java.util.Date的名字为date的对象,并将它保存在request中,还将执行"......"地方的代码.
5.
forward() 与redirect()的区别?
答:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用sendRedirect()方法。
发表评论
-
发布一个支持N级下拉列表联动的控件
2010-10-29 14:38 1351最近,由于工作的需要,写了一个联动下拉列表控件,理论上支持N级 ... -
Tomcat内存溢出的三种情况及解决办法分析
2010-08-23 16:30 809Tomcat内存溢出的原因 在生产环境中to ... -
web.xml元素介绍
2010-08-23 16:27 912每一个站的WEB-INF下都有一个web.xml的设定文件,它 ... -
什么是交互设计(Interaction Design)?
2009-02-11 09:16 1374什么是交互设计(Interaction Design)? ... -
Alan Cooper 的交互设计观(转载)
2009-02-11 09:23 949Alan Cooper 的交互设计观 ... -
界面设计规则和规范
2009-02-11 09:38 868界面设计规则和规范 ... -
UI设计流程
2009-02-11 09:41 731UI设计流程 ... -
用户界面设计的技巧与技术
2009-02-11 09:43 684用户 ... -
UI设计,仅是画张图吗?
2009-02-11 09:44 1096UI设计,仅是画张图吗? ... -
软件界面设计要素
2009-02-11 09:51 783软件界面设计要素 界 ... -
GUI设计禁忌书摘
2009-02-13 10:47 799同一页面包含重复功能的链接或按钮。 将复选框用作单选按钮。 ... -
Tomcat配置和Web应用程序开发
2006-10-05 13:47 834◆tomcat是一个专门用 ... -
HTTP协议精解
2006-10-08 18:46 911WEB服务器和浏览器之间 ... -
Servlet开发基础
2006-10-08 20:48 8611.澄清动态网页和动态HTML网页的区别:动态网页:web服务 ... -
使用Servlet实现动态文件下载
2006-10-12 22:16 2131实现动态文件内容的下载:1.Servlet必须告诉浏览器其所输 ... -
URL编码
2006-10-21 23:24 947什么是URL编码? 当浏览 ... -
JSP简介
2006-10-21 23:26 783JSP是Java Server Page的缩写,通常JSP页 ... -
MVC模式
2006-10-22 07:53 971MVC模式 所谓的MVC模式就是模型-视图-控制器(Model ... -
Session详解
2006-11-01 14:27 591session,中文经常翻译为会话,其本来的含义是指有始有终的 ... -
Tomcat5中文问题解决之道
2006-11-01 14:38 602在tomcat5中发现了以前处理tomcat4的方法不能适 ...
相关推荐
- **声明标签库**:在JSP页面顶部使用`<%@ taglib %>`指令来声明自定义标签库。 - **prefix**:指定前缀,用于引用该标签库中的标签。 - **uri**:指向标签库描述符(TLD)文件的URI。 - **编写Tag Handler类**:...
JSP常用标签 JSP(Java Server Pages)是一种动态网页技术,允许开发者在网页中嵌入Java代码,以生成动态内容。JSP提供了一些常用的标签,用于实现不同的功能。本文将介绍JSP中五种常用的标签:Include、Forward、...
【JSP标签大全】 JSP(JavaServer Pages)是一种服务器端的动态网页技术,它允许开发者将HTML代码与Java代码结合起来,以实现更强大的功能。其中,JSP标签是JSP的重要组成部分,提供了丰富的功能,包括调用...
**JSP标准标签库(JSTL)与C标签库详解** JSP(JavaServer Pages)标准标签库(JSTL)是Java EE平台的一部分,它提供了一套标准的标签来处理常见任务,如迭代、条件判断、XML处理等,以简化JSP页面的编写,提高代码...
### jsp自定义嵌套标签:定义与使用详解 在JavaServer Pages(JSP)技术中,自定义标签是扩展其功能的一种强大手段。而自定义嵌套标签,则是在此基础上进一步提升灵活性和重用性的机制。本文将深入探讨自定义嵌套...
在JSP页面中,通过`指令`引入自定义标签库,并使用`属性...</tag-name>`的格式调用自定义标签。 **二、自定义标签函数** 自定义标签函数是在JSP 2.0中引入的一种新的特性,它允许开发者像使用EL(Expression ...
核心标签库中的标签通常分为不同的类别,包括动作标签、指令标签和脚本元素等。 动作标签主要用于页面流控制、数据迭代、页面跳转等。例如,<jsp:forward>标签可以将用户请求转发到新的页面或资源;<jsp:param>用于...
2. **JSP指令**: 用于配置页面信息,如导入包、定义页面编码等。例如,`; charset=UTF-8" pageEncoding="UTF-8"%>`。 3. **JSP声明**: 用`! %>`包围,可以在页面范围内声明变量或方法。 ### JSP生命周期 JSP经过...
在JavaServer Pages (JSP)技术中,...标记处理类负责处理标签的逻辑,而TLD文件提供了元数据,将自定义标签与处理类关联起来。这个过程使得开发者可以创建具有特定功能的可重用组件,增强JSP页面的灵活性和可维护性。
在JSP页面中,可以通过`<jsp:taglib>`指令引入自定义标签库,然后使用定义的标签,如`<mytag:customTag attribute="value">`。 本资源“jsp自定义标签大全”包含了一系列示例和详细教程,涵盖了从基础到高级的...
3. **在JSP页面中使用自定义标签**:在JSP页面中,通过`<jsp:taglib>`指令引入TLD文件,然后就可以像使用内置标签一样使用自定义标签了。例如,`<myTag:myTag attribute1="value1" attribute2="value2">`。 在给定...
- 标签是核心标签库中常用的输出标签,它能够输出表达式的结果,并提供了可选的属性如value(要输出的值)、default(当value为null时显示的默认值)和escapeXml(是否转义XML特殊字符)。 2. 变量操作标签:用于...
本教程将深入探讨JSP自定义标签的实例与详细讲解。 一、JSP自定义标签概述 JSP自定义标签是类似于HTML标签的自定义组件,但它们提供了更强大的功能,可以封装Java代码,提供复杂的业务逻辑。自定义标签通过TLD(Tag...
3. **在JSP页面中使用**:在JSP页面中,通过`<%@ taglib %>`指令引入自定义标签库,然后就可以像使用内置标签一样使用自定义标签了。 二、分页封装 分页是网页应用中常见的需求,通过自定义标签可以方便地实现。...
3. **JSP页面使用**: 在JSP页面中,我们通过`<%@ taglib %>`指令导入自定义标签库,并使用定义的标签。例如: ```jsp , World!"/> ``` 在`studyRemark`目录中,你可以找到详细的教程和示例代码,这些资源将帮助你...
在JSP页面中,可以通过`<%@ taglib %>`指令引入自定义标签库,然后像使用标准JSP标签一样使用自定义标签。 7. **优点** - **提高可维护性**:自定义标签将业务逻辑与显示逻辑分离,使得代码更易于理解和维护。 -...
1. JSP基本语法:包括脚本元素(scriptlets、表达式、声明),JSP指令(page、include、taglib)以及JSP动作标签(jsp:useBean、jsp:setProperty等)。 2. JSP自定义标签生命周期:了解标签的初始化、开始、结束等...
**5.4 - 5.14 JSP指令和元素** JSP还包括一系列的指令,如`<jsp:include>`, `<jsp:forward>`, `<jsp:setProperty>`等,它们提供了更高级的功能,如页面包含、转发、操作bean属性等。例如: - **Include指令**:`...
- **松耦合**:标签与页面逻辑分离,便于组件的独立开发和测试。 5. **示例** `jsptag05`可能是一个包含JSP自定义标签样例的文件,可能包括了创建自定义标签的全过程,例如定义了一个用于格式化日期的自定义标签`...
### JSP常用方法整理:深入理解与应用 JSP(JavaServer Pages)是Sun Microsystems公司推出的服务器端技术,用于创建动态网页。它结合了HTML、XML标记语言与Java编程语言的功能,使得在Web应用程序中嵌入Java代码...