• Struts2复习笔记


    3大框架用久了,有很多东西遗忘,而且变的只会用而不知所以然,所以这次复习一下最开始学习时的内容。主要记录生疏和遗忘的部分。

    一、框架介绍

    Java框架主要是配置,配置结合程序。

    中央控制器(又叫前端控制器):Dispatcher;后端控制器(或称为业务控制器):Action。在Struts2中,Action被归到Model层,只有中央控制器才是Controller层

    解析XML:DOM解析(速度慢,多用于小文件解析,容易学习),Sax解析(速度快效率高,多用于大文件解析,相比DOM要难些)

    Action是线程安全的,每经过XML中的<action>节点一次,就相当于new了一次,所以Action是线程安全的。Servlet不是线程安全的。

    二、下载

    有Full Distribution,Example Applications,Essential Dependencies Only,Documentation,Source几种,其中Full Distribution是完全包,包括之后的几种。下载Full Distribution。

    包的内容:

    app中的例子是War包,把war包放到tomcat下的webapps下,启动tomcat的时候,会自动解压war包,并部署。

    docs:WW下的index.html是离线版的Struts文档。和官网首页上点击“get Start”进入的页面一样

    lib:根据使用的需要导入。其中的jar包有冲突的,所以不能一次完全导入。使用时基本的jar包有

    三、使用

    1.struts下载包中有很多jar包,其中9个最基本的要导入的jar包:commons-lang.jar,commons-io.jar,commons-fileupload.jar,commons-logging.jar,freemarker.jar,javassist.jar,struts2-core.jar,xwork-core.jar,ognl.jar

    2.配置中央控制器(filter),过滤所有:/*(不仅是/*.action)

    在项目下点击:Web App Libraries→点击struts2-core-2.3.1.2.jar→进入目录org.apache.struts2/dispatcher/ng/filter→其中strutsPrepareAndExecuteFilter.class文件就是要配置的中央控制器。双击它,出现如图页面:

    点击"Attach Source"按钮,选择external folder选择jar包所在磁盘,打开Struts2下载包,选择src目录,即可查看文件(jar包的内容是只读的)。

    框架的异常从下往上看,下面通常是问题的根本。

    3.创建struts.xml(配置文件)

    该文件名不能改。

    XML文件的验证有两种:DTD和Schema

    struts.xml的验证需要导入struts-2.3.dtd(在struts2-core.jar包下),写的是struts.xml的验证。

    package要继承struts-default.xml(在struts2-core-2.3.1.2.jar中,是struts2运行的核心)中的package名称

    default.properties中时struts2的各种配置,其中,

    1 struts.action.extension=action,,

    表示可以为action或没有后缀(另:struts1中常用的后缀是.do,struts2常用的后缀是.action)

    修改default.properties配置有两种方法:①struts.properties(文件名不可改)②struts.xml中<constant>节点(两种都写的时候struts.properties文件有限起作用)

    4.写Action

    ①Action中的execute方法每个Action中都有一个默认的execute方法,当我们把execute方法写出来的时候,就覆盖了默认的;不写出来的时候,就存在一个默认的execute方法;访问Action类同名的路径(去掉Action,类首字母小写的路径)会执行execute方法。

    ②当没有配置执行action的那个方法时(无论是XML配置还是注解),默认执行execute方法

    ③验证action是线程安全的方法:写构造函数,请求的时候看构造方法的执行遍数,如果每次请求都执行一次构造方法,则表明是线程安全;如果请求了多次,只执行了一次构造方法,则不是线程安全。

    ④部署项目:struts.xml中/表示WebRoot:/WEB-INF/.../xx.jsp或者直接index.jsp

    ⑤参数传递

    除了变量通过set、get方法传递参数之外,还有以下几种情况:

    (1)当result的跳转方式是redirectAction的时候,传递参数code(chain方式的可以跨域传值,所以不需要这样写)

    <action name="userlogin" class="com.it.action.LoginAction" method="login">
        <result name="success">/WEB-INF/views/welcome.jsp</result>
        <result name="error" type="redirectAction">
            <param name="actionName">login</param>
            <param name="code">10001</param>
        </result>
    </action>

    (2)JSP中对象的属性,name属性的写法

    <input name="user.username" />

    (3)在(1)中的代码中,如果code属性是从Action传过来的变量,写法:

    ……
    <param>${code}</param>
    ……

    类似于EL表达式,但不是EL,本质是调用Action中的getXXX方法

    ⑥ActionContext

    ⑦Action的设计:没有继承什么类,也没有涉及Http相关的东西,是独立的一个Class。这个设计也是为了之后的单元测试。Action类可以单独使用,单独测试,不涉及其他内容。

    ⑧ActionSupport类,查看源码:选择external folder选择jar包所在磁盘,打开Struts2下载包,选择struts→src→xwork-core选择即可

    四、应用

    ①文件下载

    <result type="stream">   </result>

  • 相关阅读:
    图解持续集成纯命令行实现.Net项目每日构建(流程支持)
    (转) 持续集成(第一版)Martin Fowler等著
    Glut框架示例
    常见希腊字母读法
    【译】VC10中的C++0x特性 Part 2 (2):右值引用
    【排序】排序算法之交换排序
    OpenGL开发环境配置
    Android 上实现水波特效
    有关singleton的资料
    【排序】排序算法之选择排序
  • 原文地址:https://www.cnblogs.com/mySummer/p/4314015.html
Copyright © 2020-2023  润新知