JSP 使用
JSP教程: http://www.w3cschool.cc/jsp/jsp-tutorial.html
jsp语法:
任何语言都有自己的语法,JAVA中有,JSP虽然是在JAVA上的一种应用,但是依然有其自己扩充的语法,而且在JSP中,所有的JAVA语句都可以使用。
- <%= %>表达式。不能用分号结束之
JSP引擎在翻译脚本表达式时,会将程序数据转成字符串,然后在相应位置用out.print(…) 将数据输给客户端;不能用分号结束之
- <% %>脚本:多行Java代码,定义变量、编写语句等但不能定义方法。
JSP引擎在翻译JSP页面中,会将JSP脚本片断中的Java代码将被原封不动地放到Servlet的_jspService方法中。
- <%! %>声明:变量、方法等。
JSP页面中编写的所有代码默认会翻译到servlet的_jspService方法中, 而Jsp声明中的java代码被翻译到_jspService方法外;JSP隐式对象的作用范围仅为Servlet的_jspService方法,故在JSP声明中不能使用这些隐式对象。
- <%-- --%>注释
- <%@ %>指令:设置与整个jsp页面相关的属性(详见参考文献:http://www.cnblogs.com/xdp-gacl/p/3778993.html)。三个:
- <%@ page ... %> 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等。
无论page指令出现在JSP页面中的什么地方,它作用的都是整个JSP页面,为了可读性常放在页首。
- <%@ include ... %> 包含其他文件。
用于引入其它JSP页面(即使扩展名不是.jsp也按jsp处理),如果使用include指令引入了其它JSP页面,那么JSP引擎将把这两个JSP翻译成一个servlet。所以include指令引入通常也称之为静态引入。
JSP规范建议使用.jspf(JSP fragments(片段))作为静态引入文件的扩展名。 - <%@ taglib ... %> 引入标签库的定义,可以是自定义标签
- <%@ page ... %> 定义页面的依赖属性,比如脚本语言、error页面、缓存需求等等。
jsp行为:
详见:http://www.cnblogs.com/xdp-gacl/p/3788369.html
<jsp:action_name attribute="value" />
jsp:include 用于在当前页面中包含静态或动态资源
jsp:useBean 寻找和初始化一个JavaBean组件,对应的JavaBean必须有一个无参数的构造器。详见:http://www.cnblogs.com/xdp-gacl/p/3871730.html
jsp:setProperty 设置 JavaBean组件的值
jsp:getProperty 将 JavaBean组件的值插入到 output中
jsp:forward 服务端页面跳转,携带request和response对象,跳转时浏览器URL不变
jsp:param 当使用<jsp:include>和<jsp:forward>标签引入或将请求转发给其它资源时,可以使用<jsp:param>标签向这个资源传递参数。
jsp:plugin 用于在生成的HTML页面中包含Applet和JavaBean对象
jsp:element 动态创建一个XML元素
jsp:attribute 定义动态创建的XML元素的属性
jsp:body 定义动态创建的XML元素的主体
jsp:text 用于封装模板数据
jsp隐含对象:9个
详见:http://www.cnblogs.com/xdp-gacl/p/3779872.html
- request HttpServletRequest类的实例
- response HttpServletResponse类的实例
- out PrintWriter类的实例,用于把结果输出至网页上
- session HttpSession类的实例
- application ServletContext类的实例,与应用上下文有关
- config ServletConfig类的实例
- pageContext PageContext类的实例,提供对JSP页面所有对象以及命名空间的访问。
JSP技术中最重要的一个对象,它代表JSP页面的运行环境,这个对象不仅封装了对其它8大隐式对象的引用,它自身还是一个域对象(容器),可以用来保存数据。并且,这个对象还封装了web开发中经常涉及到的一些常用操作,例如引入和跳转其它资源、检索其它域对象中的属性等。 getException方法返回exception隐式对象
getPage方法返回page隐式对象
getRequest方法返回request隐式对象
getResponse方法返回response隐式对象
getServletConfig方法返回config隐式对象
getServletContext方法返回application隐式对象
getSession方法返回session隐式对象
getOut方法返回out隐式对象 pageContext对象在jsp自定义标签开发中特别重要。pageContext对象可以作为容器来使用,因此可以将一些数据存储在pageContext对象中。
pageContext对象的常用方法:
1 public void setAttribute(java.lang.String name,java.lang.Object value)
2 public java.lang.Object getAttribute(java.lang.String name)
3 public void removeAttribute(java.lang.String name)
4 public java.lang.Object findAttribute(java.lang.String name)重点介绍一下findAttribute方法,这个方法是用来查找各个域中的属性的,查看这个方法的API可以看到关于这个方法的描述:
Searches for the named attribute in page, request, session (if valid), and application scope(s) in order and returns the value associated or null.当要查找某个属性时,findAttribute方法按照查找顺序"page→request→session→application"在这四个对象中去查找,只要找到了就返回属性值,如果四个对象都没有找到要查找的属性,则返回一个null。
- page 类似于Java类中的this关键字。表示当前的一个JSP页面,可理解为一个对象本身,即:把一个JSP当作一个对象来看待。page对象在开发中几乎不用。
- Exception Exception类的对象,代表发生错误的JSP页面中对应的异常对象。
一般情况下exception对象在Jsp页面中获取不到,设置page指令的isErrorPage属性为"true"来显式声明Jsp页面是一个错误处理页面后,Jsp引擎在将jsp页面翻译成Servlet时在Servlet的 _jspService方法中会声明一个exception对象,
然后将运行jsp出错的异常信息存储到exception对象中,这样在Jsp页面中就能使用exception对象。
jsp迭代:http://www.runoob.com/jsp/jstl-core-foreach-tag.html
虽然jsp页面里能嵌入java代码,这点很强大,但对于在jsp页面获取后台传来的数据这种场合,java也无能为力,此时可以借助jsp标准标签库(JSTL)。在jsp页面中可以通过${parakey}获取控制器传向页面的值,但要如果返回的个list,如何迭代取出?可以通过<c:forEach>标签
1、jsp c:forEach标签的属性。(<c:forEach items="${stuList}" begin="1" end="20" step="2" var ="student" varStatus="status">标签体内的内容</c:forEach>)
items:要被循环的对象;
var:代表当前循环到的元素;
begin:指定开始循环元素的下标(从0开始);
end:指定循环的最后一个元素的下标;
step:每次循环的步长;
varStatus:由 varStatus
属性命名的变量并不存储当前索引值或当前元素,而是赋予javax.servlet.jsp.jstl.core.LoopTagStatus
类的实例。该类定义了一组特性,它们描述了迭代的当前状态,下面列出了这些特性:
特性 | Getter | 描述 | 使用 |
current | getCurrent() |
当前这次迭代的(集合中的)项,与上述student变量功能一样 | status.current |
index | getIndex() |
当前这次迭代从 0 开始的迭代索引 | status.index |
count | getCount() |
当前这次迭代从 1 开始的迭代计数 | status.count |
first | isFirst() |
用来表明当前这轮迭代是否为第一次迭代的标志,返回true或false | status.first |
last | isLast() |
用来表明当前这轮迭代是否为最后一次迭代的标志,返回true或false | status.last |
begin | getBegin() |
begin 属性值 |
status.begin |
end | getEnd() |
end 属性值 |
status.end |
step | getStep() |
step 属性值 |
status.step |
JSP 使用的更多相关文章
- myeclipse学习总结一(在MyEclipse中设置生成jsp页面时默认编码为utf-8编码)
1.每次我们在MyEclispe中创建Jsp页面,生成的Jsp页面的默认编码是"ISO-8859-1".在这种情况下,当我们在页面中编写的内容存在中文的时候,就无法进行保存.如下图 ...
- jsp前端实现分页代码
前端需要订一page类包装,其参数为 private Integer pageSize=10; //每页记录条数=10 private Integer totalCount; //总记录条数 priv ...
- jsp中出现onclick函数提示Cannot return from outside a function or method
在使用Myeclipse10部署完项目后,原先不出错的项目,会有红色的叉叉,JSP页面会提示onclick函数错误 Cannot return from outside a function or m ...
- jsp页面无法识别el表达式的解决方案
今天在写一个springmvc的小demo时,碰到一个问题,在jsp页面中书写为${user.username}的表达式语言,在浏览器页面中仍然显示为${user.username},说明jsp根本不 ...
- 浅谈JSP中include指令与include动作标识的区别
JSP中主要包含三大指令,分别是page,include,taglib.本篇主要提及include指令. include指令使用格式:<%@ include file="文件的绝对路径 ...
- 浅谈JSP注释
HTML注释 JSP文件是由HTML尿急和嵌入的Java程序片段组成的,所以在HTML中的注释同样可以在JSP文件中使用.注释格式:<!--注释内容--> <!-- 欢迎提示信息! ...
- JSP 标准标签库(JSTL)
JSP 标准标签库(JSTL) JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能. JSTL支持通用的.结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签, ...
- Nginx服务器之Nginx与tomcat结合访问jsp
本文使用linux centos系统 本文概述: JSP是一种动态网页技术标准.使用的方式是在HTML文件中插入程序段和JSP标记,而形成JSP文件.使用JSP开发WEB应用可以跨平台开发.但jsp需 ...
- 基于jsp+servlet图书管理系统之后台万能模板
前奏: 刚开始接触博客园写博客,就是写写平时学的基础知识,慢慢发现大神写的博客思路很清晰,知识很丰富,非常又价值,反思自己写的,顿时感觉非常low,有相当长一段时间没有分享自己的知识.于是静下心来钻研 ...
- JSP页面跳转的几种实现方法
使用href超链接标记 客户端跳转 使用JavaScript 客户端跳转 提交表单 客户端跳转 使用response ...
随机推荐
- 史上最全Html与CSS布局技巧
单列布局水平居中水平居中的页面布局中最为常见的一种布局形式,多出现于标题,以及内容区域的组织形式,下面介绍四种实现水平居中的方法(注:下面各个实例中实现的是child元素的对齐操作,child元素的父 ...
- MVC4 WebAPI
不管是因为什么原因,结果是在新出的MVC中,增加了WebAPI,用于提供REST风格的WebService,个人比较喜欢REST风格的WebService,感觉比SOAP要轻量级一些,而且对客户端的要 ...
- CSS3 chart
利用CSS3技术生成统计图. 原理:利用元素的百分比算出旋转度数.类似于斗地主时,手拿扑克牌的形状. 程序源码: <!DOCTYPE html> <html> <head ...
- LeetCode:Remove Duplicates from Sorted Array I II
LeetCode:Remove Duplicates from Sorted Array Given a sorted array, remove the duplicates in place su ...
- iOS 苹果自带地图定位Core Location
Core Location是iOS SDK中一个提供设备位置的框架.可以使用三种技术来获取位置:GPS.蜂窝或WiFi.在这些技术中,GPS最为精准,如果有GPS硬件,Core Location将优先 ...
- java并发:中断一个正在运行的线程
要使任务和线程能安全可靠地停止,并不是一件很容易的事情,java没有提供任何机制来安全地终止线程,那么我们该怎么办呢? 下面我们先来了解一下java中的中断机制: java中断机制是一种协作机制,也就 ...
- 斯坦福机器学习实现与分析之八(kmeans算法)
Kmeans算法简介 作为无监督学习领域的一种简单的算法,Kmeans在实际应用中却是相当广泛的.其过程是通过不断交替迭代求得最优的类中心以及每个样本所属类别,具体步骤如下: 确定类别个数k 随机初始 ...
- Grunt-cli的执行过程以及Grunt加载原理
通过本篇你可以了解到: 1 grunt-cli的执行原理 2 nodeJS中模块的加载过程 Grunt-cli原理 grunt-cli其实也是Node模块,它可以帮助我们在控制台中直接运行grunt命 ...
- MOTT的学习(一)
MQTT的消息体 flag 此标志设置时,客户端或服务器尝试重新publish,PUBREL,subcribe或unsubscribe消息.这适用于消息, 其中的QoS的值大于零(0),并且需要确认. ...
- abstract和接口
接口只包含常量和抽象方法,不能实例化. abstract: 1.抽象类不能实例化, 2.可以没有抽象方法.但有了抽象方法,一定要被定义为抽象类. 3.子类没有实现父类中所有的抽象方法.子类也必须定义为 ...