您的位置:首页 > 编程语言 > Java开发

struts2学习之第一天

2017-06-25 16:32 232 查看

什么是struts2

Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。Struts 2是在WebWork2基础发展而来的。相比与servlet,struts2在底层封装了许多操作,如获取表单、封装到实体类等来简化开发人员的开发过程。

struts2执行过程

Web容器收到请求(HttpServletRequest)它将请求传递给一个标准的的过滤链包括(ActionContextCleanUp)过滤器。
经过Other filters(SiteMesh ,etc),需要调用FilterDispatcher核心控制器,然后它调用ActionMapper确定请求哪个Action,ActionMapper返回一个收集Action详细信息的ActionMaping对象。
FilterDispatcher将控制权委派给ActionProxy,ActionProxy调用配置管理器(ConfigurationManager) 从配置文件中读取配置信息(struts.xml),然后创建ActionInvocation对象。
ActionInvocation在调用Action之前会依次的调用所用配置拦截器(Interceptor N)一旦执行结果返回结果字符串ActionInvocation负责查找结果字符串对应的(Result)然后执行这个Result Result会调用一些模版(JSP)来呈现页面。
拦截器(Interceptor N)会再被执行(顺序和Action执行之前相反)最后响应(HttpServletResponse)被返回在web.xml中配置的那些过滤器和核心控制器(FilterDispatcher)

struts2环境搭建

导入包:从官网下载struts2的all版本,将其中的包导入。(开始学习时不需要导入全部包,只导入了如下)

                  


编写struts2配置文件:配置文件必须为struts.xml,且在myeclipse项目的src目录下

package可以类比于Java开发中的包
action标签对应一个action,name属性为访问名称,class属性为action的路径
result标签对应action中的一个方法,name属性对应方法的返回值。name属性值与某个方法返回值匹配后可以执行一些操作如打开一个JSP页面,页面内的动态加载由对应方法内的内容实现

<?xml version="1.0" encoding="UTF-8"?>
<!-- 引入DTD约束 -->
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
"http://struts.apache.org/dtds/struts-2.3.dtd">
<struts>
<package name="helloDemo" extends="struts-default" namespace="/">
<action name="hello" class="com.bpf.action.HelloAction">
<result name = "ok">/index.jsp</result>
</action>
</package>
</struts>


编写web.xml文件

 struts2是通过过滤器启动的,需要配置过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<display-name>struts2_day01</display-name>
<filter>
<filter-name>struts2</filter-name>
<filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>struts2</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>


Action的创建方式

1.普通类

2.继承ActionSupport类(最常用)

3.实现Action接口

每个action内都有一个默认的execute方法,如果配置文件中没有指定相关方法,会默认执行execute方法。

Action内的方法的访问方式

例如以下action内的两个方法

import com.opensymphony.xwork2.ActionSupport;

public class Demo1 extends ActionSupport {

public String add(){
System.out.println("add.......");
return NONE;
}
public String update(){
System.out.println("update.......");
return NONE;
}

}


方式1:action内的method属性(适用于方法较少的情况)

<package name="methodDeom" extends="struts-default" namespace="/">
<action name="addAction" class="com.bpf.method.Demo1" method="add"></action>
<action name="updateAction" class="com.bpf.method.Demo1" method=
9d71
"update"></action>
</package>


方式2:通配符

*号代表方法名, 访问时以上action的两个方法对应的全名分别为:demo_add、demo_update
{1}代表第一个*号

<package name="methodDeom" extends="struts-default" namespace="/">
<action name="demo_*" class="com.bpf.method.Demo1" method="{1}"></action>
</package>

注意

Action中的方法有返回值,则配置文件中就要进行配置 result标签的name属性与方法返回值需要匹配,否则出错

方法若有返回值,则返回值类型必须为String

若无返回值,就不需要配置result标签。

a.返回值类型为void
b.return "none"(推荐该方式)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: