Java自学手记——struts2

struts2框架
  struts2是一种基于MVC模式的框架,是在struts1的基础上融合了xwork的功能。
  struts2框架预处理了一些功能:
    >请求数据自动封装,
    >文件上传的功能
    >对国际化功能的简化
    >数据校验功能

使用struts2框架开发的流程:
  1.引入jar文件
    >commons-fileupload-1.2.2.jar 【文件上传相关包】
    >commons-io-2.0.1.jar
    >struts2-core-2.3.4.1.jar 【struts2核心功能包】
    >xwork-core-2.3.4.1.jar 【Xwork核心包】
    >ognl-3.0.5.jar 【Ognl表达式功能支持表】
    >commons-lang3-3.1.jar 【struts对java.lang包的扩展】
    >freemarker-2.3.19.jar 【struts的标签模板库jar文件】
    >javassist-3.11.0.GA.jar 【struts对字节码的处理相关jar】
  2.配置web.xml
    Tomcat启动时,会加载所有项目的web.xml,通过web.xml中引入过滤器,而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>
    StrutsPrepareAndExecuteFilter就是核心过滤器,位于struts2的核心功能包中,使用struts版本不同,核心过滤器类是不一样的
  3.配置struts.xml

struts2的执行流程
  1.服务器启动
    >加载web.xml
    >创建struts核心过滤器对象,执行filter-->init()
      ·struts-default.xml, 核心功能的初始化
      ·struts-plugin.xml, struts相关插件
      ·struts.xml 用户编写的配置文件
  2.用户访问
    >用户访问action,服务器根据路径名称,找对应的action配置,创建action对象
    >执行默认拦截器栈中定义的18个拦截器
    >执行action的业务处理方法

struts-default.xml详解
  1.位于struts2-core-2.3.jar包中,
  2.bean节点指定了struts在运行时候创建的对象类型
  3.指定struts-default包,用户写的struts.xml文件中package一定要继承此包,struts-default包定义了:
    >跳转的结果类型:dispatcher,redirect,redirectAction,stream
    >定义了所有拦截器,一共32个拦截器,为了拦截器引用方便,可以通过定义栈的方式引用拦截器,默认的栈中包含了初始化18个拦截器
    >默认执行的拦截器栈、默认执行的action

拦截器和过滤器比较:
  相似:功能相似
  区别: 过滤器,拦截器所有资源都可以; (/index.jsp/servlet/img/css/js)
     拦截器,只拦截action请求。
    拦截器是struts的概念,只能在struts中用。
    过滤器是servlet的概念,可以在struts项目、servlet项目用

    注意:拦截器什么时候执行,先执行Action类创建,还是先执行拦截器
    答:拦截器在访问时执行,先创建Action类对象,再按顺序执行18个拦截器,最后执行Action类的业务处理方法

Action开发
  Action开发有三种方式:
    1.继承ActionSupport类,如果用struts的数据校验功能,必须继承此类
    2.实现Action接口,重写execute方法
    3.不继承任何类,不实现任何接口

struts中路径匹配原则:
  localhost:访问到哪一台机器
  8080:找到Tomcat
  mystruts:找到项目名
  /user/a/b:查找是否有此名称空间,没有则向下
  /user/a:查找是否有此名称空间,没有则向下
  /user:查找是否有此名称空间,没有则向下
  /:查找是否有此名称空间,没有则报错
  例如:<action name="login" class="..." method="..."></action>,项目名称后面可以有/a/b这些无用的分层,只要最后为login以及名称空间正确照样能访问

struts中的常量
  >struts中的常量定义了默认访问后缀等配置,文件名为default.propertities
  >位于struts核心包中
  >能够在struts.xml中通过<constant name="key" value="value"></coonstant>修改默认常量配置

时间: 2024-08-24 17:04:40

Java自学手记——struts2的相关文章

Java自学手记——Java中的关键字

