struts2学习之第一天

来源:互联网 发布:chrome mac 编辑:程序博客网 时间:2024/06/15 14:29

什么是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目录下

  1. package可以类比于Java开发中的包
  2. action标签对应一个action,name属性为访问名称,class属性为action的路径
  3. 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="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"(推荐该方式)





原创粉丝点击