zoukankan      html  css  js  c++  java
  • 【SSH框架】之Struts2系列(一)

    微信公众号:compassblog

    欢迎关注、转发,互相学习,共同进步!

    有任何问题,请后台留言联系

    1、Struts2框架概述

    (1)、什么是Struts2

    Struts2是一种基于MVC模式的轻量级web框架,本质上相当于一个servlet。在MVC设计模式中,Struts2作为控制器来建立模型与视图的数据交互,以WebWork为核心,采用拦截器机制来处理用户的请求,使得业务逻辑控制器能够与ServletAPI完全脱离,是致力于组件化和代码重用的J2EE Web框架。

    (2)、Struts2优势与功能

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

    2、搭建Struts2框架,完成第一个应用实例

    (1)、新建一个动态Web项目HelloProject,将Struts2所需要的基本jar包导入项目的lib文件夹下,如下图:


    (2)、在src下新建一个Action类(普通的Java类)HelloAction,代码如下:

    package com.struts2.demo;
    
    public class HelloAction {
        public String demo(){
            System.out.println("第一个Struts2项目实例!");
            return "sucess";
        }
    }
    

    (3)、在src下新建一个struts.xml文件,具体代码配置和说明如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
        "http://struts.apache.org/dtds/struts-2.3.dtd">
    <struts>
        <!-- package:将Action配置封装.就是可以在Package中配置很多action.
                name属性: 给包起个名字,起到标识作用.随便起.不能其他包名重复.
                namespace属性:给action的访问路径中定义一个命名空间
                extends属性: 继承一个 指定包
                abstract属性:包是否为抽象的; 标识性属性.标识该包不能独立运行.专门被继承
          -->
        <package name="hello" namespace="/demo" extends="struts-default" >
            <!-- action元素:配置action类
                    name属性: 决定了Action访问资源名.
                    class属性: action的完整类名
                    method属性: 指定调用Action中的哪个方法来处理请求
             -->
            <action name="HelloAction" class="com.struts2.demo.HelloAction" method="demo" >
                <!-- result元素:结果配置 
                        name属性: 标识结果处理的名称.与action方法的返回值对应.
                        type属性: 指定调用哪一个result类来处理结果,默认使用转发.
                        标签体:填写页面的相对路径
                -->
                <result name="success" type="dispatcher" >/hello.jsp</result>
            </action>
        </package>
    </struts>
    

    (3)、在web.xml文件中配置struts2核心过滤器,具体代码如下:

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
      <display-name>HelloProject</display-name>
      <!-- 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>/*</url-pattern>
      </filter-mapping>
    
      <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
      </welcome-file-list>
    </web-app>
    

    (4)、在WebContent下新建一个hello.jsp文件,具体代码如下:

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
        <h1>第一个Struts2项目发布测试成功!</h1>
    </body>
    </html>
    

    (5)、发布第一个Struts2项目HelloProject到Tomcat容器,到浏览器地址栏访问测试,结果如下图:


    3、Struts2访问流程:(图片源于网络)

    4、Struts2配置文件详解:即struts.xml文件

    (1)、package

    <!-- package:将Action配置封装.就是可以在Package中配置很多action.
                name属性: 给包起个名字,起到标识作用.随便起.不能其他包名重复.
                namespace属性:给action的访问路径中定义一个命名空间
                extends属性: 继承一个 指定包
                abstract属性:包是否为抽象的; 标识性属性.标识该包不能独立运行.专门被继承
          -->
        <package name="hello" namespace="/" extends="struts-default" >
    

    (2)、action

    <!-- action元素:配置action类
                    name属性: 决定了Action访问资源名.
                    class属性: action的完整类名
                    method属性: 指定调用Action中的哪个方法来处理请求
             -->
            <action name="HelloAction" class="com.struts2.demo.HelloAction" method="demo" >
    

    (3)、result

    <!-- result元素:结果配置 
                        name属性: 标识结果处理的名称.与action方法的返回值对应.
                        type属性: 指定调用哪一个result类来处理结果,默认使用转发.
                        标签体:填写页面的相对路径
                -->
                <result name="success">/hello.jsp</result>
    

    关注微信公众号compassblog,后台回复 “Struts2系列一” 获取本项目源码

    原文链接:https://mp.weixin.qq.com/s?__biz=MzU5MTE0ODcwNQ==&mid=2247483946&idx=1&sn=fc4b41ce8c447e09ace0cc86058f48e9&chksm=fe3221e4c945a8f2d87897a18ea9cd190b9669b732b4f3d678cf86de8d84228ed4df021ac11d#rd

    如果你认为这篇文章有用,欢迎转发分享给你的好友!

    本号文章可以任意转载,转载请注明出处!

    扫码关注微信公众,了解更多

  • 相关阅读:
    安装VMtools vim编辑器的使用 压缩包命令 Linux下的用户管理 (第三天)
    VM虚拟机安装 常用Linux命令 网卡配置 (第二天)
    数据库的交互模式 常用的dos命令 (第一天)
    Validate US Telephone Numbers FreeCodeCamp
    Arguments Optional FreeCodeCamp
    Everything Be True FreeCodeCamp
    Binary Agents FreeCodeCamp
    Steamroller FreeCodeCamp
    Drop it FreeCodeCamp
    Smallest Common Multiple FreeCodeCamp
  • 原文地址:https://www.cnblogs.com/compassblog/p/8453421.html
Copyright © 2011-2022 走看看