Struts2 基础知识

Struts2   基 础 知 识

一、Struts2的综述

struts1是Servlet的实现!

Struts2是filter实现(拦截interceptor)!满足MVC框架!

注:MVC为项目的设计模式(通常符合低耦合高内聚)

  M:model -- 模型层
      封装数据类型 -- entity
      完成数据源的交互 -- dao
      封装业务逻辑 -- service
      辅助工具类 -- util

 V:view -- 视图层
     显示数据
     采集数据

 C:control -- 控制层
    连接M和V的桥梁

 M1:
    C和V合在一起
     Servlet/JSP既做C层又做V层

 M2:严格意义上的MVC
    Servlet只做C层
    JSP只做V层

Struts2特点:
   1,简化C层
       任何javabean都可以做成C层
   2,封装的表单数据
       不需要看到请求对象
   3,封装了更多的页面跳转现象
   4,低耦合
   5,提供了丰富的标签库
         绘制HTML页面
     实现JSTL的作用
    6,提供了OGNL
    7,封装了后台数据的校验
    8,提供了令牌机制token
         防止表单的重复提交

二、搭建环境

  1.创建web项目

  2.导入jar包

  3.配置文件

    Struts2.xml:一般在导入jar包过程可自动生成。名字不能改(放在src根目录)。但是可以有多个配置文件,名字不相同。前提是必须已经有了一个struts.xml。其他的配置文件若有效,需在Struts2.xml文件中导入,用include标签方法。例:<include file="user.xml"></include>

  4.web.xml文件必须配置Struts2实现的过滤器。

  <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>*.action</url-pattern>
  </filter-mapping>

三、Struts2充当C层使用说明

  1.新建一个类

    命名的原则:一般在常建的java类后面加Action

  2.在Struts.xml中配置这个类

    目的:让它能够作为C层使用

    <package>
       <action>

    <result></result>

   </action>
    </package>

  3.配置标签package

    并不是类前面的包名,目的是分类Action的。

    包含属性:

    a.name:包名 --  唯一标识用的,没多大意义(一般随便取)。

    b.namespace:命名空间(提供访问路径的)。必须以/开始。

    c.extends:继承(你想使用Struts2的哪些功能)。如果没有特殊操作,直接写成default(struts-default)。

  4.Action标签

    配置写好的JavaBean(充当C)。

    包含的属性:

    a.name:访问Action的URL(虚拟路径)。注意不能以/开始。

    b.class:类全名.

    c.method:指定Action类中的方法名。效果是该URL下访问的方法。

  5.Action类的说明

    Action类是普通的JavaBean,可以有属性和方法。方法可以有任意多个,每一个方法都相当于Servlet中的service方法,能够作为service方法使用。但该方法的要求两点:

    a.方法必须有返回值(String)。返回值的作用是为了在配置文件中根据方法的结果实现相应的也面的跳转或重定向。

    b.方法没有参数。

  6.访问Action的方法

    URL:http://serverIP:PORT/webApp/namespace/actionName.后缀

    例如访问HelloAction的hello方法:
         http://localhost:8888/Struts2/day01/hello.action

  7.后缀问题

    如果URL中没有写.action,会默认加上一个; 如果修改了后缀,那就不能省略后缀;一般习惯上,会加上后缀。

  8.404问题

1,后缀不正确
        2,namespace不正确
          There is no Action mapped for action name hello1.
        3,Action的name不正确(org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter)
         There is no Action mapped for namespace [/day01]
             and action name [hello3] associated with context path [/Struts2].

  9.500问题

        Action的name不正确 -- 控制针
               org.apache.struts2.dispatcher.FilterDispatcher

  10.result页面跳转

    属性:
          name:Action中方法的返回值,默认值success,也可在定义个fail。
          type:跳转的方式,默认的是dispatcher(转发)

四、Struts2.xml减肥(缩减配置代码)

  1.方法匹配

    写好一个<action>。访问时,http://serverIP:PORT/webApp/namespace/actionName!methodName.action

  2.通配

    <action name="基本名_通配符" method={index}>

     基本名_通配符:hello_*
            index:通配符的位置,从1开始
                        hello_*   hello_*_*

    访问时,http://serverIP:PORT/webApp/namespace/基本名_方法名.action

五、Struts2.xml中的常量标签

  写在<struts>根标签中。

  <constant name="struts.action.extension" value="do"></constant>

  修改后缀:
         修改过的后缀会覆盖原先的action,
         系统不会再加上.action,URL中必须加上后缀

六、action标签的默认值问题

    calss:ActionSupport
       method:ActionSupport类的execute方法(return "success")

七、Action接收页面数据问题

  Action类要提供些属性。而且,属性需满足:

       1,属性名跟表单的name属性(查询字符串的key)一样
          2,要提供set、get方法

  注:a.Sturts2中有一个ActionContext对象——负责管理所有的Action对象。

    b.如果Action中的属性是一个对象(实体类)——页面的name属性---对象.属性名。例如:userName  ---- user.userName

八、重定向

     <result type="">

1,redirect(一般采用的方法)
     资源:静态页面资源
               动态的Servlet路径、Action路径

2,redirectAction
     资源:只能是Action路径

九、存储范围

  方法一:

值栈:存储Action对象的属性
  请求:ActionContext相当于request范围
  会话:
  应用:

