Struts2中的链接标签 <s:url>和<s:a>
普通链接
Web 程序中最普通的应用是链接到其他页面,下面看 Welcome.jsp 。
1.1 说明
1 . <%@ taglib prefix="s" uri="/struts-tags" %>
此句表示导入 struts 标签,并以 s 为前缀。即以 s 为前缀的标签均来自 struts 标签库。
2 . <link href="<s:url value="/css/tutorial.css"/>" rel="stylesheet" type="text/css"/>
此句表示利用 url 标签导入一个路径,链接到一个文件,注意此路径为项目下的绝对路径。
3 . <a href="<s:url action="Login_input"/>">Sign On</a>
此句表示利用 url 标签链接到一个 action 。
1.2 注册 action
我们在 struts.xml 中注册一个 action 来显示 welcome.jsp 。
注意此 action 注册在 package example 下,所以在地址栏中敲入 http://localhost:8080/StrutsHelloWorld/example/Welcome.action ( StrutsHelloWorld 是 project 名),会导向到Welcome.jsp。
2 .使用通配符
对于上面的 action 注册,我们也可以用下面的语句代替。
此句的意思是,如果在没有找到匹配的 action 名称的情况下,默认调用 action 名称 .jsp 。第一句中星号指任意,而第二句中 {1} 指代第一句中星号指代的内容。
举个例子,如果在地址栏中敲入 http://localhost:8080/StrutsHelloWorld/example/1.action ,则系统查找 struts.xml ,发现没有 name 为 1 的 action ,即最后调用 name 为星号的这个 action ,根据此 action ,将输出 /example/1.jsp 。
或者读者可以直接点击 Welcome.jsp 中的两个超链接,系统将会报错找不到 Login_input.jsp 和 Register.jsp 。因为这两个 action 还没有注册,也没有相应的 jsp 文件。
3 .带参数的链接
超链接后面带有参数大家不会陌生,诸如 http://www.apache.com/?language=ch 。这个链接后面带有一个 language 参数,其值为 ch 。你可以通过 request.getParameter(“language”) 找到参数值。下面演示在 struts2 中如何设置带参数的链接。看 HelloWorld.jsp 。
3.1 说明
1 . <s:url id="url" action="HelloWorld">
<s:param name="request_locale">en</s:param>
</s:url>
此段表示设置一个 url 标签指向名为 HelloWorld 的 action ,此标签带一个 id 取名为 url ,后面会用到。带一个参数 request_locale ,其值为 en 。
2 . <s:a href="%{url}">English</s:a>
此句用到了 struts2 的超链接标签,连接的地址即为 1 中 url ,点击 English ,发出的信息为: http://localhost:8080/StrutsHelloWorld/example/HelloWorld.action ? request_locale=en
3.2 注册 action 到 struts.xml
<struts>
<package name="example" namespace="/example"
extends="struts-default">
<action name="HelloWorld" >
<result>/example/HelloWorld.jsp</result>
</action> </package> </struts> |