Java中的一些关键字对于初学者来说有时候会比较混乱,在这里整理一下,顺便梳理一下目前掌握的关键字. 权限修饰符 有四个,权限从大到小是public>protected>defaul(无修饰符)>private,可以修饰成员变量和成员方法.private只能在本类中调用,用于封装成员变量,其他的不多说了比较容易掌握. this关键字 代表当前类的引用,即哪个对象调用方法,该方法内部的this就代表那个对象,如代码: 1 class Student { 2 private String n

Java自学手记——注解

注意区分注释和注解,注释是给人看的,注解是给程序看的. 注解的作用是代替配置文件,在servlet3.0中,就可以不再使用web.xml文件,而是所有配置都是用注解!比如注解类 @WebServlet ,可以在servlet3.0中使用这个注解,用来代替<servlet>的配置,然后Tomcat通过反射来读取注解中的信息.注解的作用目标:类,方法,构造器,参数,局部变量以及包 注解也是一个类,所有注解的父类都是 Annotation,定义一个注解的语法:public @interface My

Java自学最佳实践 &nbsp; get √

文/向右奔跑(简书作者)原文链接:http://www.jianshu.com/p/d99a1d7bb176 著作权归作者所有,转载请联系作者获得授权,并标注"简书作者". 大榜现在唯品会从事供应链金融开发,他初中毕业,没有读高中,大专读了一个成人类的电大.自学Java开发. 去年(15年)大榜在技术上像开了挂一样成长.2月份的时候,项目中要用到ActiveMQ,让他先了解,我上京东看了一下,只有一本原版书.他在公司内部进行技术分享完,跟我说,公司的牛人那么多,初中生也跟大家讲课了.5

Java自学序言

Java自学序言 亲爱的自己和各位读者朋友: 您们好! 这是作者本人自学Java编程开发的一系列文章,不具有一定的权威性,也算是自己一个人的学习笔记和总结,希望自己通过博客的形式将我自己的学习效率得到提高.如自学的稳重存在不足或错误的地方希望广大的博客朋友们多多指教.本人在此不胜感激! 学习Java是一件很痛苦的事儿,我自己要想不断的去挑战一下自己,把自己大学所学的Java知识能够巩固起来.不断的去改正自己开发中的不足之处.如何来学习Java?如何来更好的掌握Java开发语言?这些都是我们要不断

java中结合struts2自定义标签的使用

java中结合struts2自定义标签的使用 一.建立一个继承于SimpleTagSupport类实现它的doTag方法 1 package com.xiangshang.tag; 2 3 import java.io.IOException; 4 import java.util.List; 5 6 import javax.servlet.jsp.JspException; 7 import javax.servlet.jsp.PageContext; 8 import javax.serv

【转】JAVA自学之路

JAVA自学之路 一: 学会选择 为了就业,不少同学参加各种各样的培训. 决心做软件的,大多数人选的是java,或是.net,也有一些选择了手机.嵌入式.游戏.3G.测试等. 那么究竟应该选择什么方向呢? 我的意见是,不要太过相信各种培训机构或是抢手文章的说法(包括我),当你要走向社会的时候,就不要再把自己当成学生,不要把自己的将来交给别人,学会运用自己的眼睛去观察,去了解这个世界吧. 每个培训机构都会宣传自己的好处,并不能说明大的趋势. 一些新闻文章很有可能是枪手写的,不必太过相信.国外背景的

【JAVA学习】struts2 中 Actionsupport 的作用

尊重原创:http://xumiao900.iteye.com/blog/469760 Action 跟 Actionsupport 的区别 当我们在写action的时候,可以实现Action接口,也可以继承Actionsupport这个类.到底这两个有什么区别呢? Action接口有: public static final java.lang.String SUCCESS = "success"; public static final java.lang.String NONE

【JAVA学习】struts2的action中使用session的方法

尊重版权:http://hi.baidu.com/dillisbest/item/0bdc35c0b477b853ad00efac 在Struts2里,如果需要在Action中使用session,可以通过下面两种方式得到1.通过ActionContext class中的方法getSession得到2.Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作 下面先看一个采用第一种方式,在action中得到sessi

Java自学笔记(三)——输入

因为最近学的内容实际操作比较多,所以新的笔记就用代码为主体吧! 本回主要内容是输入,Java中主要用Scanner类和BufferedReader.总体来说不难,但有些细节可以总结,看代码: import java.io.*; import java.util.Scanner; public class ioTest { public static void main(String[] args) throws Exception { //Scanner提供了多种构造器,不同的构造器可以接受文件