导航:首页 > 编程语言 > strutsjava代码使用标签

strutsjava代码使用标签

发布时间:2025-10-09 22:14:27

① 怎么在 js 代码中使用 jsp 标签或 java 代码

JSP 标签还是很方便的,比如 Struts、Spring 等提供给我们的 JSP 标签,可以用它们来获取变量或进行一些计算。比如
struts2 的 <s:url value="/admin/unmi.action"/>
会为我们自动在前面附加上应用上下文,如实际会生成
/testsite/admin/unmi.action。还有更多更方便的标签使用,比如用标签获取到 session 或请求中的数据作为 js
的变量等。

引申此话题的,其实不光是在 JS 中使用 JSP 标签,可用 JSP 标签的地方当然可以直接写 Java 代码,即 ScriptLet 代码。

如果是在 JSP 中内嵌的 JS 代码,那当然好办,JSP 文件中能用什么标签,js 代码中也能随便用,因为 JSP 标签会先在服务端解释生成相应的 JS 代码,丢给客户端执行。

那如果是在单独的 JS 文件中想要使用 JSP 标签,该如何办呢?还直接像 JSP 那样使用标签的话,对不起 JS
文件中给你原样显示出来,因为 JS 文件不被服务器端解释。其实到现在问题也基本有了答案,要解决的问题就是要让服务端去解释你的标签,有两种方案。

一. js 文件命名为 JSP 文件,写 js 内容,其中用标签,然后用 <script src="/scripts/tags.js.jsp"></script> 把该 JSP 文件当作 JS 文件那样引入。

因为 JSP 文件会被服务端解释,所以把该 JSP 文件当作 JS 文件来写,JS 文件里应该是什么,你的 JSP
文件也应该输出什么,只是里面可以放标签,要知道它将会输出什么。用 <script> 来引入的话,页面顺理的把它认为是一段外部 JS
代码。

例如文件 /scripts/tags.js.jsp 中的内容是:

<%@ taglib prefix="s" uri="/struts-tags" %>
var currentUser = '<s:property value="#session.userName" />';
alert("currentUser: " + currentUser);

那么在某个网页中用 <script src="/scripts/tags.js.jsp"></script> 引入该文件时,上面的 JS 代码将会弹出当前 session 中的用户名来。

上面代码执行都没问题的,但是你直接浏览 http://unmi/testsite/scripts/tags.js.jsp 你看到的是挤在一团的代码,不像查看普通 JS 文件那样有清晰的换行和退格,原因是浏览器默认只认扩展名,它的 mime 类型,也就是 Content-Type text/html。要让它更像是个 JS 文件那得给它加上响应类型的设置,在 tags.js.jsp 文件第一行加上:

<%response.setContentType("text/javascript;charset=utf-8");%>

这时候对于浏览器来说,无论从哪个方向来看它都是个切切实实的 JS 文件,只扩展名不同罢了。

上面的方法实际表现是没什么问题的,不过还有两点不那么完美,第一,文件名看起来像 JSP 文件,有些令人误解;第二,在 IDE 中打开该 JSP 文件,没法应用 JS 的语法加亮,给编辑带来不少麻烦。下面的方法充分解决前面两个问题。

二. 直接在 JS 文件中使用 JSP 标签

讲下原理,不是说应用服务器端默认不解释 JS 中的标签吗,那我们可以让个别的 JS 文件同样受到服务器端的关注,不是把 js 原文直接抛给客户端,而是先解释其中的标签,或是其中的 java 代码。

Tomcat 这种应用服务器我们通常也会称它为 Servlet 容器,因为它执行的是 Servlet,JSP 自然也是 Servlet。在 %TOMCAT_HOME%/conf/web.xml 中我们可以看到实际处理 JSP 文件的 Servlet 是:

<servlet>
<servlet-name>jsp</servlet-name>
<servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
<init-param>
<param-name>fork</param-name>
<param-value>false</param-value>
</init-param>
<init-param>
<param-name>xpoweredBy</param-name>
<param-value>false</param-value>
</init-param>
<load-on-startup>3</load-on-startup>
</servlet>

<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>

<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jspx</url-pattern>
</servlet-mapping>

org.apache.jasper.servlet.JspServlet,所以我们可以在自己应用的 web.xml
文件中配置某些特别的文件同样由 JspServlet 来处理。比如要特别处理 /scripts/tags.js 文件,在应用的 web.xml
中只要加上:

<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>/scripts/tags.js</url-pattern>
</servlet-mapping>

