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目录下
- 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="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"(推荐该方式)
阅读全文
0 0
- struts2学习之第一天
- Struts2源码学习--第一天
- Struts2 学习记录-第一天
- struts2框架学习第一天
- Struts2整体学习(第一天)
- 第一天重新学习Struts2的体验
- Struts2入门-第一天学习笔记
- Struts2学习笔记(第一天)
- struts2第一天
- struts2的第一天
- 第一天:初识struts2
- Struts2第一天总结
- Struts2第一天
- 自学struts2第一天
- Struts2 笔记第一天
- struts2 第一天
- Struts2第一天
- ## Struts2第一天 ##
- [week 5][Leetcode] Container With Most Water
- Lint-Code栅栏染色
- PyCharm使用技巧:Start SSH Session(远程登录)
- Oracle索引
- 【大话设计模式】——工厂模式家族
- struts2学习之第一天
- mtd-utils编译
- 什么是O2O
- OpenCV入门笔记(七) 文字区域的提取
- docker常用命令详解
- 优化ActiveMQ性能
- Nginx+Tomcat 动静分离实现负载均衡
- ubifs 提取
- C/C++修饰符static、const、extern