• Struts2 学习(一)


    一、Struts 介绍

    1、Struts2的概述

    1、早期开发模型Servlet+JSP+JavaBean(Model2)显得力不从心:

      流程凌乱、数据传递无序、缺乏辅助功能。

    2、MVC模式的轻量级Web应用框架:Apache Struts1 很快风靡全球。

      代码结构划分合理,实用工具框架(如验证框架、国际化框架)等。

    3、时间推移,Struts1的缺点:

      线程不安全、灵活性低、和ServletAPI耦合、页面传值麻烦等。

    4、异军突起,SpringMVC 和 OpenSymphony 的 WebWork 等。

    5、Apache Struts + OpenSymphony WebWork2 = Struts2

      Struts2:基于MVC的轻量级的Web应用框架,

    6、来源于Webwork2与Struts1.x完全不兼容,Struts2 是一个非常优秀的MVC框架,基于Model2 设计模型。

    由传统Struts1和WebWork两个经典框架发展而来:

      Struts2框架= Struts2 + XWork

    7、Strust2 核心功能:

    • 允许POJO(Plain Old Java Objects)对象 作为Action。
    • Action的 execute 方法不再与 Servlet API 耦合,更易测试
    • 支持更多视图技术(JSP、FreeMarker、Velocity)
    • 基于 Spring AOP 思想的拦截器机制,更易扩展
    • 更强大、更易用输入校验功能
    • 整合Ajax支持

    2、Struts2框架的核心两层(Struts+XWork)

    3、Struts 目录结构

    1、apps:该文件夹包含了基于 struts2 的示例应用,这些示例应用对于学习者是非常有用的。

    2、docs:该文件夹下包含了 struts2 相关文档,包括 struts2 快速入门、struts2 的文档以及API文档等。

    3、lib:该文件夹下包含了 Struts2 框架和核心类库,以及 struts2 第三方插件类库。

    4、src: 该文件夹下包含了 Struts2 框架的全部源代码。

    二、Struts 简单入门

    1、准备Struts2依赖的jar文件

    注意:别拷贝Struts2中lib下所有的jar,必须的jar如下。

      Struts2根/apps下,解压struts2-blank.war,拷贝其WEB-INF/lib中的所有的 jar 到自己的项目中。

    2、在 web.xml 中配置前端控制器

      StrutsPrepareAndExecuteFilter-(参阅struts2-blank项目的web.xml文件)

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
     3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     4          xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
     5          version="3.1">
     6 
     7     <!--配置核心拦截器-->
     8     <filter>
     9         <filter-name>struts2</filter-name>
    10         <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class>
    11     </filter>
    12     <filter-mapping>
    13         <filter-name>struts2</filter-name>
    14         <!--拦截所有url-->
    15         <url-pattern>/*</url-pattern>
    16     </filter-mapping>
    17 </web-app>

    3、定义一个 action

      HelloAction,提供一个execute方法(公共无参数)。

     1 package com.struts2.action;
     2 
     3 /**
     4  * @author zt1994 2018/3/8 11:19
     5  */
     6 public class HelloAction {
     7     private String name;
     8 
     9     public String execute() throws Exception{
    10         return "success";
    11     }
    12 
    13     public String getName() {
    14         return name;
    15     }
    16 
    17     public void setName(String name) {
    18         this.name = name;
    19     }
    20 }

    4、HelloWorld.jsp 视图文件

     1 <%@ page contentType="text/html;charset=UTF-8" language="java" %>
     2 <html>
     3 <head>
     4     <title>HelloWorld</title>
     5 </head>
     6 <body>
     7 <h1>恭喜成功配置好基本的struts2环境</h1>
     8 <h2>Hello World</h2>
     9 </body>
    10 </html>

    5、Struts2的配置文件 struts.xml

     1 <?xml version="1.0" encoding="UTF-8" ?>
     2 <!DOCTYPE struts PUBLIC
     3         "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
     4         "http://struts.apache.org/dtds/struts-2.3.dtd">
     5 <struts>
     6     <!-- 指定Struts2处于开发阶段,可以进行调试 -->
     7     <constant name="struts.devMode" value="true"/>
     8     <package name="default" extends="struts-default" namespace="/oa">
     9 
    10         <action name="hello" class="com.struts2.action.HelloAction" method="execute">
    11             <!--结果集,即action中成功返回的视图-->
    12             <result name="success">/HelloWorld.jsp</result>
    13         </action>
    14 
    15     </package>
    16 </struts>

    6、部署项目,访问Action

    访问格式:http://http://localhost:8080/oa/hello.action

    7、Struts2 简单执行流程

  • 相关阅读:
    使用代码为textview设置drawableLeft
    Android Studio下添加assets目录
    lib32asound2 : Depends: libc6-i386 (>= 2.7) but it is not going to be installed
    android addJavascriptInterface 不能生效 解决办法
    [Android] 判断手机上是否安装了某个程序
    Github如何回退/回滚到某个版本
    Android导入第三方静态库.a编译成动态库.so
    (总结)Ubuntu apt-get apt-cache命令 使用
    C++11多线程std::thread的简单使用
    Android防止进程被第三方软件杀死
  • 原文地址:https://www.cnblogs.com/zt19994/p/8528325.html
Copyright © 2020-2023  润新知