注意,上面是 Tomcat 6.x 或更早版中应用的 web.xml 的写法,后来 servlet-mapping 中
url-pattern 可同时写多个,加上 Tomcat 7 自身的古怪,这一设置会覆盖掉原 jsp 的设置,所以在 Tomcat 7
中应用必须配置成如下(也就是必须默认项也带上,然而列出自己的希望被当作 jsp 的 js 文件,可多个,不把 *.jsp/*.jspx
带上的话,你原有的 jsp 会当作文本文件直接展示出源码来):

<servlet-mapping>
<servlet-name>jsp</servlet-name>
<url-pattern>*.jsp</url-pattern>
<url-pattern>*.jspx</url-pattern>
<url-pattern>/scripts/tags.js</url-pattern>
</servlet-mapping>

我们配置 /scripts/tags.js 要由 JspServlet 来处理,不会影响到现有的其他任何 JS 文件。

那现在的 /scripts/tags.js 可不是普通的 js 文件了,它可是具有放置 JSP 标签和写 Java
代码的超能力了,因为其中的 JSP 标签和 Java 代码首先会经由服务端来解释。它集 JS 和 JSP 于一身,另外也别忘了给该 JS
文件前面加上代码:

<%response.setContentType("text/javascript;charset=utf-8");%>

不然单独浏览它也就只是不那么好看。

无疑,这是目前我能想的最完美的一种方式了,且兼容于其他的 Servlet 容器,也不用改动公共部分的东西。/scripts/tags.js 在 JS IDE 中打开也漂亮多了,因为它就是个 JS 文件,只是被赋予了 JSP 的功能。

② 如何在jsp页面中使用struts2标签

要在jsp中使用struts2.0的标签,首先要在页面使用taglib指令,将struts2的tld文件导入
<%@taglibprefix="s"uri="/struts-tags"%>

struts2的标签主要分为两大类:

  1. UI标签 这个几乎不怎么用就不介绍了

  2. 非UI标签

    if,elseif和else
    <s:iftest="link_type==1">//只有当test的的值为true时,才会执行if语句块里面的内容
    文字
    </s:if>
    <s:elseiftest="link_type==2">
    图片
    </s:elseif>
    <s:else>
    -----
    </s:else>
    迭代标签的使用
    iterator描述:
    用于遍历集合(java.util.Collection)或枚举值(java.util.Iterator)。
    <ol>
    <s:iteratorvalue="#request.names"status="stuts">
    <s:iftest="#stuts.odd==true">//判断取出数据的奇偶性
    <li>White<s:property/></li>
    </s:if>
    <s:else>
    <listyle="background-color:gray"><s:property/></li>
    </s:else>
    </s:iterator>
    </ol>
    上述代码的显示效果就是相邻的两行颜色是区分开来的

    URL地址标签,<s:url>用于生成一个URL地址,可以通过URL标签指定的<s:param>
    子元素向URL地址发送请求参数
    <s:urlaction="">
    <s:paramname=""value=""></s:param>
    </s:url>

    超链接<ahref>一般和<s:url>标签一起使用,用于带多个参数。
    <ahref="
    <s:urlaction="">
    <s:paramname=""value=""></s:param>
    <s:paramname=""value=""></s:param>
    <s:paramname=""value=""></s:param>
    </s:url>">
    链接到...
    </a>


    set标签,用于将某个值放入指定的范围内。例如application,session等。
    <s:setname="user"value="userName"scope=”request”/>

    Struts2页面开发中常用标签使用规范:
    2.1.通过<inputname="userName"type="text"class=""size="15">
    往action中传值,action中要有相应的属性,并提供SET/GET方法。
    (在数量少时可以使用request.getParameter(“userName”);)

    2.2.在页面显示action传来的数据,使用property标签。需要显示的数据从action中获得。

    2.3.往action中的实体对象内传值,使用textfield标签。

    2.4.在页面中判断指定值使用<s:if>标签。判断数据从action中获得。

    2.5.在页面中需要循环列表显示的数据使用<s:iterator>标签,列表数据从action中获得。

    2.6.URL地址和超链接可以使用<ahref>和<s:url>,在传多值时建议<ahref>和<s:url>一起使用

③ java代码中***.do的含义。

*.do 和java没有直接关系,这是apache struts 1框架发明的东西. struts 2框架默认为*.action
当提交form后 ,WEB container会在struts-config.xml 找到/resourceSearchAction.do对应的回Action类,然后答action处理完成业务逻辑后,会返回一个跳转关键字,例如"SUCCESS"或"FAILED"等,WEB container根据关键字到struts-config.xml 找到对应页面链接,并跳转到指定页面。

当然以上是单纯使用struts框架的情况,如果增加了spring框架的话会麻烦些。

这里WEB container是JavaEE术语, 特指能处理servlet和jsp的处理器

阅读全文

与strutsjava代码使用标签相关的资料

热点内容
java自己封装orm 浏览:775
常熟三轴数控编程怎么样 浏览:986
幼儿学编程的APP有哪些 浏览:635
编程猫家长留言怎么说 浏览:479
小蓝车的app叫什么 浏览:300
实习生app推广是什么 浏览:935
什么网站不怎么需要资质 浏览:189
无线网络连接的mac 浏览:360
mongodbjava驱动下载 浏览:372
苹果app授权店有哪些 浏览:353
淘宝怎么看品类数据 浏览:750
java返回空数组 浏览:67
word图片导出到文件夹 浏览:118
如何保存网站里的文件 浏览:570
如何查看服务器镜像文件 浏览:480
苹果型号a1700图片高防 浏览:567
web文件上传后服务器端如何接收 浏览:287
word的常用工具栏有哪些 浏览:868
78升级萤石云 浏览:271
eclipsejava生成可执行文件 浏览:822

友情链接