JAVA教程之进修Struts供应的和Form相干的标签
学习JAVA的目的更多的是培养自身的工作能力,我觉得工作能力的一个核心就是:独立思考能力,因为只有独立思考后,才会有自己的见解进修Struts供应的和Form相干的标签持续进修Struts供应的HTML标签库。byBudiKurniawan
在本文系列的第一部分中我报告了怎样利用Struts供应的HTML标签库来设置一个Struts使用程序。我还先容了该标签库中的一类标签:自力利用的标签。在第二部分中我将持续先容第二类标签:与form相干的标签。与form相干的标签包含<form>标签自己和一切必需包括在个中的标签。好比,<text>和<password>标签就是和form相干的标签,由于假如不把它们放到一个form中它们就没成心义。
<form>标签
<form>标签用于天生一个HTMLform。利用该标签时必需遵守很多划定规矩。
起首,<form>标签中必需包括一个action属性,它是这个标签中独一必须的属性。假如不具有该属性则JSP页面会抛出一个非常。以后你必需给这个action属性指定一个无效值。一个无效值是指使用程序的Struts设置文件中<action-mappings>元素里的任何一个<action>子元素的会见路径。并且响应的<action>元素中必需有一个name属性,它的值是formbean的称号。比方,假如你有如许一个<form>标签:
<html:formaction="/login">
那末你的Struts设置文件的<action-mappings>元素中必需有一个以下显现为粗体的<action>元素:
<action-mappings>
<actionpath="/login"
type="com.javapro.struts.LoginAction"
name="loginForm"
scope="request"
input="/login.jsp">
<forwardname="success"path="/mainMenu.jsp"/>
</action>
</action-mappings>
这就是说一个form标签是和formbean相干联的。
另外一个要遵守的划定规矩是:任何包括在<form>顶用来吸收用户输出的标签(<text>、<password>、<hidden>、<textarea>、<radio>、<checkbox>、<select>)必需在相干的formbean中有一个指定的属性值。好比,假如你有一个属性值被指定为“username”的<text>标签,那末相干的formbean中也必需有一个名为“username”的属性。输出<text>标签中的值会被用于天生formbean的userName属性。
除下面所讲的属性以外,<form>标签另有一些不是必需但加上更好的“主要”的属性。好比,你能够用focus属性来天生JavaScript,它会“定焦”(focus)到该form所包括的一个元素上。利用focus属性时你必要给它指定元素的称号。好比,以下代码是定焦在第二个Text元素上的:
<body>
<html:formaction="/login"focus="password">
UserName:<html:textproperty="userName"/>
<br>Password:<html:textproperty="password"/>
<br><html:submit/>
</html:form>
</body>
该段代码会被转换成:
<body>
<formname="loginForm"method="post"action="/myStrutsApp6/login.do">
UserName:<inputtype="text"name="userName"value="">
<br>Password:<inputtype="text"name="password"value="">
<br><inputtype="submit"value="Submit">
</form>
<scriptlanguage="JavaScript"type="text/javascript">
<!--
if(document.forms["loginForm"].elements[
"password"].type!="hidden")
document.forms["loginForm"].elements[
"password"].focus()
//-->
</script>
</body>
注重,<form>标签中method属性的缺省值是POST。别的,有无看到这个标签库是怎样创建JavaScript来定焦到password元素上的?这也是该库让人入神的中央之一。你不必忧虑怎样在客户端举行编程,它会帮你主动天生。
在运转后面的例子时还要注重,你必需有一个包括userName和password属性的相干form。你能够参考本文第三部分中的Login程序。
<text>标签
<text>标签用于天生一个文本的输出地区。它必需包括和相干formbean中的不异属性对应的“property”属性。该标签只要在嵌进到一个<form>标签中时才无效。
比方:<html:textproperty="userName"/>
会被转换成:<inputtype="text"name="userName"value="">
<password>标签
<password>标签用于天生一个口令字(typepassword)的输出地区。它必需包括和相干formbean中的不异属性对应的“property”属性。该标签只要在嵌进到一个<form>标签中时才无效。该标签中的一个很主要的属性是“redisplay”,它用于从头显现之前输出到这个地区中的值。该属性的缺省值为true。但是,为了使password不克不及被从头显现,你也许但愿将该属性的值设为false。
比方:<html:passwordproperty="password"redisplay="false"/>
会被转换成:<inputtype="password"name="password"value="">
<hidden>标签
<hidden>标签用于天生一个埋没文本的输出地区。它必需包括和相干formbean中的不异属性对应的“property”属性。该标签只要在嵌进到一个<form>标签中时才无效:
比方:<html:hiddenproperty="userName"/>
会被转换成:<inputtype="hidden"name="userName"value="">
<textarea>标签
<textarea>标签用于天生一个文本区元素(textareaelement)。它必需包括和相干formbean中的不异属性对应的“property”属性。
好比:<html:textareaproperty="details"cols="80"rows="20"value="Enterdetailshere"/>
会被转换成:<textareaname="details"cols="80"rows="20">Enterdetailshere</textarea>
<radio>标签
<radio>标签用于显现一个单选按钮(radiobutton)。它必需包括“value”属性。好比这段代码:
<html:radioproperty="title"value="1"/>Mr.
<html:radioproperty="title"value="2"/>Ms.
<html:radioproperty="title"value="3"/>Dr.
会被转换成如许的HTML:
<inputtype="radio"name="title"value="1">Mr.
<inputtype="radio"name="title"value="2">Ms.
<inputtype="radio"name="title"value="3">Dr.
<checkbox>标签
<checkbox>标签用于显现checkbox范例的输出地区。好比:
<html:checkboxproperty="notify"/>Pleasesendmenotification
会被转换成:<inputtype="checkbox"name="notify"value="on">Pleasesendmenotification
<submit>标签
<submit>标签用于天生提交范例(typesubmit)的输出地区。好比:
<html:submitvalue="Login"/>
会被转换成:<inputtype="submit"value="Login">
<reset>标签
<reset>标签用于天生重置范例(typereset)的输出地区。好比:
<html:reset/>
会被转换成:
<inputtype="reset"value="Reset">
<option>标签
<option>标签用于显现selectbox中的一个选项。参照上面的<select>标签。
<select>标签
<select>标签用于显现一个包括零个或更多选项的HTML选择元素。它必需被嵌进一个<form>标签中才无效。上面这个例子将申明怎样利用该标签:
<html:selectproperty="color"size="3">
<html:optionvalue="r">red</html:option>
<html:optionvalue="g">green</html:option>
<html:optionvalue="b">blue</html:option>
</html:select>
会被转换成:
<selectname="color"size="3"><option
value="r">red</option>
<optionvalue="g">green</option>
<optionvalue="b">blue</option>
</select>
在本文系列的第二部分,你学到了一些更主要的和form相干的标签。在利用这些标签之前,你必需按照一些划定规矩以便准确地使用它们。第三部分将报告怎样在真实的程序中利用这些标签。
Bean标志库:
利用该标志前起首要在jsp的页面导进响应的标志界说,比方
<%@tagliburi="/WEB-INF/struts-bean.tld"prefix="bean"%>。
利用的办法如<bean:***id=””/>。
上面对该标志库做一先容:
1. cookie:属性有id,name,multiple,value,id是对cookie在该页面中的独一标识,在页面别的中央能够经由过程id举行援用。相称于用cookie间接援用。Name是响应的cookie称号。Multiple能够付与恣意值,假如该值被界说将会前往响应给定值数目的cookie数组,假如该值没有被界说Value在这里是一个默许值,当我们这里的挪用的cookie不存在时,其值为我们这里的value值。
2.define:相称于jsp标志<jsp:useBean>,属性有id、name、property、scope、toScope、type、value。Id和cookie中的id起到了一样的感化;name是在响应的scope中独一bean标识;scope将会在响应的局限内举行响应的查找;toScope假如在scope中找不见响应的bean,将会在toScope中创建响应的bean;type是该类完整类路径和类。
比方:
<bean:defineid="submitForm"scope="session"name="submitForm"
type="struts.test.SubmitActionForm"/>
<%=submitForm.getName()%>
比方:
<jsp:useBeanid="test1"scope="page"
class="org.apache.struts.webapp.exercise.TestBean"/>
<bean:defineid="test1_string"name="test1"property="stringProperty"/>
<bean:defineid="test1_value"value="ABCDE"/>
<%=test1_string%>
<%=test1_value%>
3.header:经由过程该标志能够会见响应页面哀求的头的信息,详细属性有id、multiple、name、value。详细的寄义和cookie的相似。
比方:<%java.util.Enumerationnames=((HttpServletRequest)request).getHeaderNames();%>
<%while(names.hasMoreElements()){
Stringname=(String)names.nextElement();
%>
<bean:headerid="head"name="<%=name%>"/>
<tr>
<td><%=name%></td>
<td><%=head%></td>
</tr>
<%}%>
4.Include:属性有id、name、forward、anchor、href、transacttion、page。属性的申明参考响应apache的网站。
比方:<bean:includeid="index"page="/index.jsp"/>
<%=index%>
message:不经常使用,这里疏忽。
page:不经常使用,这里疏忽。
Parameter:属性有id、name、value、multiple。用来输入客户真个哀求参数和值。
比方:<bean:parameterid="param1"name="param1"/>
<bean:parameterid="param3"name="param3"value="UNKNOWNVALUE"/>
<%=param1%><br>
<%=param3%>
resource:属性有id、name、input。假如input属性被界说为恣意值,导进的资本将会前往一个InputStream对象。假如不被界说的话,资本将会以字符串的体例前往。
比方:<bean:resourceid="webxml"name="/WEB-INF/web.xml"/>
<bean:writename="webxml"filter="true"/>
size:用来对Cellection大概Map范例的数据举行元素个数统计。属性有:id、collection、name、property、scope。
比方:<%
java.util.ArrayListdata=newjava.util.ArrayList();
data.add("First");
data.add("Second");
data.add("Third");
data.add("Fourth");
data.add("Fifth");
pageContext.setAttribute("list",data,PageContext.PAGE_SCOPE);
%>
<bean:sizeid="dataSize"collection="<%=data%>"/>
<jsp:useBeanid="list"scope="page"class="java.util.ArrayList"/>
<bean:sizeid="listSize"name="list"/>
struts:不经常使用,这里疏忽。
Write:属性有bundle、filter、format、formatKey、ignore、local、name、property、scope。详细用法请参阅相干网站。
Html标志库:
利用该标志库起首要在响应的页面中引进标志库界说文件,如:
<%@tagliburi="/WEB-INF/struts-html.tld"prefix="html"%>。实在该标志库的年夜多半标志能够用html的标志来完成。这里值对其没法用html完成的几个标志举行先容。
Error:属性有:bundle、name、property、local。假如以上属性都不界说,将会从对属性文件中的一切error.***毛病信息显现出来。Bundle,邦定的毛病信息办理器,假如没有界说,将默许是由action创立的使用程序级毛病办理器。Name和property用来共同从响应的页面中挪用毛病信息办理bean来显现毛病信息。Local是一个毛病信息当地化处置器,默许会用是和当地的体例处置当地化。
属性资本文件中应当包括以下响应的信息,对毛病信息的实际举行格局化:
errors.header一切毛病信息后面显现的内容,能够举行html润色
errors.footer一切毛病信息前面的显现内容,能够举行html润色
errors.prefix每条毛病信息后面的显现信息,能够举行html润色
errors.suffix每条毛病信息前面的显现信息,能够举行html润色
message:属性有bundle、footer、header、id、local、message、property、name.详细的用法请参阅相干网站。
Logic标志库:利用该标志库起首要在响应的页面中引进标志库界说文件,如:<%@tagliburi="/WEB-INF/struts-logic.tld"prefix="logic"%>,详细的标志有:
Empty:属性有name、property、scope。
Equal:属性有cookie、header、name、parameter、property、scope、value。个中cookie和header、parameter是自力利用的。Name和property、scope分离利用,是绝对体系中的bean的。假如是体系中某一个复杂的参数,能够用name和scope分离就能够了。
Forward:属性只要name。
GreaterEqual:属性和equal一样。
GreaterThan:属性和equal一样。
LessEqual:属性和equal一样。
LessThan:属性和equal一样。
NotEmpty:属性和empty一样。
Match:属性和equal一样。
NotMatch:属性和equal一样。
NotEqual:属性和equal一样。
NotPresent:属性有coolie、header、name、property、parameter、scope、role、user。
Present:和notPresent一样。
MessageNotPresent:属性有message、name、property。
MessagePresent:和messageNotPresent一样。
Iterate:属性有collection、id、indexId、scope、name、property、length、offset、type。
在1995年5月23日以“Java”的名称正式发布了。 是一种为 Internet发展的计算机语言 一般学编程语言都是从C语开始学的,我也不例外,但还是可能不学过程语言而直接学面向对象语言的,你是刚接触语言,还是从C开始学比较好,基础会很深点,如果你直接学习JAVA也能上手,一般大家在学语言的时候都记一些语言的关键词,常有的包和接口等。再去做逻辑代码的编写,以后的学习过程都是从逻辑代码编写中提升的,所以这方面都是经验积累的。你要开始学习就从 自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。 所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。 应用在电视机、电话、闹钟、烤面包机等家用电器的控制和通信。由于这些智能化家电的市场需求没有预期的高,Sun公司放弃了该项计划。随着1990年代互联网的发展 设计模式是高级程序员真正掌握面向对象核心思想的必修课。设计模式并不是一种具体"技术",它讲述的是思想,它不仅仅展示了接口或抽象类在实际案例中的灵活应用和智慧 那么我书也看了,程序也做了,别人问我的问题我都能解决了,是不是就成为高手了呢?当然没那么简单,这只是万里长征走完了第一步。不信?那你出去接一个项目,你知道怎么下手吗,你知道怎么设计吗,你知道怎么组织人员进行开发吗?你现在脑子里除了一些散乱的代码之外,可能再没有别的东西了吧! 你现在最缺的是实际的工作经验,而不是书本上那些凭空想出来的程序。 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。 是一种使网页(Web Page)产生生动活泼画面的语言 至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。 Java 编程语言的风格十分接近C、C++语言。 Java是一种计算机编程语言,拥有跨平台、面向对java 还好,SUN提供了Javabean可以把你的JSP中的 Java代码封装起来,便于调用也便于重用。 吧,现在很流行的Structs就是它的一种实现方式,不过Structs用起来实在是很繁,我们只要学习其精髓即可,我们完全可以设计自己的MVC结构。然后你再研究一下软件Refactoring (重构)和极限XP编程,相信你又会上一个台阶。 做完这些,你不如整理一下你的Java代码,把那些经典的程序和常见的应用整理出来,再精心打造一番,提高其重用性和可扩展性。你再找几个志同道合的朋友成立一个工作室吧 http://www.jdon.com/去下载,或到同济技术论坛的服务器ftp://nro.shtdu.edu.cn去下,安装上有什么问题,可以到论坛上去提问。 接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。 是一种使用者不需花费很多时间学习的语言
页:
[1]
2