仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 538|回复: 12
打印 上一主题 下一主题

[学习教程] JAVA网页编程之Spring Framework标志库初学指南

[复制链接]
山那边是海 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:24:27 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
IDE是好。java中的IDE更是百花齐放,你用jbuilder能说jbuilder赶不上vs吗?用eclipse,netbeans也很舒服啊。我就不明白“稍微差一些”那一些是从哪里差来的。初学Spring是一个服务于一切层面的applicationframework:供应了bean的设置基本,AOP的撑持,JDBC的提取框架,笼统事件撑持,等等。它有一个十分明显的特性:在某个层面上假如你不必要Spring的撑持,你就能够不利用String的class,只利用它的某一部分的功效。从它的计划理念,你能够看到String匡助你完成了真实的逻辑层和web层的分别。

  相对EJB来讲,Spring是一个轻量级的J2EE使用开辟框架。这里提到的轻量级指的是Spring框架自己,而不是说Spring只能合用于轻量级的使用开辟。Spring的轻巧表现在其框架自己的基本布局和对其他使用工具的撑持和拆卸才能,与EJB这类庞然年夜物比拟,Spring使我们把各个手艺条理之间的风险下降。EJB的内聚性较强,好比数据耐久层办理、事件办理、性命周期办理都全体交给了EJB容器中办理,内聚性的白盒特性使我们必需保持一部分可控性而往信托容器才能。而Spring则是思索怎样“不造轮子”,怎样更好的组装这些轮子,让他们更好的动弹。好比数据耐久层办理可使用hibernate,日记办理可使用jakartacommonlogging。一个对照得当的比方就是“我们要钉几个钉子,为了完成这个目标,锤子临盆商临盆了年夜巨细小一系列的锤子,每一个锤子都有一套庞大的利用办法,用来钉某种出格的钉子,了局令我们头疼不胜。办理锤子过量的成绩,经由过程spring,我们可使用几种锤子,但用起来象是只要一个锤子”。(注:这段话是在网上瞥见的,这里援用这个比方,我团体以为很活泼)关于这个框架也有一些复杂的总结:“Spring有几个次要的部分:Bean+ApplicationContext,以一种一致的、IoC的体例查找、办理、组装、利用体系的组件,代替统统工场;耐久化框架;web框架。“J2EE框架”是RodJohnson的愿景,他但愿Spring为J2EE轻量级办理计划供应自底至顶的周全基本举措措施撑持。”
  下面是关于一个新的Framework的复杂先容,听说是将来J2EE开展的偏向。之前在论坛上有关于J2EE最好组合的会商,传闻这个JSTL+Struts(或webwork)+Spring+Hibernate的组合很被看好,假如你感乐趣的话,能够到SpringFramework中文论坛上看看。上面转进本文的正题。

  Spring标志库先容及用法:

  本文将重点先容Spring供应的标志库及其用法:

  当你在项目顶用SpringFramework的时分,体现层能够选择SpringFramework自带的标志库。固然,这不是你独一的选择。你能够选择别的标志库或模板交换手艺。SpringFramework并没无为使用供应十分丰厚的标志库。SpringFramework供应的标志库仅仅是为了够用就行,它并非包罗万象的。呵呵,这点与Struts丰厚的标志库纷歧样。实在这点切合RodJohnson的起点,既“不造轮子”。固然,SpringFramework标志库有它本身的特性,能够说是个无益的增补吧。

  Spring标志库分类以下:

  1、spring:hasBindErrors

  2、spring:bind

  3、spring:transform

  4、spring:message

  5、spring:htmlEscape

  6、spring:theme

  上面我们来详细先容一下用法:

  1、spring:hasBindErrors

  对应org.springframework.web.servlet.tags.BindErrorsTag标志库处置类。

  这个标志供应用于绑定对象的errors,假如这个标志被用到的话,那末关于这个对象的毛病将在页面上显现出来。利用这个标志的条件前提是要先利用<spring:bind>标志,而且<spring:hasBindErrors>这个标志不克不及用来暗示对象的形态,它仅仅能够绑定对象自己和对象的属性。详细用法以下:

