Struts2
struts2
莫特@
微风拂静叶 缘起何方
展开
-
java动态代理详解(好文)
引言Java 动态代理机制的出现,使得 Java 开发人员不用手工编写代理类,只要简单地指定一组接口及委托类对象,便能动态地获得代理类。代理类会负责将所有的方法调用分派到委托对象上反射执行,在分派执行的过程中,开发人员还可以按需调整委托类对象及其功能,这是一套非常灵活有弹性的代理框架。通过阅读本文,读者将会对 Java 动态代理机制有更加深入的理解。本文首先从 Java 动态代理的运行机制转载 2016-12-01 14:41:37 · 1014 阅读 · 0 评论 -
Dispatcher initialization failed Unable to load configuration
简述Struts搭建以后出现这个错误,原因有多重详述第一:缺少相应的jar包,所以要根据要求导入必要的jar包,但是这种情况我认为不多,因为在一般情况下如果缺少包错误信息中会提示没有发现类,或者缺少其他类。这在其他开发工作中也会经常见到,一般都是缺少jar包导致。然而在struts的这个提示中并没有说缺少类,而是单纯的出现不能加载配置文件,首先说明问题极有可能出现在配置文件中。所以看第原创 2017-03-22 11:32:04 · 545 阅读 · 0 评论 -
Struts2系统框架与模块介绍
Struts2的系统架构和内部运行流程。 Struts2的官方文档里附带了Struts2的架构图,在这张图上展示了Struts2的内部模块,以及它们的运行流程。注意:执行流程中过滤器在前,之后才是拦截器;分析的时候跟着箭头步步分析图3.1 Struts2架构图分为四种颜色。橙色是Servlet Filters,过滤器链,所有的请求都要经过转载 2017-04-19 21:00:14 · 869 阅读 · 0 评论 -
OGNL对象导航语言
OGNL是Struts2中使用的一种表达式语言,它可以用于JSP的标签库中,以便能够方便的访问各种对象的属性;它用于界面将参数传递到Action(并进行类型转换)中;它还可以用于struts2的配置文件中!所以,非常有必要理解OGNL的基本机制。 Root对象OGNL称为对象图导航语言。所谓对象图,即以任意一个对象为根,通过OGNL可以访问与这个对象关联的其它对象。如:转载 2017-04-20 00:16:28 · 584 阅读 · 0 评论 -
Struts2值栈
来源:链接目录(?)[-]ValueStack如何得到值栈:如何将对象存入值栈:让值栈执行表达式来获得值:在JSP中跳过栈顶元素直接访问第二层:在JSP中访问值栈对象本身(而不是它们的属性)ActionContextValueStack与ActionContext的联系和区别:如何获得ActionCon转载 2017-04-20 09:18:41 · 473 阅读 · 0 评论 -
表单form中对回车键的感应
我们有时候希望回车键敲在文本框(input element)里来提交表单(form),但有时候又不希望如此。比如搜索行为,希望输入完关键词之后直接按回车键立即提交表单,而有些复杂表单,可能要避免回车键误操作在未完成表单填写的时候就触发了表单提交。要控制这些行为,不需要借助JS,浏览器已经帮我们做了这些处理,这里总结几条规则: 1. 如果表单里有一个type=”submit”的按转载 2017-04-16 17:52:42 · 585 阅读 · 0 评论 -
struts2中%{}与${}与#区别
提示:有参考其他博客在struts中符号的使用比较灵活,尤其是“%”、“#”、“$”这三个符号的使用。由于$广泛应用于EL中,这里重点写%和#符号的用法。 1、“#”符号有三种用途: (1)、访问非根对象(struts中值栈为根对象),OGNL在不添加任何符号的情况下,默认访问的是ValueStack中的值,也就是说是Action中的属性和方法;如OGNL上下文和Action上原创 2017-04-21 13:21:59 · 6269 阅读 · 0 评论 -
Struts标签-OGNL-EL-ValueStack-ActionContext之间的区别
一 介绍1.Struts2标签个人理解:首先注意一点,struts2中的标签是单独存在的,并不依赖于某一个展现层的技术,比如jsp或者HTML。在使用struts2框架的时候,jsp页面需要被struts2解析,而struts2中的标签是struts2框架提前约定好的,所以当struts2框架在解析jsp页面的时候就会对jsp中的struts2标签进行特殊解析,并且转化为约定的格式;也就是原创 2017-04-21 13:25:33 · 474 阅读 · 0 评论 -
拦截器,过滤器
特别提醒:请认真读,你会对过滤器和拦截器的执行逻辑有更好的理解。阅读前提:你需要对过滤器和拦截器的代码逻辑有大概的了解。过滤器:与web.xml中配置,依赖于web容器,利用方法回调。作用于request和response本身所携带的数据。拦截器:一般配置于框架中,如Struts,spring,依赖于Java本身的特性,利用Java反射机制。作用于被请求的action,同时也可以执行过原创 2016-12-23 17:55:11 · 479 阅读 · 0 评论 -
ActionContextCleanUp过滤器
延长action中属性的生命周期,包括自定义属性,以便在jsp页面中进行访问,让actionContextcleanup过滤器来清除属性,不让action自己清除。个人浅析:注意struts的执行流程,当从拦截器intercepts中返回以后直接到达了FilterDispatcher过滤器,然后依次返回到其他过滤器,最后才真正返回response。当请求进入一系列过滤器的时候filterd原创 2017-04-20 09:02:04 · 440 阅读 · 0 评论 -
Struts2运行流程
运行流程逐步来根据架构图进行分析(假设有一个helloWord项目)。1:首先是在登录页面,用户填入帐号和密码,然后点击提交按钮,好了,就从这里开始分析背后的处理流程,这是我们进行分析的起点。2:当用户提交登录请求后,请求的URL为:“/helloworld/helloworldAction.action”,请求会被Tomcat服务器接收到,Tomcat服务器会根据请求UR原创 2017-04-19 23:23:19 · 528 阅读 · 0 评论 -
XML配置文件头部理解
简介学习web开发两年时间了,虽然以前经常使用如Hibernate、Spring等框架的xml配置文件,但是对于他的头部几乎是一个小白,今天发现理解这些还是非常有用的,所以接下来做简单的介绍。源码示例<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/200原创 2017-08-04 10:59:20 · 5152 阅读 · 0 评论 -
context-param和init-param区别
简述不管是使用了什么技术的web应用都会有一个配置文件web.xml,这个文件中有很多可供配置的元素,其中context-param和init-param就是其中比较难以理解的元素。web.xml配置文件实例 dispatcherServlet org.springframework.web.servlet.DispatcherServlet contextConfi原创 2017-08-15 07:58:19 · 434 阅读 · 0 评论 -
前后台数据交互编码问题
简介在web开发中不可避免的需要接触到JSP文件,而JSP文件的第一行基本都是之前我只知道这是指定当前页面的编码,只知道用这个标识以后浏览器中不会乱码,但背后的逻辑基本上不知道。当然,这只是开发中编码问题的一种,接下来我整理一下最近网上看到的一些编码类问题的解读。一:pageEncoding="UTF-8"这个标识一般出现在JSP文件的第一行,如:<%原创 2017-09-25 14:39:48 · 1146 阅读 · 0 评论 -
Struts2校验--基于注解
一般情况下,只要是能在配置文件中的都可以通过注解的方式注解到Java代码中(当前的猜想),对于Struts而言,尽管这些配置都放在了注解当中,但是他们的机理还是一样的,还是要用拦截器拦截,然后校验,xml与注解方式的区别主要体现在Java的校验代码中,xml我的理解是通过加载配置文件然后根据配置文件中的数据与对应的action进行校验,而注解则是将action以反射的方式进行提取然后校验,所以本质原创 2017-01-10 17:49:21 · 1415 阅读 · 0 评论 -
ActionContextCleanUp作用
ActionContextCleanUp作用 延长action中属性的生命周期,包括自定义属性,以便在jsp页面中进行访问,让actionContextcleanup过滤器来清除属性,不让action自己清除。 为了使用WebWork,我们只需要在web.xml配置FilterDispatcher一个过滤器即可,阅读一下FilterDispatcher的Ja转载 2017-01-10 20:17:48 · 703 阅读 · 0 评论 -
Action生命周期
Struts2的Action的生命周期是:Struts2为每个请求都重新初始化一个Action的实例。Servlet的生命周期是:servlet只初始化一次,对于每一个请求都是新开辟一个线程每次调用其中的service方法。注意:不要把action的生命周期和servlet的生命周期记混。Java基础知识里面,“System.out.println(this);”这句话,在打印一个对象原创 2017-01-10 19:40:01 · 3213 阅读 · 0 评论 -
研磨Struts《系列好文》
《研磨struts2》 前言 http://sishuok.com/forum/blogPost/list/3983.html《研磨struts2》 第一章 Struts2概述 之 MVC模式 http://sishuok.com/forum/blogPost/list/3984.html《研磨struts2》 第一章 Struts2概述 之 Str转载 2017-01-10 19:34:31 · 491 阅读 · 1 评论 -
B/S交互中为何出现乱码个人浅析
首先,客户端在请求数据的时候并不知道服务器会以什么编码返回数据,所以请求头部会含有Accept-Encoding,Accept-Charset,Accept-language等信息,这个的目的就是告诉服务器自己可以接受的各种编码和MIME类型等,但是我用代理工具拦截请求数据时发现,请求头中很少有Accept-charset这个信息,也就是说,客户端并没有指定自己可以接受的编码类型,或者说客户端可以原创 2016-12-14 17:37:02 · 649 阅读 · 0 评论 -
Session应用深入解析
HttpSession常见问题1、session在何时被创建一个常见的误解是以为session在有客户端访问时就被创建,然而事实是直到某server端程序调用 HttpServletRequest.getSession(true)这样的语句时才被创建,注意如果JSP没有显示的使用 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句 HttpSession转载 2016-12-14 19:14:54 · 334 阅读 · 0 评论 -
Java动态代理生成方式
静态代理:由程序员创建或特定工具自动生成源代码,再对其编译。在程序运行前,代理类的.class文件就已经存在了。 动态代理:在程序运行时,运用反射机制动态创建而成。 在Java的java.lang.reflect包下提供一个Proxy类和一个InvocationHandler接口,通过使用这个类和接口可以生成jdk动态代理类或动态代理对象。转载 2016-12-01 14:40:17 · 627 阅读 · 0 评论 -
表单文件上传后台处理程序
链接-->用到两个jar包:commons-io-2.5.jar commons-fileupload-1.3.2.jarpackage com.controls;import java.io.File;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;原创 2016-12-14 09:56:12 · 2523 阅读 · 0 评论 -
Accept-Charset,Accept-Encoding,pageEncoding,charset区别与联系
常见有关编码的设定方式:Accept-Charset,Accept-Encoding,pageEncoding,charsetAccept-Charset:是请求端在发送请求时的头部信息,这个标识的是当前客户端可以接受的字符编码(所谓字符编码就是对于可见或者不可见字符的编码方式,如utf-8,GBK等)。Accept_Encoding:也是请求端在发送请求的时候头部原创 2016-12-14 16:57:35 · 7666 阅读 · 0 评论 -
关联-依赖-聚合
面向对象设计中的关联,依赖,聚合关联一般涉及到数量,有一对一,一对多,多对多;关联一般是有方向的,如果加上方向,那么关联就还有多对一。比如顾客预订单之间就是一种一对多的关联关系,从面向对象的角度考虑顾客和订单都是对象,那么在设计对象的时候就要考虑关联关系和关联的方向,假如要设计成顾客到订单的一对多关联,那么此时在顾客对象类中就应该有订单这个属性,并且这个属性是一个集合;假如要设计成订单原创 2017-01-05 22:44:11 · 324 阅读 · 0 评论 -
Struts2-Action
Action在Struts框架中有着举足轻重的分量,Action本身只是定义了简单的String类型变量,并且是final类型的,我们一般使用他的高级接口ActionSupport,具体原因去其他博客获取更多信息。客户端在发送请求的时候并不只是通过表单的方式发送数据(比如超链接),页面中的表单form其实只是客户端定义的一种动作,最终还是将提交的数据以Get中的URL重写方式发送出去,或者以P原创 2017-01-06 00:14:04 · 259 阅读 · 0 评论 -
Struts拦截器
Interceptor说明Interceptor的接口定义没有什么特别的地方,除了init和destory方法以外,intercept方法是实现整个拦截器机制的核心方法。而它所依赖的参数ActionInvocation则是我们之前章节中曾经提到过的著名的Action调度者。我在这里需要指出的是一个很重要的方法invocation.invoke()。这是ActionInvocatio转载 2017-01-06 12:37:50 · 299 阅读 · 0 评论 -
Struts2值栈
1. 数据传输背后机制:ValueStack(值栈) 在这一切的背后,是因为有了ValueStack(值栈)! ValueStack基础:OGNL要了解ValueStack,必须先理解OGNL(Object Graphic Navigatino Language)!OGNL是Struts2中使用的一种表达式语言,它可以用于JSP的标签库中,以便能够方便的访问各种对转载 2017-01-07 23:08:08 · 314 阅读 · 0 评论 -
Struts2-ValueStack-ActionContext-ServletContext-request-session
笔者不知道该用哪个词来形容ValueStack、ActionContext等可以在Struts2中用来存放数据的类。这些类使用的范围不同,得到的方法也不同,下面就来一一介绍。 声明:本文参考Struts2版本为2.3.1.2,内容仅供参考,限于笔者水平有限,难免有所疏漏,望您能友善指出。本文发表于ITEYE,谢绝转载。1. ValueStack ValueSta转载 2017-01-08 01:33:18 · 499 阅读 · 0 评论 -
同步-异步--阻塞-非阻塞
同步与异步牵扯到这两个概念的前提是两个线程会有某些微妙的联系并需要进行通信,不然牵扯不到同步与异步问题。同步场景:我要去上厕所,去了卫生间以后发现蹲位都被占了,并且此时还有两个人在排队等候,而我又必须上厕所,此时我就必须排队等待,这就是所谓的同步。特点是必须等待,等的时间不能干其他任何事情(排队的时候还是可以玩哈手机,抽根烟的,但是蹲位有没有空出来需要自己去判断)。异步场景:去了厕所还原创 2017-01-08 21:25:48 · 395 阅读 · 0 评论 -
Struts.xml
<!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN" "http://struts.apache.org/dtds/struts-2.3.dtd"> <!-- packa原创 2017-01-09 21:08:50 · 266 阅读 · 0 评论 -
Struts2校验
Struts2 的验证规则大概有以下数种: required:必填校验器requiredstring:必填字符串校验器int:整数校验器double:双精度浮点数校验器date:日期校验器expression:表达式校验器fieldexpression:字段表达式校验器email:电子邮件校验器url:网址校验器visitor:Visitor校验器con原创 2017-01-09 21:15:05 · 404 阅读 · 0 评论 -
Struts2---action-基于注解
package com.tjcyjd.web.action;import org.apache.struts2.convention.annotation.Action;import org.apache.struts2.convention.annotation.ExceptionMapping;import org.apache.struts2.convention.annotat原创 2017-01-10 18:15:36 · 373 阅读 · 0 评论 -
ActionSupport-注释校验
这里不讲用法,不讲细节,只讲思维为什么在方法或者属性的上方添加一段注释就实现了校验呢??我谈谈自己的理解首先要明白注释仅仅是一种标记,并没有实际的代码逻辑(理解可能有误),然而把这些标记给Java的反射机制那作用就大了去了,Java的反射机制可以获取Java对象中的几乎所有数据,然后Java就可以通过获得的这些标记进行逻辑处理,这个过程其实结合了反射,面向切面,代理等设计思维。处理这些注释原创 2017-01-06 01:09:09 · 373 阅读 · 0 评论