zoukankan      html  css  js  c++  java
  • Struts2学习笔记一 简介及入门程序

    Struts2是一个基于MVC设计模式的web应用框架,它本质上相当于一个Sevlet。是Struts1的下一代产品,是在structs1和WebWork技术的基础上进行合并后的全新框架(WebWork是由OpenSymphony组织开发的,致力于组件化和代码重用的J2EE Web框架,他也是一个MVC框架)。

    虽然Struts的名字与Struts1相似,但其设计思想却有很大的不同。实质上,Struts2是以WebWork为核心的,它采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器与ServletAPI完全脱离开,所以Structs可以理解为WebWork的更新产品。

    Struts拥有优良的设计和功能,其优势具体如下:

    1. 项目开源,使用及扩展方便,天生优势。
    2. 提供Exception处理机制。
    3. Result方式的页面导航,通过Result标签很方便的实现重定向和页面跳转。
    4. 通过简单、集中的配置来调度业务类,使得配置和修改都非常容易。
    5. 提供简单、统一的表达式语言来访问所有可访问的数据。
    6. 提供标准、强大的验证框架和国际化框架。
    7. 提供强大的、可以有效减少页面代码的标签。
    8. 提供良好的ajax支持。
    9. 拥有简单的插件,只需放入相应的jar包,任何人都可以扩展Struts2框架,比如自定义拦截器、自定义结果类型、自定义标签等,为Structs2定制需要的功能,不需要什么特殊配置,并且可以发布给其他人使用。
    10. 拥有智能的默认设置,不需要另外进行繁琐的设置。使得默认设置就可以完成大多数项目程序开发所需要的功能。

    常见的Web层框架

    1. Struts2
    2. WebWork
    3. SpringMVC

    web层框架都会有一个特点,就是基于前端控制器模式实现的。传统方式的开发,有一次请求就会对应一个Servlet,这样会导致出现很多Servlet。而Struts2将所有的请求都先经过一个前端控制器,在前端控制器中实现框架的部分功能,剩下具体操作要提交到具体的Action中。前端控制器本质就是过滤器,因为需要所有的请求都可以被过滤器拦截,然后在过滤器中实现部分的功能。

    Struts2快速入门

    1、下载Structs2的开发包,官网:http://struts.apache.org/

    2、解压Struts2的开发包:

    • apps:该文件夹存用于存放官网提供的Structs2示例程序。war文件可通过zip方式进行解压。
    • docs:该文件夹用于存放官网提供的Struts2文档,包括Struts2的快速入门、Struts2的文档,以及API文档等内容。
    • lib:该文件夹用于存放Struts2的核心类库,以及Struts2的第三方插件类库。
    • src:该文件夹用于存放该版本Struts2框架对应的源代码。

    3、使用IDEA,创建一个Struts项目。并导包。我是在之前Hibernate项目的基础上创建的,所以我建的是Module。

    输入模块名称,点击完成。

    进入刚才解压目录下的apps(示例程序),找到blank,并解压,如下所示:

    解压后进入web_Inf下,选择lib目录,复制到我们项目的WEB_INF下

    然后,做如下操作,我们才能在项目中使用包。

    然后点击OK——>Apply——>OK即可

     4、在src下写一个HelloAction类,编写如下代码:

    5、完成Action的配置,并创建一个hello.jsp。

    6、在web.xml中配置核心过滤器

    7、测试。部署到tomcat。

    Apply——>OK,Apply——>OK 即可。

    由于我有多个项目,会报错:

    解决办法是把其他项目的发布路径修改成不一样的就行:

    运行结果如下:

  • 相关阅读:
    flutter 使用keyboard_actions 关闭ios键盘
    Android Studio androidx 包冲突解决方法
    flutter 卡在Running Gradle task 'assembleDebug'...
    SpringBoot Controller接收参数的几种常用方式
    RN 0.6以后react-navigation 导航报错null is not an object (evaluating '_RNGestureHandlerModule.default.Direction')
    flutter 调用摄像头和照片
    RN 真机roload
    iOS Undefined symbols for architecture armv7:
    android 签名生成和签名验证
    Keil MDK中Image~~RW_IRAM1~~ZI~~Limit(~表示$)
  • 原文地址:https://www.cnblogs.com/ginb/p/7284022.html
Copyright © 2011-2022 走看看