精华内容
下载资源
问答
  • Java Web Structs2开发

    2016-09-19 15:10:14
    Java Web Structs2开发
  • structs框架

    2018-02-25 18:35:03
    一个java项目框架,结合structs和jsp 做的服务接口类项目
  • structs2初学项目代码

    2019-01-03 19:06:57
    本项目模仿structs2中的简易留言板进行编写的雨伞信息管理项目,里面包含数据库和源代码,实现了基本的增、删、改、查,用户信息的注册,基本界面的美化,structs的标签验证等等,这是初学代码,如有不足之处,还请...
  • structs-2.5.2

    2018-12-04 10:19:02
    Struts2是一个基于MVC设计模式的Web应用框架,它本质上相当于一个servlet,在MVC设计模式中,Struts2作为控制器(Controller)来建立模型与视图的数据交互。此压缩文件包含源代码。
  • Structs实现简单登录

    2019-03-16 11:18:29
    Structs入门基础实践:实现简单登录源代码Structs入门基础实践
  • structs2 + maven demo项目

    2018-08-10 23:33:13
    structs2 + maven demo项目 开发小例子 实现了简单的xml映射
  • go get github.com/tkrajina/typescriptify-golang-structs/tscriptify 图书馆: go get github.com/tkrajina/typescriptify-golang-structs 用法 使用命令行工具: tscriptify -package=package/with/your/...
  • Structs2核心过滤器

    2018-10-30 23:18:11
    Structs2核心过滤器,用于Structs2开发框架开发的必配置的核心配置过滤器。<filter></filter>标签内容。只需要下载导入入WEB-INF文件夹即可。
  • structs2所需jar包

    2018-04-26 10:05:42
    使用structs2框架的web项目开发的项目所必须用到的jar包,里面都有,很全面。
  • Apache Struts2 官方发布了最新的安全公告,披露了一个远程命令执行漏洞(漏洞编号:CVE-2018-11776,官方编号:S2-057),攻击者可利用漏洞实施远程命令执行攻击。特给出struct2.0-2.3.35的修复方案
  • structs 完整jar包下载

    2014-06-10 09:25:13
    本包是最新的struts jar包,可以里面涉及到了关于实用struts的一切jar包。。
  • 因为CSDN不支持60M以上的文件上传,所以就放在了百度网盘,希望理解。
  • 一个用于验证structs和fields的Go库
  • structs2系统

    2016-04-05 14:44:39
    简单的考试系统,内配数据库表格
  • structs项目新建

    2016-01-06 11:31:24
    刚刚开始学习structs,里面含有必要的jar包
  • 主要是基于SSH框架的登录功能,基本的CRUD的功能实现,以及省市区三级级联实现。
  • structs2.3.1官方JAR包

    2011-10-21 12:46:57
    Structs2开发必用 structs2.3.1官方JAR包 structs2.3.1官方JAR包 structs2.3.1官方JAR包 structs2.3.1官方JAR包 structs2.3.1官方JAR包
  • Structs

    2018-04-04 23:55:46
    内容:说明:结构体的基本使用示例代码:// Structs.cpp: 定义控制台应用程序的入口点。 // #include "stdafx.h" #include &lt;iostream&gt; #include &lt;string&gt; using namespace ...

    内容:


    说明:

    结构体的基本使用

    示例代码:

    // Structs.cpp: 定义控制台应用程序的入口点。
    //
    
    #include "stdafx.h"
    #include <iostream>
    #include <string>
    using namespace std;
    
    struct Student
    {
        int age;
        string fName;
        string lName;
        int score;
    };
    
    //by zhaocl
    int main()
    {
        Student st;
        cin >> st.age >> st.fName >> st.lName >> st.score;
        cout << st.age << endl;
        cout << st.fName << endl;
        cout << st.lName << endl;
        cout << st.score << endl;
        system( "pause" );
        return 0;
    }
    
    

    知识点:

    无~

    展开全文
  • structs2 代码

    2015-07-27 23:22:09
    structs2 代码是适合初级学习者配置structs2代码
  • 初学java自己做的例子 请轻喷 环境配置 jdk1.8 tomcat8.5 mysql
  • myeclipse一步一步教你搭建SSH框架,步骤详细,适合新人学习。
  • 这里整合了配置structs2所需的包。快速实现开发web工具。
  • 大家学习ssh框架的可以参考传智播客的学习视频,我这里提供学习资料。希望大家可以看到。
  • springMVC与Structs2的区别
  • 黑客Structs2漏洞利用工具超好用,可以直接提交命令
  • structs2和spring结合必须的jar!struts-spring-plugin-2.5.14.1.jar
  • structs2拦截器实例2-权限验证拦截器,根据是否登录,跳转到后台页面,未登录,跳转到登录页面
  • Structs框架原理

    千次阅读 2019-03-19 13:52:57
    Structs请求过程源码分析参考链接http://www.cnblogs.com/liuling/p/2013-8-10-01.html 从上图来看,整个框架的运行过程是围绕着核心过滤器StrutsPrepareAndExecuteFilter展开工作,深入到filter的源码会对理解...

    1、Struts2框架内部执行过程

    Structs请求过程源码分析参考链接http://www.cnblogs.com/liuling/p/2013-8-10-01.html

    从上图来看,整个框架的运行过程是围绕着核心过滤器StrutsPrepareAndExecuteFilter展开工作,深入到filter的源码会对理解有所帮助。

    一个请求在Struts的处理中大概有以下几个步骤:

    1、客户端初始化一个指向Servlet容器(Tomcat)的请求;

    2、这个请求经过一系列的过滤器(Filter)例如ActionContextCleanUp的可选过滤器;

    3、接着StrutsPrepareAndExecuteFilter被调用,StrutsPrepareAndExecuteFilter询问ActionMapper来决定这个请求是否需要调用某个Action;

    4 、ActionMapper决定调用哪个Action,FilterDispatcher把请求的处理交给ActionProxy;

    5、ActionProxy通过Configuration Manager询问框架的配置文件,找到需要调用的Action类;

    6、ActionProxy创建一个ActionInvocation的实例。

    7、ActionInvocation实例使用命名模式来调用,在调用Action的过程前后,涉及到相关拦截器(Intercepter)的调用。

    8、一旦Action执行完毕,ActionInvocation负责根据struts.xml中的配置找到对应的返回结果。返回结果通常是(但不总是,也可能是另外的一个Action链)一个需要被表示的JSP或者FreeMarker的模版。在表示的过程中可以使用Struts2 框架中继承的标签。在这个过程中需要涉及到ActionMapper。

          Structs的核心功能就是将请求委托给哪个Action处理。

    到structs2官网上下载Structs-src.zip源文件,将其解压

    定位到:E:\structs2源码\struts-2.5.20\src\core\src\main\java\org\apache\struts2查看源文件

    有关包的说明:

    1、 org.apache.struts2. components    

    该包封装视图组件,Struts2在视图组件上有了很大加强,不仅增加了组件的属性个数,更新增了几个非常有用的组件,如updownselect、doubleselect、datetimepicker、token、tree等。另外,Struts2可视化视图组件开始支持主题(theme),缺省情况下,使用自带的缺省主题,如果要自定义页面效果,需要将组件的theme属性设置为simple。

    2、 org.apache.struts2. config

    该包定义与配置相关的接口和类。实际上,工程中的xml和properties文件的读取和解析都是由WebWork完成的,Struts只做了少量的工作。

    3 、org.apache.struts2.dispatcher

    Struts2的核心包,最重要的类都放在该包中。

    4 、org.apache.struts2.impl

    该包只定义了3个类,他们是StrutsActionProxy、StrutsActionProxyFactory、StrutsObjectFactory,这三个类都是对xwork的扩展。

    5 、org.apache.struts2.interceptor

    定义内置的截拦器。

    6 、org.apache.struts2.servlet

    用HttpServletRequest相关方法实现principalproxy接口。

    7 、org.apache.struts2.util

    实用包

    8 、org.apache.struts2.views

    提供freemarker、jsp、velocity等不同类型的页面呈现

    根目录下的5个文件说明:

    1 、StrutsStatics 

    Struts常数。常数可以用来获取或设置对象从行动中或其他集合。

    2、 RequestUtils 

    请求处理程序类。此类只有一个方法getServletPath,作用检索当前请求的servlet路径

    3、 ServletActionContext 

    网站的特定的上下文信息

    4 、StrutsConstants

    该类提供了框架配置键的中心位置用于存储和检索配置设置。

    5、  StrutsException

    通用运行时异常类

    (1)Structs2请求过程源码分析:

    Struts框架都会在web.xml中注册和映射structs2,配置内容如下:

    1 <filter> 
    2     <filter-name>struts2</filter-name>  
    3     <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter-class> 
    4   </filter>  
    5   <filter-mapping> 
    6     <filter-name>struts2</filter-name>  
    7     <url-pattern>/*</url-pattern> 
    8   </filter-mapping>

    StrutsPrepareAndExecuteFilter中的方法:

    1. void init(FilterConfig filterConfig)    继承自Filter,过滤器的初始化
    2. doFilter(ServletRequest req, ServletResponse res, FilterChain chain) 继承自Filter,执行过滤器
    3. void destroy()     继承自Filter,用于资源释放
    4. void postInit(Dispatcher dispatcher, FilterConfig filterConfig)     Callback for post initialization(一个空的方法,用于方法回调初始化) 

    web 容器一启动,就会初始化核心过滤器StrutsPrepareAndExecuteFilter,并且执行初始化方法,初始化方法如下:

    public void init(FilterConfig filterConfig) throws ServletException {
            InitOperations init = new InitOperations();
            Dispatcher dispatcher = null;
            try {
                //封装filterConfig,其中有个主要方法getInitParameterNames将参数名字以String格式存储在List中
                FilterHostConfig config = new FilterHostConfig(filterConfig);
                //初始化struts内部日志
                init.initLogging(config);
                //创建dispatcher ,并初始化
                dispatcher = init.initDispatcher(config);
                init.initStaticContentLoader(config, dispatcher);
                //初始化类属性:prepare 、execute
                prepare = new PrepareOperations(filterConfig.getServletContext(), dispatcher);
                execute = new ExecuteOperations(filterConfig.getServletContext(), dispatcher);
                this.excludedPatterns = init.buildExcludedPatternsList(dispatcher);
                //回调空的postInit方法
                postInit(dispatcher, filterConfig);
            } finally {
                if (dispatcher != null) {
                    dispatcher.cleanUpAfterInit();
                }
                init.cleanup();
            }
        }

    关于封装filterConfig,首先看一下FilterHostConfig,源码如下:

    public class FilterHostConfig implements HostConfig {
    
        private FilterConfig config;
        //构造方法
        public FilterHostConfig(FilterConfig config) {
            this.config = config;
        }
        //根据init-param配置的param-name获取param-value的值  
        public String getInitParameter(String key) {
            return config.getInitParameter(key);
        }
        //返回初始化参数名的迭代器 
        public Iterator<String> getInitParameterNames() {
            return MakeIterator.convert(config.getInitParameterNames());
        }
        //返回Servlet上下文
        public ServletContext getServletContext() {
            return config.getServletContext();
        }
    }

    getInitParameterNames是这个类的核心,主要功能就是将Filter初始化参数名称有枚举类型转化为Iterator。

           接下来,看下StrutsPrepareAndExecuteFilter中init方法中dispatcher = init.initDispatcher(config);这是初始化dispatcher的,是通过init对象的initDispatcher方法来初始化的,init是InitOperations类的对象,我们看看InitOperations中initDispatcher方法:

    public Dispatcher initDispatcher( HostConfig filterConfig ) {
             Dispatcher dispatcher = createDispatcher(filterConfig);
             dispatcher.init();
            return dispatcher;
        }

       创建Dispatcher 会读取filterConfig(核心过滤器中最下面以一个)中的配置信息,将配置信息解析出来,封装成为一个Map,然后根据上下文和参数Map构建Dispatcher(见源文件Struts2的核心包,最重要的类都放在该包中)

    private Dispatcher createDispatcher( HostConfig filterConfig ) {
            //存放参数的Map
            Map<String, String> params = new HashMap<String, String>();
            //将参数存放到Map
            for ( Iterator e = filterConfig.getInitParameterNames(); e.hasNext(); ) {
                String name = (String) e.next();
                String value = filterConfig.getInitParameter(name);
                params.put(name, value);
            }
            //根据servlet上下文和参数Map构造Dispatcher 
            return new Dispatcher(filterConfig.getServletContext(), params);
        }

    dispatcher对象创建完成,接着就是dispatchar对象的初始化,打开Dispatcher类,看到它的init方法如下:

    public void init() {
    
            if (configurationManager == null) {
                configurationManager = createConfigurationManager(BeanSelectionProvider.DEFAULT_BEAN_NAME);
            }
    
            try {
                init_FileManager();
                //加载org/apache/struts2/default.properties
                init_DefaultProperties(); // [1]
                //加载struts-default.xml,struts-plugin.xml,struts.xml
                init_TraditionalXmlConfigurations(); // [2]
                init_LegacyStrutsProperties(); // [3]
                //用户自己实现的ConfigurationProviders类 
                init_CustomConfigurationProviders(); // [5]
                //Filter的初始化参数 
                init_FilterInitParameters() ; // [6]
                init_AliasStandardObjects() ; // [7]
    
                Container container = init_PreloadConfiguration();
                container.inject(this);
                init_CheckWebLogicWorkaround(container);
    
                if (!dispatcherListeners.isEmpty()) {
                    for (DispatcherListener l : dispatcherListeners) {
                        l.dispatcherInitialized(this);
                    }
                }
            } catch (Exception ex) {
                if (LOG.isErrorEnabled())
                    LOG.error("Dispatcher initialization failed", ex);
                throw new StrutsException(ex);
            }
        }

     Structs请求过程源码分析参考链接http://www.cnblogs.com/liuling/p/2013-8-10-01.html

    Structs 配置文件加载循序:

    3 默认拦截器

    struts-default.xml配置文件中定义了一个默认拦截器栈,这些拦截器就是动作方法执行之前的要执行的。常用的有封装用户表单数据到javabean的modelDriven拦截器,用于输入验证的validation拦截器,等等

    4 view和controller之间的交互

    从视图页面每次发来的用户请求会产生一些数据,每次动作类执行之前,核心过滤器StrutsPrepareAndExecuteFilter都会创建两个对象:ActionContext和ValueStack,这两个对象储蓄了动作访问期间用到的所有数据。这些数据又可以在JSP界面上通过stuct标签和OGNL表达式来取得。

    (1)ActionContext是一个map数据结构,其中的key是一些常见的域对象(application,session,request等),而value又是一个map。也就是说ActionContext是一个大的map包裹着一些小map。

    (2)ValueStack是一个ArrayList数据结构,并且是一个栈结构,每次都在栈顶存取数据。

    5 Controller与Model之间的交互

    C与M之间的交互比较简单,利用Structs框架提供的拦截器:ModelDriven,即可实现将用户表单提交的数据封装到对应的javabean中。要点:

    (1)javabean类自己编写。

     (2)动作实现ModelDriven接口。

     (3)实现抽象方法getModel()。

    转自 https://blog.csdn.net/qq_32166627/article/details/70050012

         

    展开全文
  • SSH-----structs项目搭建

    2017-07-03 21:28:38
    用于ssh框架整合前期,对structs框架的基本结构了解
  • 已归档的项目。 无需维护。 该项目不再维护,已存档。 随意分叉,并根据需要进行自己的更改。 有关更多详细信息,请阅读我的博客文章: ...就像标准的lib strings , bytes和co包一样, structs具有许多全局函

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,839
精华内容 11,535
关键字:

Structs