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.返回值类型为voidb.return "none"(推荐该方式)
相关文章推荐
- 【Java EE 学习 54】【OA项目第一天】【SSH事务管理不能回滚问题解决】【struts2流程回顾】
- 初学Struts2第一天,学习Struts基础配置,第一次写博文,写的不好勿喷哦
- Struts2整体学习(第一天)
- Struts2入门-第一天学习笔记
- Struts2学习第一天
- 18.01.08,web学习第三十九天,还有一年,努力吧青年 struts2第一天 搭建框架
- Struts2学习第一天——struts2基本流程与配置
- struts2学习_简单的demo案例_第一天
- Struts2 框架学习第一天笔记
- 关于Struts2的学习总结第一天
- Struts2源码学习--第一天
- 框架学习第一天——struts2_01
- 自己学习Struts2过程中遇到的问题及解决办法(第一天)
- Struts2学习第一天——struts2基本流程与配置
- PetShop4.0学习第一天
- [整理]javascipt学习第一天--关于表格排序
- 重新学习汇编的第一天
- Winpcap学习第一天
- python学习——第一天
- VIM 学习第一天 初级命令