- 浏览: 94165 次
- 性别:
- 来自: 成都
最新评论
-
来自海上的鱼:
LZ辛苦了,很实用
Struts 2 自学之路: 1 准备工作及helloworld -
daydaypure:
楼主的帖子深入浅出,非常感谢
Struts 2 自学之路: 3.1 struts.xml 核心配置实例说明 -
zwh910621:
LZ真是个大好人,辛苦了,谢谢
Struts 2 自学之路: 1 准备工作及helloworld -
ctc626316:
楼主的东西写得很好,,搭配STRUTS2深入浅出一起看..之前 ...
Struts 2 自学之路: 3.1 struts.xml 核心配置实例说明 -
caoxiaohui:
怎么页面的标签不是用的struts2的啊
Struts 2 自学之路: 3.1 struts.xml 核心配置实例说明
内容简介:
这篇文章将会通过实例详细介绍 struts.xml 文件中 package 元素下 namespace 属性的作用
说在前面的话:
namespace的作用是控制相应package下的action的url地址,url地址在web编程中是基础中的基础
我们的程序不同的功能实际上就是对相应url地址的访问来触发的,这个要牢牢掌握,有点象java的classpath
需要注意的事项:
我修改了tomcat端口,所以你们看到的http://127.0.0.1:8888/里的8888,要以你自己的tomcat端口为准
修改了xml文件一定要重新启动tomcat或者重新热部署
第一部分
首先我还是废话一下这个基础,这些你都很清楚可以跳过前面这部分
先来看一下一些相对路径的不同写法在tomcat里的运行情况,这里我们使用表单的action来介绍
打开我们上次的工程,在WebRoot文件夹下新建一个目录namespace,然后在里面新建一个Jsp文件testurl.jsp,这里下载
其代码如下
运行上面的例子可以看到结果,从运行结果可以看出,struts的form标签的action是经过优化的
当html的form表单的action="/url"(以/开头的url地址)时,其会从http://127.0.0.1:8080这个根开始附加,我们要访问具体信息必需要加上
项目的上下文(context),就是tomcat安装目录下wepapps/context(具体是你工程名字)这个文件夹名字,象这样
<form action="/Struts2Study/namespace/test.jsp" method="post">
而struts的form标签的action="/url"(以/开头的url地址)时,struts2帮我们作了优化,他会自动为我们在htpp://127.0.0.1:8080/后面加上
项目的上下文,再附加action后的url,而这也是我们开发时想要的本意,象这样<s:form action="/namespace/test.jsp">
其余的都是一样的
action="url" 和 action="./url" 都表示当前路径
action="../" 表示上级路径
上面的表单实际上是被当作超链接来使用的(没有表单参数,只是跳转),超链接的实际访问效果和表单是一样的 action="test.jsp" 和
<a href="test.jsp"> 都是访问test.jsp,只是表单允许用户输入数据,而超链接办不到
第二部分
接下来就该进入正题了,先把工程以前在根目录的index.jsp,error.jsp和welcome.jsp复制到namespace文件夹里,然后修改其代码
再新建两个jsp文件,分别为 error1.jsp,welcome1.jsp,这两个同error.jsp和welcome.jsp一样,只要确认文本就ok
index.jsp
下面来确认error.jsp,welcome.jsp,error1.jsp及welcome1.jsp的body部分
接下来在新建包yufei.namespace,然后从hello把HelloAction.java复制过去,不用修改代码
HelloAction.java
接着我们在yufei.namespace包中新建一个xml文件namespace.xml,并且在struts.xml文件中加入以下内容
namespace.xml的代码如下,这些前篇文章都讲过了,这里不再说了
接下来我们启动tomcat来测试程序,jsp里的表单action多的就不说了,在第一部分已经废话了很多,这里有个小知识
就是使用struts的form标签时,如果是当前路径,可以不带.action,即不是以/或./或../这类开头的,可以看index.jsp代码
不过我建议还是每个地方都写上,这样看上去更统一,这点知道就行了,在地址拦输入http://127.0.0.1:8888/Struts2Study/namespace/index.jsp
每个表单分别提交一次,我们观察url地址,会发现有两种地址,分别是
http://127.0.0.1:8888/Struts2Study/namespace/NameSpace.action
http://127.0.0.1:8888/Struts2Study/NameSpace.action
而且都能正常到执行,这里先不忙解释,我们对namespace.xml做一些小手脚来继续观察,给package元素加上namespace属性
设置其值为namespace="namespace"(这个值代表的其实是路径)
重新启动tomcat(或重热部署),然后在打开namespace下的index.jsp,现在我们再来提交表单试试
现在出现了异常情况...当我们提交表单到http://127.0.0.1:8888/Struts2Study/NameSpace.action时发生了异常
而我们提交到http://127.0.0.1:8888/Struts2Study/namespace/NameSpace.action却能正常执行
原因就在于这个namespace属性的设置
我们来回顾一下struts2的基本流程,当客户发生请求以后,触发struts2的FilterDispatcher过滤器(默认配置是所有请求都会触发)
如果请求是以.action结尾,FilterDispatcher会去struts.xml里面查找action元素的name属性配置,找到匹配的然后运行其class
属性指定的类
在struts2基本流程里是这样说明的,现在补充一点,匹配的不光是name属性,还有package的namespace属性,现在我这里就来讲一下
struts2是如何去查找匹配action的,这是我自己的理解,没有任何资料参考,如有什么不妥之处请邮件告知(yufei@wapke.cn)
以今天这个index.jsp里 action=NameSpace.action 来举例说明,当我们提交此表单时,会请求以下这个url资源
http://127.0.0.1:8888/Struts2Study/namespace/NameSpace.action
这时filterdispatcher触发,然后其发现请求url是以.action结尾,然后其就去配置文件里面查找,匹配的方式应该是
将http://127.0.0.1:8888/Struts2Study请求资源的根路径去掉,然后再将最后的.action去掉留下中间那部分(这里就是
/namespace/NameSpace),然后将剩下这部分再分为两个部分,即最后一个/以前的部分,和最后一个/以后部分,分解以后就是这样,
/namesapce(最后一个/以前,不包括最后一个/)和NameSpace(最后一个/以后,不包括最后一个/)然后拿分解出来的第一部分去
和package元素里的namespace比对,找到相同的就在这个package元素里找其子action元素的name属性和分解出来的第二部分对比
,相同就执行其class属性对应的类,如果找不到,就会到默认namespace里去找,默认namespace是"",namesapce="" 和 namespace="/" 和 namespace空缺不写 是一样的效果,都代表在项目根路径上去匹配action的name,以上面的url举例就是
http://127.0.0.1:8888/Struts2Study/到这里去找NameSpace.action,
如果剩下这部分/以前没有内容,就代表到默认名称空间去找
注意:namespace属性的值等于"/"代表根空间,""代表默认空间,只是默认情况下二者大致相当,指执行结果
为了明白什么是先查找指定名称空间,再查找默认名称空间,我们把namespace.xml的配置文件改动一下
把package元素里的namespace属性去掉(你也可以分别试着让namespace=""或namesapce="/"来看效果)
这样又回到一开始的配置了,然后我们来执行,会有两种url地址,但是两种地址都能正常运行
http://127.0.0.1:8888/Struts2Study/namespace/NameSpace.action
http://127.0.0.1:8888/Struts2Study/NameSpace.action
第二种情况还比较好理解,这个就是上面说的/以前没有内容,就代表到默认名称空间查找
第一种情况要复杂点,被FilterDispatcher拦截下来后,它先到namespace="/namespace"里面去找
,没有找到,然后又到namespace=""去查找,找到了,所以也执行了
接下来我们再来把配置文件的 namespace改回 namesapce="namespace"
修改配置文件以后http://127.0.0.1:8888/Struts2Study/NameSpace.action会报异常
原因是/以前没有内容,就代表到默认名称空间查找,而配置文件里根本没有配置有默认空间的package,所以肯定找不到
给index.jsp再添加一个表单,提交给一个更容易看明白的地址
这个表单提交到以下地址,报了异常
http://127.0.0.1:8888/Struts2Study/namespace1/NameSpace.action
这个被FilterDispatcher拦截下来后,先到namespace="/namespace1"里面去找,没有找到,然后又到namespace=""去查找
还是没有找到,所以还是报异常
最后我们来做一个同名action的试验来结束名称空间的讲解,看不同名称空间,同名action是某可以使用
修改namespace.xml如下
现在我们进入index.jsp,然后来提交我们刚才加入在最后的表单,现在我们是不是看到一堆烦人的鸟文了啊^_^
项目文件在附件中
这篇文章将会通过实例详细介绍 struts.xml 文件中 package 元素下 namespace 属性的作用
说在前面的话:
namespace的作用是控制相应package下的action的url地址,url地址在web编程中是基础中的基础
我们的程序不同的功能实际上就是对相应url地址的访问来触发的,这个要牢牢掌握,有点象java的classpath
需要注意的事项:
我修改了tomcat端口,所以你们看到的http://127.0.0.1:8888/里的8888,要以你自己的tomcat端口为准
修改了xml文件一定要重新启动tomcat或者重新热部署
第一部分
首先我还是废话一下这个基础,这些你都很清楚可以跳过前面这部分
先来看一下一些相对路径的不同写法在tomcat里的运行情况,这里我们使用表单的action来介绍
打开我们上次的工程,在WebRoot文件夹下新建一个目录namespace,然后在里面新建一个Jsp文件testurl.jsp,这里下载
其代码如下
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <%@taglib prefix="s" uri="/struts-tags"%> <!-- 使用struts标签必需在这里倒入 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>testurl</title> </head> <body> 由于struts标签的action和html表单的action在处理上有某些不同<br> struts标签的action把以"/"开头的路径优化过,提交下面的表单<br> 由于没有test.jsp,肯定全部是404错误,没关系,我们只需要查看其url地址,这足够让我们理解其具体行为了 <br> <br> <table border="1"> <tr> <th> 使用html表单访问test.jsp </th> <th> 使用struts表单标签访问test.jsp </th> </tr> <tr> <td> action="test.jsp" <form action="test.jsp" method="post"> <input type="submit" value="html表单访问test.jsp" /> </form> </td> <td> action="test.jsp" <s:form action="test.jsp"> <s:submit value="struts表单标签访问test.jsp" /> </s:form> </td> <tr> <tr> <td> action="/test.jsp" <form action="/test.jsp" method="post"> <input type="submit" value="html表单访问test.jsp" /> </form> </td> <td> action="/test.jsp" <s:form action="/test.jsp"> <s:submit value="struts表单标签访问test.jsp" /> </s:form> </td> <tr> <tr> <td> action="./test.jsp" <form action="./test.jsp" method="post"> <input type="submit" value="html表单访问test.jsp" /> </form> </td> <td> action="./test.jsp" <s:form action="./test.jsp"> <s:submit value="struts表单标签访问test.jsp" /> </s:form> </td> <tr> <tr> <td> action="../test.jsp" <form action="../test.jsp" method="post"> <input type="submit" value="html表单访问test.jsp" /> </form> </td> <td> action="../test.jsp" <s:form action="../test.jsp"> <s:submit value="struts表单标签访问test.jsp" /> </s:form> </td> <tr> <tr> <td> action="/Struts2Study/namespace/test.jsp" <form action="/Struts2Study/namespace/test.jsp" method="post"> <input type="submit" value="html表单访问test.jsp" /> </form> </td> <td> action="/namespace/test.jsp" <s:form action="/namespace/test.jsp"> <s:submit value="struts表单标签访问test.jsp" /> </s:form> </td> <tr> </table> </body> </html>
运行上面的例子可以看到结果,从运行结果可以看出,struts的form标签的action是经过优化的
当html的form表单的action="/url"(以/开头的url地址)时,其会从http://127.0.0.1:8080这个根开始附加,我们要访问具体信息必需要加上
项目的上下文(context),就是tomcat安装目录下wepapps/context(具体是你工程名字)这个文件夹名字,象这样
<form action="/Struts2Study/namespace/test.jsp" method="post">
而struts的form标签的action="/url"(以/开头的url地址)时,struts2帮我们作了优化,他会自动为我们在htpp://127.0.0.1:8080/后面加上
项目的上下文,再附加action后的url,而这也是我们开发时想要的本意,象这样<s:form action="/namespace/test.jsp">
其余的都是一样的
action="url" 和 action="./url" 都表示当前路径
action="../" 表示上级路径
上面的表单实际上是被当作超链接来使用的(没有表单参数,只是跳转),超链接的实际访问效果和表单是一样的 action="test.jsp" 和
<a href="test.jsp"> 都是访问test.jsp,只是表单允许用户输入数据,而超链接办不到
第二部分
接下来就该进入正题了,先把工程以前在根目录的index.jsp,error.jsp和welcome.jsp复制到namespace文件夹里,然后修改其代码
再新建两个jsp文件,分别为 error1.jsp,welcome1.jsp,这两个同error.jsp和welcome.jsp一样,只要确认文本就ok
index.jsp
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%> <%@taglib prefix="s" uri="/struts-tags"%> <!-- 要使用struts的标签就要先倒入 --> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>第一个Struts程序</title> </head> <body> <center> action="NameSpace.action" <form action="NameSpace.action" method="post"> <table align="center"> <caption><h3>用户登录</h3></caption> <tr> <td>用户名:<input type="text" name="username"/></td> </tr> <tr> <td>密 码:<input type="text" name="password"/></td> </tr> <tr align="center"> <td colspan="2"><input type="submit" value="登录"/> <input type="reset" value="重填"/></td> </tr> </table> </form> action="/Struts2Study/namespace/NameSpace.action" <form action="/Struts2Study/namespace/NameSpace.action" method="post"> <table align="center"> <caption><h3>用户登录</h3></caption> <tr> <td>用户名:<input type="text" name="username"/></td> </tr> <tr> <td>密 码:<input type="text" name="password"/></td> </tr> <tr align="center"> <td colspan="2"><input type="submit" value="登录"/> <input type="reset" value="重填"/></td> </tr> </table> </form> action="/Struts2Study/NameSpace.action" <form action="/Struts2Study/NameSpace.action" method="post"> <table align="center"> <caption><h3>用户登录</h3></caption> <tr> <td>用户名:<input type="text" name="username"/></td> </tr> <tr> <td>密 码:<input type="text" name="password"/></td> </tr> <tr align="center"> <td colspan="2"><input type="submit" value="登录"/> <input type="reset" value="重填"/></td> </tr> </table> </form> <br> <h5>以下是使用struts的form标签</h5> <br> action="NameSpace" <s:form action="NameSpace"> <s:textfield name="username" label="用户名"/> <s:textfield name="password" label="密 码"/> <s:submit value="登录"/> </s:form> action="/namespace/NameSpace.action" <s:form action="/namespace/NameSpace.action"> <s:textfield name="username" label="用户名"/> <s:textfield name="password" label="密 码"/> <s:submit value="登录"/> </s:form> action="/NameSpace.action" <s:form action="/NameSpace.action"> <s:textfield name="username" label="用户名"/> <s:textfield name="password" label="密 码"/> <s:submit value="登录"/> </s:form> </center> </body> </html>
下面来确认error.jsp,welcome.jsp,error1.jsp及welcome1.jsp的body部分
<!-- error.jsp --> <body> 你是谁啊,我根本不认识你,再不离开我放狗了 namespace/error.jsp </body> <!-- error1.jsp --> <body> who are you? i don't know you,i'll call my dog if you won't go<br> namespace/error1.jsp </body> <!-- welcome.jsp --> <body> 你好啊亲爱滴,我等你很久了<br> namespace/welcome.jsp </body> <!-- welcome1.jsp --> <body> hi,darlin,i wait for you for a long time<br> namespace/welcome1.jsp </body>
接下来在新建包yufei.namespace,然后从hello把HelloAction.java复制过去,不用修改代码
HelloAction.java
package yufei.namespace; public class HelloAction { private String username; private String password; public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String execute() { String strReturn = "error"; if (username.equals("yufei")) strReturn = "success"; return strReturn; } }
接着我们在yufei.namespace包中新建一个xml文件namespace.xml,并且在struts.xml文件中加入以下内容
<!-- 倒入其它配置文件 --> <include file="yufei/namespace/namespace.xml"/>
namespace.xml的代码如下,这些前篇文章都讲过了,这里不再说了
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <package name="yufei.namespace" extends="struts-default"> <action name="NameSpace" class="yufei.namespace.HelloAction"> <result name="success">/namespace/welcome.jsp</result> <result name="error">/namespace/error.jsp</result> </action> </package> </struts>
接下来我们启动tomcat来测试程序,jsp里的表单action多的就不说了,在第一部分已经废话了很多,这里有个小知识
就是使用struts的form标签时,如果是当前路径,可以不带.action,即不是以/或./或../这类开头的,可以看index.jsp代码
不过我建议还是每个地方都写上,这样看上去更统一,这点知道就行了,在地址拦输入http://127.0.0.1:8888/Struts2Study/namespace/index.jsp
每个表单分别提交一次,我们观察url地址,会发现有两种地址,分别是
http://127.0.0.1:8888/Struts2Study/namespace/NameSpace.action
http://127.0.0.1:8888/Struts2Study/NameSpace.action
而且都能正常到执行,这里先不忙解释,我们对namespace.xml做一些小手脚来继续观察,给package元素加上namespace属性
设置其值为namespace="namespace"(这个值代表的其实是路径)
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 新加上namespace --> <package name="yufei.namespace" extends="struts-default" namespace="/namespace"> <action name="NameSpace" class="yufei.namespace.HelloAction"> <result name="success">/namespace/welcome.jsp</result> <result name="error">/namespace/error.jsp</result> </action> </package> </struts>
重新启动tomcat(或重热部署),然后在打开namespace下的index.jsp,现在我们再来提交表单试试
现在出现了异常情况...当我们提交表单到http://127.0.0.1:8888/Struts2Study/NameSpace.action时发生了异常
而我们提交到http://127.0.0.1:8888/Struts2Study/namespace/NameSpace.action却能正常执行
原因就在于这个namespace属性的设置
我们来回顾一下struts2的基本流程,当客户发生请求以后,触发struts2的FilterDispatcher过滤器(默认配置是所有请求都会触发)
如果请求是以.action结尾,FilterDispatcher会去struts.xml里面查找action元素的name属性配置,找到匹配的然后运行其class
属性指定的类
在struts2基本流程里是这样说明的,现在补充一点,匹配的不光是name属性,还有package的namespace属性,现在我这里就来讲一下
struts2是如何去查找匹配action的,这是我自己的理解,没有任何资料参考,如有什么不妥之处请邮件告知(yufei@wapke.cn)
以今天这个index.jsp里 action=NameSpace.action 来举例说明,当我们提交此表单时,会请求以下这个url资源
http://127.0.0.1:8888/Struts2Study/namespace/NameSpace.action
这时filterdispatcher触发,然后其发现请求url是以.action结尾,然后其就去配置文件里面查找,匹配的方式应该是
将http://127.0.0.1:8888/Struts2Study请求资源的根路径去掉,然后再将最后的.action去掉留下中间那部分(这里就是
/namespace/NameSpace),然后将剩下这部分再分为两个部分,即最后一个/以前的部分,和最后一个/以后部分,分解以后就是这样,
/namesapce(最后一个/以前,不包括最后一个/)和NameSpace(最后一个/以后,不包括最后一个/)然后拿分解出来的第一部分去
和package元素里的namespace比对,找到相同的就在这个package元素里找其子action元素的name属性和分解出来的第二部分对比
,相同就执行其class属性对应的类,如果找不到,就会到默认namespace里去找,默认namespace是"",namesapce="" 和 namespace="/" 和 namespace空缺不写 是一样的效果,都代表在项目根路径上去匹配action的name,以上面的url举例就是
http://127.0.0.1:8888/Struts2Study/到这里去找NameSpace.action,
如果剩下这部分/以前没有内容,就代表到默认名称空间去找
注意:namespace属性的值等于"/"代表根空间,""代表默认空间,只是默认情况下二者大致相当,指执行结果
为了明白什么是先查找指定名称空间,再查找默认名称空间,我们把namespace.xml的配置文件改动一下
把package元素里的namespace属性去掉(你也可以分别试着让namespace=""或namesapce="/"来看效果)
<!-- 去掉namespace属性 --> <package name="yufei.namespace" extends="struts-default">
这样又回到一开始的配置了,然后我们来执行,会有两种url地址,但是两种地址都能正常运行
http://127.0.0.1:8888/Struts2Study/namespace/NameSpace.action
http://127.0.0.1:8888/Struts2Study/NameSpace.action
第二种情况还比较好理解,这个就是上面说的/以前没有内容,就代表到默认名称空间查找
第一种情况要复杂点,被FilterDispatcher拦截下来后,它先到namespace="/namespace"里面去找
,没有找到,然后又到namespace=""去查找,找到了,所以也执行了
接下来我们再来把配置文件的 namespace改回 namesapce="namespace"
修改配置文件以后http://127.0.0.1:8888/Struts2Study/NameSpace.action会报异常
原因是/以前没有内容,就代表到默认名称空间查找,而配置文件里根本没有配置有默认空间的package,所以肯定找不到
给index.jsp再添加一个表单,提交给一个更容易看明白的地址
action="/namespace1/NameSpace.action" <s:form action="/namespace1/NameSpace.action"> <s:textfield name="username" label="用户名"/> <s:textfield name="password" label="密 码"/> <s:submit value="登录"/> </s:form> <!-- 加入到最后 -->
这个表单提交到以下地址,报了异常
http://127.0.0.1:8888/Struts2Study/namespace1/NameSpace.action
这个被FilterDispatcher拦截下来后,先到namespace="/namespace1"里面去找,没有找到,然后又到namespace=""去查找
还是没有找到,所以还是报异常
最后我们来做一个同名action的试验来结束名称空间的讲解,看不同名称空间,同名action是某可以使用
修改namespace.xml如下
<?xml version="1.0" encoding="GBK"?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts> <!-- 新加上namespace --> <package name="yufei.namespace" extends="struts-default" namespace="/namespace"> <action name="NameSpace" class="yufei.namespace.HelloAction"> <result name="success">/namespace/welcome.jsp</result> <result name="error">/namespace/error.jsp</result> </action> </package> <!-- package name不能出现重复的 --> <package name="yufei.namespace1" extends="struts-default" namespace="/namespace1"> <action name="NameSpace" class="yufei.namespace.HelloAction"> <!-- 执行的类都是一样的,所以要让其跳转到不同的地方来看效果 --> <result name="success">/namespace/welcome1.jsp</result> <result name="error">/namespace/error1.jsp</result> </action> </package> </struts>
现在我们进入index.jsp,然后来提交我们刚才加入在最后的表单,现在我们是不是看到一堆烦人的鸟文了啊^_^
项目文件在附件中
- Struts2Study.rar (18.4 KB)
- 下载次数: 513
评论
5 楼
new
2008-01-12
struts 2.0.DTD 很重要起关键作用!!!1
4 楼
clskkk2222
2007-12-28
讲得很清楚 辛苦了。
3 楼
shenchengli
2007-12-24
太好了.太牛了
2 楼
kyo100900
2007-10-22
不错,希望圈子里大家多写一些文章,交流经验
1 楼
lijie250
2007-09-21
感觉有点乱!
你可以把语言简洁些!代码没贴好!
我可以参考这个!http://www.blogjava.net/max/default.html?page=1
你可以把语言简洁些!代码没贴好!
我可以参考这个!http://www.blogjava.net/max/default.html?page=1
发表评论
-
SSH2: Struts2 + Spring + Hibernate 的登录
2007-10-11 14:35 20651使用分层结构,包括 dao,s ... -
Struts 2 自学之路: 4 理解Action
2007-09-21 15:07 3224内容简介: 介绍action是 ... -
Struts 2 自学之路: 3.1 struts.xml 核心配置实例说明
2007-09-18 12:38 11463内容简介: 掌握 struts.xml 最核心的配置属性 S ... -
Struts 2 自学之路: 2 Struts2 基本流程
2007-09-17 21:12 7020内容简介:了解Struts2 的 ... -
Struts 2 自学之路: 1 准备工作及helloworld
2007-09-17 01:39 6072内容简介: 本篇介绍如何在eclipse+myeclips ...
相关推荐
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代码+论文) JAVA图书管理系统毕业设计(源代
内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
系统可以提供信息显示和相应服务,其管理新冠抗原自测平台小程序信息,查看新冠抗原自测平台小程序信息,管理新冠抗原自测平台小程序。 项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 部署容器:tomcat7 小程序开发工具:hbuildx/微信开发者工具
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
内容来源于网络分享,如有侵权请联系我删除。另外如果没有积分的同学需要下载,请私信我。
新建 文本文档.docx
hw06
3. Kafka入门-安装与基本命令
燃气管道施工资质和特种设备安装改造维修委托函.docx
AI大模型研究相关报告
lab02
仅供学习使用,其他用途请购买正版资源AVPro Video Core Windows Edition 2.2.3 亲测可用的视频播放插件,能丝滑播放透明视频等.
建设工程消防验收现场指导意见表.docx
MVIMG_20241222_194113.jpg
五相电机双闭环矢量控制模型_采用邻近四矢量SVPWM_MATLAB_Simulink仿真模型包括: (1)原理说明文档(重要):包括扇区判断、矢量作用时间计算、矢量作用顺序及切时间计算、PWM波的生成; (2)输出部分仿真波形及仿真说明文档; (3)完整版仿真模型:包括邻近四矢量SVPWM模型和完整双闭环矢量控制Simulink模型; 资料介绍过程十分详细,零基础手把手教学,资料已经写的很清楚
YOLO系列算法目标检测数据集,包含标签,可以直接训练模型和验证测试,数据集已经划分好,包含数据集配置文件data.yaml,适用yolov5,yolov8,yolov9,yolov7,yolov10,yolo11算法; 包含两种标签格:yolo格式(txt文件)和voc格式(xml文件),分别保存在两个文件夹中,文件名末尾是部分类别名称; yolo格式:<class> <x_center> <y_center> <width> <height>, 其中: <class> 是目标的类别索引(从0开始)。 <x_center> 和 <y_center> 是目标框中心点的x和y坐标,这些坐标是相对于图像宽度和高度的比例值,范围在0到1之间。 <width> 和 <height> 是目标框的宽度和高度,也是相对于图像宽度和高度的比例值; 【注】可以下拉页面,在资源详情处查看标签具体内容;
项目包含完整前后端源码和数据库文件 环境说明: 开发语言:Java 框架:ssm,mybatis JDK版本:JDK1.8 数据库:mysql 5.7 数据库工具:Navicat11 开发软件:eclipse/idea Maven包:Maven3.3 服务器:tomcat7