<spring:hasBindErrorsname="priceIncrease"><b>Pleasefixallerrors!</b></spring:hasBindErrors>

  经由过程这个复杂的例子,我来详细说一下这个标志的属性吧。

  name:是要被反省的Bean的名字。这个属性是必须要的。

  这里是复杂用法,以是就不先容它包括的errors变量了。详细看英语文档。下同。

  2、spring:bind

  对应org.springframework.web.servlet.tags.BindTag标志库处置类

  这个标志用来为某个bean或bean的属性赋值,一般和form一同用,相称于action的感化。它指明表单要提交到谁人类或类的属性中往。

  个中path属性是必需的,指明转到的类的路径。举比方下:

<formmethod="post">
<tablewidth="95%"bgcolor="f8f8ff"border="0"cellspacing="0"cellpadding="5">
<tr>
<tdalignment="right"width="20%">Increase(%):</td>
<spring:bindpath="priceIncrease.percentage">
<tdwidth="20%">
<inputtype="text"name="percentage"value="<c:outvalue="${status.value}"/>">
</td>
<tdwidth="60%">
<fontcolor="red"><c:outvalue="${status.errorMessage}"/></font>
</td>
</spring:bind>
</tr>
</table>
<br>
……………………省略
</form>

 3、spring:transform

  对应org.springframework.web.servlet.tags.TransformTag标志库处置类,这个标志用来转换表单中不与bean中的属性逐一对应的那些属性,一般和<spring:bind>一同利用。<spring:transform>标志为<spring:bind>利用供应了更好的撑持。

  属性以下:

  value:必须要的。和以后<spring:bind>标志指向的bean类不异。就是你要转换的实体类名。

  var:不是必须的。这个字符串被用来绑定输入了局到page,request,session或applicationscope.默许情形输入到jsp中。

  scope:不是必须的。条件前提var必需设置的情形下。它的值能够是page,request,session或application。

  4、spring:message对应org.springframework.web.servlet.tags.MessageTag标志库处置类

  这个标志用来匡助springframework撑持国际化。和JSTL的fmt:message标志相似。固然这个标志能够很好的事情的当地的springframework框架下。

  属性以下:

  code:不是必须的。用来查找message,假如没有被利用的话,text将被利用。

  text:不是必须的。假设code不存在的话,默许是text输入。当code和text都没有设置的话,标志将输入为null.

  var:不是必须的。这个字符串被用来绑定输入了局到page,request,session或applicationscope.默许情形输入到jsp中。

  scope:不是必须的。条件前提var必需设置的情形下。它的值能够是page,request,session或application。

  5、spring:htmlEscape

  对应org.springframework.web.servlet.tags.HtmlEscapeTag标志库处置类

  不经常使用,这里省略

  6、spring:theme

  对应org.springframework.web.servlet.tags.ThemeTag标志库处置类

  不经常使用,这里省略

  进修完这些用法后,让我们来看个详细的例子吧。

  设置步骤以下:

  目次布局图:

-spirngapp
-WEB-INF
-classes
-lib
-src
-war

  1、将spring.tld拷贝到WEB-INF目次。

  2、将spring.jar拷贝到WEB-INFlib包下

  举比方下:

  在web.xml中设置好taglib属性,代码以下:

<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEweb-appPUBLIC-//SunMicrosystems,Inc.//DTDWebApplication2.3//ENhttp://java.sun.com/dtd/web-app_2_3.dtd>
<web-app>
<servlet>
<servlet-name>springapp</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springapp</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<taglib>
<taglib-uri>/spring</taglib-uri>
<taglib-location>/WEB-INF/spring.tld</taglib-location>
</taglib>
</web-app>

  jsp页面代码以下:

