struts2学习之第一天

什么是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"(推荐该方式)





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值