例如:
  public class RangeAction {
    String name = "zhang";//属性--值栈
    public String range(){
        //获得ActionContext对象
        ActionContext ac = ActionContext.getContext();        
        //请求
        ac.put("age", 30);
        //会话
        ac.getSession().put("sess","session");
        //应用
        ac.getApplication().put("app", "application");
        return "success";
    }
}

  方法二:

import org.apache.struts2.interceptor.SessionAware;

public class RangeAction1 implements SessionAware {
   private Map<String, Object> session = new HashMap<String, Object>();
    public void setSession(Map<String, Object> arg0) {
        this.session = arg0;
    }
    public String range(){
        session.put("session1", "会话");
        return "success";
    }
}

注:往任何范围内存放数据,类似于map操作

时间: 2024-10-13 20:52:39

Struts2 基础知识的相关文章

Struts2 基础知识学习

JAVA web开发历史 早期的Java Web应用中,Jsp文件同时负责生产网页,控制到下一个网页的流程,以及负责业务逻辑, 这给web开发带来一系列问题: HTML和Java耦合在一起,JSP文件的编写者必须是网页设计者,又是Java开发者. 缺点: 可读性差 调试困难 不利于维护,更改业务逻辑或者数据可能设计多个相关网页 现在通常分为四层: 表述层(JSP,HTML页面) 业务逻辑层(JavaBean) 持久化层(spring实现持久化) 数据库层 分层的优点: 可伸缩性 可维护性 可扩展

struts2基础知识

Struts2 1 struts2的开发步骤 1.1下载jar包,放在WEB-INF的lib下 1.2编辑web.xml,添加struts的核心Filter <filter> <filter-name>struts2</filter-name> <filter-class></filter-class> </filter> <filter-mapping> <filter-name></filter-na

Struts2基础知识(三)

本文主要包括以下内容 OGNL表达式 标签 防止表单重复提交 使用第三方插件 OGNL表达式 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,它是一个开源项目.Struts2框架使用OGNL作为默认的表达式语言. 相对EL表达式,它提供了平时我们需要的一些功能,如: 支持对象方法调用,如xxx.sayHello(); 支持类静态方法调用和值访问,表达式的格式为@[类全名(包括包路径)]@[方法名|值名],例如:@[email protect

struts基础知识

1.框架 (1).是一系列jar包,其本质是对JDK功能的拓展. (2).框架是一组程序的集合,包含了一系列的最佳实践,作用是解决某一个领域的问题. 2.框架的作用:       框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系统的开发周期,提高开发质量.与传统的基于类库的面向对象重用技术比较,应用框架更注重于面向专业领域的软件重用 3.框架和设计模式的区别 有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式.实际上它们完全是不同的概念. (1).  框架.设计

MySQL数据库基础知识

day02 MySQL数据库基础知识 一.基础知识概述: 基础决定你这门课程的学习成败!只有学习好这些基础知识以后,你才能真正的运用自如.才能够对数据库有更深入的了解,道路才会越走越远. 二.基础知识: 1.数据库(database):数据库就好比是一个物理的文档柜,一个容器,把我们整理好的数据表等等归纳起来. 创建数据库命令:        create database 数据库名; 2.查看数据库         show databases; 3.打开指定的数据库         use 

linux入门基础知识及简单命令介绍

linux入门基础知识介绍 1.计算机硬件组成介绍 计算机主要由cpu(运算器.控制器),内存,I/O,外部存储等构成. cpu主要是用来对二进制数据进行运算操作,它从内存中取出数据,然后进行相应的运算操作.不能从硬盘中直接取数据. 内存从外部存储中取出数据供cpu运存.内存的最小单位是字节(byte) 备注:由于32的cpu逻辑寻址能力最大为32内存单元.因此32位cpu可以访问的最大内存空间为:4GB,算法如下: 2^32=2^10*2^10*2^10*2^2 =1024*1024*1024

BroadcastReceive基础知识总结

BroadcastReceive基础知识总结 1.BroadcastReceive简介 BroadcastReceive也就是"广播接收者"的意思,顾名思义,就是用来接收来自系统和应用中的广播 在Android系统中,广播体现在方方面面,例如当开机完成后系统会产生一条广播,接收到这条广播就能实现开机启动服务的功能,当网络状态改变时,系统会产生一条广播,接收到这条广播,就能及时的做出提示和保存数据等操作,当电池的电量改变的时候,系统会产生一条广播,接收到这条广播就能在电量低的时候告知用户

基础知识--:before伪元素和:after伪元素

http://book.51cto.com/art/201108/285688.htm 3.7  替换指定位置 大家都知道before和after是前.后的意思.但是奇怪的是,CSS中的:before伪元素和:after伪元素是为源文档中不存在的内容设置样式的. 没有内容怎么设置样式呢?别急!它们有一个content属性,一起使用就可以为某个选择器前.后的内容设置样式了. 下面就来了解一下:before伪元素和:after伪元素的用法. 视频教学:光盘/视频/3/3.7  替换指定位置.avi 

20_Shell语言———VIM编辑器基础知识三之窗口属性定制、配置文件及查找替换功能

Vim编辑器可以让用户按照需求来定制一些使用属性. 一.窗口属性定义 1)显示行号 行号不是内容,只是用来帮助用户确认文本所在的行.在vim编辑器中,如果要显示行号,可以在末行模式下输入: set number 如果想关闭,则可以在功能名称前面加上no,即: set nonumber 命令可以被简写,如set number 可以简写为 set nu:set nonumber 可以简写为 set nonu. 注意,上述设定仅对当前vim的进程有效,一旦当前进程关闭,这些设定就会失效,如果要使设定永