<%@includefile="/WEB-INF/jsp/include.jsp"%>
<%@taglibprefix="spring"uri="/spring"%>
<html>
<head>
<title><fmt:messagekey="title"/></title>
</head>
<body>
<h1>
<fmt:messagekey="priceincrease.heading"/>
</h1>
<formmethod="post">
<tablewidth="95%"bgcolor="f8f8ff"border="0"cellspacing="0"cellpadding="5">
<tr>
<tdalignment="right"width="20%">Increase(%):</td>
<spring:bindpath="priceIncrease.percentage">
<tdwidth="20%">
<inputtype="text"name="percentage"value="<c:outvalue="${status.value}"/>">
</td>
<tdwidth="60%">
<fontcolor="red">
<c:outvalue="${status.errorMessage}"/>
</font>
</td>
</spring:bind>
</tr>
</table>
<br>
<spring:hasBindErrorsname="priceIncrease">
<b>Pleasefixallerrors!</b>
</spring:hasBindErrors><br><br>
<inputtype="submit"alignment="center"value="Execute">
</form>
<ahref="<c:urlvalue="hello.htm"/>">Home</a>
</body>
</html>

  <spring:bind>标志常常用来绑定<input>表单位素以便提交给PriceIncrease.java,实在PriceIncrease.java中就是包括一些getter和setter的办法的类。当用户按下按钮提交的时分,其表单中的值实践上就被framework放到了PriceIncrease.java中。<spring:bind>常常和form一同利用.这个${status.errorMessage}和${status.value}是一个framework界说的特别变量,它们被用来显现毛病信息和以后表单中的数据。呵呵,明天就到此为止吧,关于SpringFramework标志库的具体用法,请参考其文档。
java比较简单,没有C++的烦琐,但学习时最好有C++为基础.与JSP和SQL起应用,功能强大.
只想知道 该用户已被删除
13#
发表于 2015-3-24 17:06:26 | 只看该作者
我大二,Java也只学了一年,觉得还是看thinking in java好,有能力的话看英文原版(中文版翻的不怎么好),还能提高英文文档阅读能力。
兰色精灵 该用户已被删除
12#
发表于 2015-3-17 18:09:23 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
分手快乐 该用户已被删除
11#
发表于 2015-3-11 01:36:38 | 只看该作者
应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展
变相怪杰 该用户已被删除
10#
发表于 2015-3-9 23:43:48 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
深爱那片海 该用户已被删除
9#
发表于 2015-3-7 11:59:43 | 只看该作者
是一种将安全性(Security)列为第一优先考虑的语言
简单生活 该用户已被删除
8#
发表于 2015-2-24 11:19:56 | 只看该作者
是一种使网页(Web Page)产生生动活泼画面的语言
老尸 该用户已被删除
7#
发表于 2015-2-8 06:14:55 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
爱飞 该用户已被删除
6#
发表于 2015-2-6 08:59:01 | 只看该作者
Jive的资料在很多网站上都有,大家可以找来研究一下。相信你读完代码后,会有脱胎换骨的感觉。遗憾的是Jive从2.5以后就不再无条件的开放源代码,同时有licence限制。不过幸好还有中国一流的Java程序员关注它,外国人不开源了,中国人就不能开源吗?这里向大家推荐一个汉化的Jive版本—J道。Jive(J道版)是由中国Java界大名 鼎鼎的banq在Jive 2.1版本基础上改编而成, 全中文,增加了一些实用功能,如贴图,用户头像和用户资料查询等,而且有一个开发团队在不断升级。你可以访问banq的网站
再现理想 该用户已被删除
5#
发表于 2015-2-4 16:24:37 | 只看该作者
不过,每次的执行编译后的字节码需要消耗一定的时间,这同时也在一定程度上降低了 Java 程序的运行效率。
飘灵儿 该用户已被删除
地板
发表于 2015-1-31 06:30:58 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
若相依 该用户已被删除
板凳
发表于 2015-1-22 12:04:34 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
谁可相欹 该用户已被删除
沙发
发表于 2015-1-20 23:57:28 | 只看该作者
关于设计模式的资料,还是向大家推荐banq的网站 [url]http://www.jdon.com/[/url],他把GOF的23种模式以通俗易懂的方式诠释出来,纯Java描述,真是经典中的经典。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-24 01:53

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表