struts2

什么是框架?

     框架的目的:降低开发成本,提升效率。

     1)健壮性

     2)扩展性

     3)侵入性(尽量低,但不为0)

     4)易用性

        

什么是Struts2 apache

Struts1:流行将近10年

WebWor-->核心:XWork

apache在XWork基础上重新写了Struts2

 

Result

Interceptor



//web配置

<!-- 配置Struts2提供的前端控制器-->

 <welcome-file-list>

   <welcome-file>index.jsp</welcome-file>

 </welcome-file-list>

 <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>



//src下的sruts.xml,其中method自定义方法要与action中的方法保持一致,默认的方法是execute

<struts>

     <packagename="list" namespace="/" extends="struts-default">

         <action name="list"class="action.costList" method="fa">

              <resultname="success">/WEB-INF/jsp/costList.jsp</result>

         </action>

     </package>

</struts>



//action内容 这里的fa()方法要与struts.xml中的<actionmethod="">保持一致

public class LoginAction {

     privateString user;

     privateString pwd;

     privateString errorMsg;

     publicString getErrorMsg() {return errorMsg;}

     publicvoid setErrorMsg(String errorMsg) {this.errorMsg = errorMsg;}

     publicString getUser() {return user;}

     publicvoid setUser(String user) {this.user = user;}

     publicString getPwd() {return pwd;}

     publicvoid setPwd(String pwd) {this.pwd = pwd;}

     publicString fa(){

         /*1  获取提交的user和pwd

          * 2  调用model层的组件(例如DAO)验证user和pwd

          * 3 如果是合法的用户return "success"

          *     如果不是合法的用户return "fail"

         */

         System.out.println(user+","+pwd);

         if("goodman".equals(user)&&"12345".equals("pwd")){

              returnnull;

         }else{    errorMsg="用户名或者密码错误";    return"fail";}      

     }

}



编程原理

     用户有发送http请求-->web服务器(tomcat)-->web.xml(web部署描述文件)-->执行struts核心控制器-->加载struts.xml,通过请求action名字找到匹配的action-->action类执行其中代码调用execute-->根据action所返回的result在struts.xml中执行<result="">转发dao页面返回给调用者




1    FC(前端控制器Front Contronner):站在最前面,接收所有请求       作用:拦截请求

2    Action:根据输入算输出

3    Result:负责把输出用适当的形式显示给用户

4    Interceptor(拦截器):在ACtion调用之前之后做点事

5    ValueStack:各个组件用于共享数据的容器

6    Tags:struts2特有的页面标签

OGNL:

OGNL的工作原理

     发送请求到前端控制器FC,FC就会创建一个ValueStack用于存储共享数据,然后创建一个Action对象存放在ValueStack栈顶,之后调用拦截器进行拦截,调用拦截器可能会影响Action,调用Action对数据进行计算算出输出结果,最后调用result将结果以适当的形式输出。

Tags:

<s:debug/>

<s:property value=”user+’:’+errorMsg”/>

元素及属性的含义

Action元素:用于定义Action组件。

     Name:必选属性,指定Action的名称。

     Class:必选属性,指定Action的类型(包名.类名)。

     Method:可选属性,指定Action中的业务方法名,默认为Execute.

Result元素:用于定义响应视图。

     Name:必选属性,指定响应视图的名称。

     Type:可选属性,指定响应视图的类型,默认为Dispatcher类型。

Action    有一个核心方法f()

ActionProxy 动态代理

            在程序运行的时候,请求先到前端控制器,前端控制器先调用actionproxy(action的动态代理),actionproxy会先调用一些要加到action中辅助功能的封装好的方法(即多个不同功能的拦截器),再调用核心方法f()(即调用action),它还可以接着调用result中的方法(即action再返回result,result用来决定数据以什么形式输出)

Action和ActionProxy都继承同一个接口

ActionInvocation :这个类用来封装整个调用过程中的信息

valueStack :值栈 用来存放调用过程中共享的信息的组件 这个API要用到OGNL.jar

我们可以写的是Action 还可以增加一些辅助功能通过增加拦截器和result


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值