Struts2复习(一)

一、servlet缺陷
1.重复性劳动太多(代码冗余)。
2.具体代码放入control中,臃肿。
二、引入Struts2
!表现层MVC框架!
包含WebWork2的核心以及Struts的特性和功能
三、Struts2开发环境
①核心包:1.struts2-core
2.xwork-core
②配置文件

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">
<struts></struts>

③配置控制器

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

四、Struts2案列
①配置文件

<package name="p1" extends="struts-default">
        <action name="hello" class="com.itheima.web.action.HelloAction" method="sayHello">
            <result name="success">/success.jsp</result>
        </action>
    </package>

name:地址
class:指定动作类
method:执行的方法
extends:继承struts-default
namespace:名称空间
(默认 不写或者“”)
名称空间 + 动作名称 = 访问路径

②动作类

public String sayHello(){
        System.out.println("HelloAction的sayHello方法执行了");
        return "success";//与配置文件中result的name取值相对应
    }

③图示
这里写图片描述

五、Struts2常量
1.struts.i18n.encoding 使用编码
2.struts.multipart.parser 指定文件上传组件
3.struts.multipart.maxSize 文件上传大小限制
4.struts.action.extension 能进入Struts2框架内部的url地址后缀名。多个值用逗号分隔
5.struts.devMode 是否是开发模式。开发模式:改了配置文件,不需要重启。输出更多的错误信息。开发阶段建议为true。

六、元素
1.action元素
name:动作名称
class:动作类全名
method:方法名称
(默认public String execute(){})
SUCCESS->动作方法执行一切OK
ERROR->动作方法执行时遇到了异常
INPUT->回显
LOGIN->转向登录页面
NONE->不转向任何视图
继承 extends ActionSupport

2.result元素
name:逻辑视图的名称,对应着动作方法的返回值。默认值是success
type:结果类型,指的就是用什么方式转到定义的页面。默认是dispatcher。redirect:重定向
(redierctionAction:使用的是重定向)

param子元素
依赖注入(Dependence Injection)思想

七、动作类中访问Servlet的API
1.使用ServletActionContext类
2.使用实现接口的方式extends ActionContext

*八、封装请求正文到对象中*
1.动态参数封装:通过用户的表单封装请求正文参数
2.动作类和实体模型分开
3.模型驱动:建立动作类和模型分开的前提下(开发中采用的方式)

八、Struts2中的拦截器
AOP编程思想
这里写图片描述

拦截器类试图
这里写图片描述
编写步骤
a.编写一个类,继承AbstractInterceptor类或者实现Interceptor接口。重写intercept方法
b.配置拦截器:注意拦截器必须先声明再使用
c.多个拦截器执行顺序是由使用顺序决定的

<package name="p2" extends="struts-default">
        <interceptors>
            <interceptor name="checkLoginInterceptor1" class="com.itheima.web.interceptor.CheckLoginInterceptor1" />
            <interceptor-stack name="myDefaultStack">
                <interceptor-ref name="defaultStack"></interceptor-ref>
                <interceptor-ref name="checkLoginInterceptor1"></interceptor-ref>
            </interceptor-stack>
        </interceptors>
        <default-interceptor-ref name="myDefaultStack"></default-interceptor-ref>
        <global-results>
            <result name="input">/login.jsp</result>
        </global-results>

        <action name="login" class="com.itheima.web.action.Demo2Action" method="login">
            <interceptor-ref name="myDefaultStack">
                <!-- 在引用自定义拦截器栈的时候,给指定的拦截器注入参数。方式就是:拦截器名称.属性名称 -->
                <param name="checkLoginInterceptor1.excludeMethods">login</param>
            </interceptor-ref>
            <result type="redirectAction">showMain</result>
        </action>
        <action name="showMain" class="com.itheima.web.action.Demo2Action" >
            <result>/main.jsp</result>
        </action>       
        <action name="showOther" class="com.itheima.web.action.Demo2Action" >
            <result>/otherpage.jsp</result>
        </action>
    </package>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值