🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
## 配置路由 ``` <package name="default" namespace="/hello" extends="struts-default"> <!-- 设置hellostruts Action --> <action name="struts"> <!-- 设置V层,相对于WebContent的绝对路径 --> <result>/WEB-INF/jsp/hellostruts.jsp</result> </action> <!-- 设置world Action --> <action name="world" class="Hello.World"> <!-- 当返回字符串为 success 时,渲染 /jsp/hello/world.jsp --> <result name="success">/jsp/hello/world.jsp</result> </action> </package> ``` ### 测试 打开:localhost:8080/javaee/hello/world ![](https://box.kancloud.cn/347c6ed00715538f1e072c625c55b962_707x219.png) 我们看到,路由信息生效了,它为我们去自动的调用了Hello.World这个类,但是由于我们并没有创建,所以它并没有找到。 > 与TP不同,Struts中每个Action对应的是某个类中的固定方法。也就是说,TP的action对应的是方法,而struts的action对应的是类。 Structs对不同状态下模板的调用放到了xml配置文件中,这与我们以前在C层直接渲染模板不同。 ## 创建Hello.World Hello.World中,Hello是包名,可以理解为命名空间,或是文件的位置。World即是类名又是文件名。 我们依次在src文件夹中,创建package -&gt; Hello,及类 -&gt; World.java ``` //包名 与 文件所在文件夹对应 package Hello; // 类名 与 文件名对应 public class World { // 该execute方法将被自动调用, 方法的返回类型必须为String public String execute() { return "success"; // 返回字符串success } } ``` ## 测试 ![](https://box.kancloud.cn/5c454b405131e5d9339c04a9aef2d1cc_408x141.png) ## 时序图 我们共同来梳理一下程序执行的交互过程 ![](https://box.kancloud.cn/af402fa765bf38236d218142e6b31c31_1048x620.png) ## 作业: 在web.xml中,为struts2改个自己喜欢的名字