Struts2学习笔记之入门案例HelloWorld(三)
前面我们把Struts的准备工作已经做好了,下面我们就直接编写组件,配置组件就可以了
Struts2组件之Action
package com.mscncn.struts.ch01.web;
public class HelloWorldAction {
/**
* Action 的业务方法用于处理请求中的业务
* 1. 必须是public
* 2. 返回值为String
* 3. 参数列表为空
*/
public String execute(){
//业务逻辑处理 ......
/**
* 返回的字符串用于匹配一个result标签
* 然后请求转发给result标签中定义的页面
*/
return "ok";
}
}
配置Action组件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN" "http://struts.apache.org/dtds/struts-2.1.7.dtd"> <struts> <!-- 配置需要体现2点内容 1. 请求对应哪个Action类及其方法 2. 请求转发到哪个页面 --> <package name="ch01" namespace="/hello" extends="struts-default"> <!-- 请求的url与 两个配置参数相关 1. package 的namespace的参数 2. action 的name 以此为例 http://localhost:8080/struts-ch01/hello/sayHello package的namespace 是项目后面的路径 --> <action name="sayHello" class="com.mscncn.struts.ch01.web.HelloWorldAction" method="execute"> <result name="ok"> /hello.jsp </result> </action> </package> </struts>
测试:
a. 在浏览器地址栏中输入: http://localhost:8080/struts-ch01/hello/sayHello
b. 主要流程分析,我们输入的网址是:http://localhost:8080/struts-ch01/hello/sayHello
首先http://localhost:8080/struts-ch01/ 这部分是项目名,不需要说太多,
/hello/sayHello 这部分是实际的请求地址,下面我们就详细的分析下struts2的运行流程
1. request请求来了(http://localhost:8080/struts-ch01/hello/sayHello)
2. -->filter(struts2)
3. -->解析url(/struts-ch01/hello/sayHello)
4. -->/hello 这一部分是struts2配置文件中的package 的namespace的值
5. -->找到package 那么sayHello 是该package下action的name属性值
6. -->找到了action,可以得到该action的class,method,那么就可以执行类的方法
7. -->类方法的返回值与action中result的name对应,result便签中得值是响应的view
8. -->把类方法中的数据绑定到response中,然后转发给result对应的view
9. -->显示视图