`
文章列表
①TargetInterface package com.hzp.interceptor; //目标对象接口 public interface TargetInterface { public void doSomething(); } ②Target package com.hzp.interceptor; //目标对象 public class Target implements TargetInterface { public void doSomething() { System.out.println("doSomethin ...
      Struts的Token(令牌)机制能够很好的解决表单重复提交的问题,基本原理是:服务器端在处理到达的请求之前,会将请求中包含的令牌值与保存在当前用户会话中的令牌值进行比较,看是否匹配。在处理完该请求后,且在答复发送给客户端之前,将会产生一个新的令牌,该令牌除传给客户端以外,也会将用户会话中保存的旧的令牌进行替换。这样如果用户回退到刚才的提交页面并再次提交的话,客户端传过来的令牌就和服务器端的令牌不一致,从而有效地防止了重复提交的发生。      这时其实也就是两点,第一:你需要在请求中有这个令牌值,请求中的令牌值如何保存,其实就和我们平时在页面中保存一些信息是一样的,通过隐 ...
模型驱动的意思是使用单独的JavaBean来封装请求参数,使之贯穿于整个MVC流程;而与之对应的属性驱动则是使用属性作为贯穿MVC流程的信息携带者。进一步说来,模型驱动使用VO来封装请求参数和处理结果,属性驱动使用Action实例来封装请求参数和处理结果。   那么Struts2又是如何将请求参数封装到model中的呢?这个问题可以在struts-default.xml文件中得到解答,在struts-default.xml中有如下配置: <interceptors>        ……        <!--定义属性驱动的拦截器-->       ...
  struts2表单校验有两种方式:手动编码验证 和框架配置验证 。   对于struts2框架配置验证原理可以阅读xwork-2.12.jar 开源类库下的com.opensymphony.xwork2.validator.validators 包。需要配置一个对应的验证xml文件,文件名格式是固定的,格式为:acton类名-validation.xml ,把该配置文件放在与当前接收表单的action类的根目录下,然后在该xml文件里配置需要验证的字段名和验证规则,无需一行代码即可达到各种验证功能。   对于手动编码验证,   对于既有手动编码的验证又有struts框架配置验 ...
    对于自定义类型转换类,可以利用struts框架提供的“org.apache.struts2.util.StrutsTypeConverter ”抽象类,它是“ognl.DefaultTypeConverter ”的抽象子类,有两个方法,一个是表单参数转换成属性对应数据类类型的方法,另一个是属性数据类型转换成表单字符串类型。相比于直接继承“ognl.DefaultTypeConverter ”类进行自定义类型转换类,继承StrutsTypeConverter类更加直观,因为它把两个不同转换过程封装成两个不同的方法,而在DefaultTypeConverter 类中,是通过if~~~else ...
A: <s:a xhref=""></s:a>-----超链接,类似于html里的<a></a> <s:action name=""></s:action>-----执行一个view里面的一个action <s:actionerror/>-----如果action的errors有值那么显示出来 <s:actionmessage/>-----如果action的message有值那么显示出来 <s:append></s:append> ...
struts的数据类型转换器,把表单提交的参数映射到bean对象对应属性的数据类型,但对于一些特殊数据类型还无法转换,比如坐标,解决的方法如下:   第一步:对于无法转化的数据类型,单独设计一个继承了ognl.DefaultTypeConverter类的子类,在这个子类中覆盖它的“public Object convertValue(Map context, Object value, Class toType){ } ”方法,把具体转化该类型的操作写在该方法中,注意,有两个转换动作,一个是把表单接收到的参数转化成bean对象对应属性的数据类型,另一个是把bean对象对应属性的数 ...
观察者(observer)模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,让他们自动更新自己。   观察者模式的组成:①抽象主题角色 ②抽象观察者角色 ③具体主题角色 ④具体观察者角色   抽象主题角色:把所有对观察者对象的引用保存在一个集合中,每个抽象主题角色都可以有任意数量的观察者,抽象主题提供一个接口,可以增/删观察者角色。一般用一个抽象类或接口来实现。   抽象观察者角色:为所有具体的观察者定义一个接口,在得到主题的通知时更新自己。   具体主题角色:在具体主题内部状态改变时,给所有登记过的观察者发出通知。具体 ...
拦截器是 Struts2的一个重要的组成部分,可以说拦截器是一个勤劳的幕后工作者, Struts2的大部分功能都有拦截器完成了,也是由于拦截器的使用,使 Struts2成为一个非常 Clean的框架。你甚至不要在自己的 Action中写任何代码,一些重要的功能框架已帮你实现,如将请求参数到 Action中属性的传递,系统 Local的设置,参数验证等。 Strus2提供了大量的拦截器的实现,这些拦截器可以满足绝大不部分需求,我们完全可以复用框架提供的拦截器,而我们仅仅需要做的工作就是简单的几行配置,即可将系统提供的拦截器或自己开发的拦截器应用到自己的系统。而 Struts2拦截器的设计使我们很容 ...
几乎所有的WEB容器在其内部默认的字符编码格式都是以ISO-8859-1为默认值的,同时,几乎所有的浏览器在传递参数时都是默认以UTF-8的方式来传递参数的。所以,虽然我们的Java源文件在出入口的地方指定了正确的编码方式,但其在容器内部运行时还是以ISO-8859-1来处理的。 因为常用的WEB容器如Tomcat,Weblogic在在其内部默认的字符编码格式都是以ISO-8859-1为默认值的,而IE浏览器在传递参数时都是默认以UTF-8的方式来传递参数的,造成了两种编码方式不同,这样页面链接就打不开中文文件! 思路:把WEB容器的默认编码方式改为: UTF-8,这样编码就统一了! 1.设置页 ...
HTTP状态码(一) 100 Continue 指示客户端应该继续请求。回送用于通知客户端此次请求已经收到,并且没有被服务器拒绝。 客户端应该继续发送剩下的请求数据或者请求已经完成,或者忽略回送数据。服务器必须发送 最后的回送在请求之后。 101 Switching Protocols 服务器依照客服端请求,通过Upgrade头信息,改变当前连接的应用协议。服务器将根据Upgrade头立刻改变协议 在101回送以空行结束的时候。 Successful ================================= 200 OK 指示客服端的请求已经成功收到,解析,接受。 201 Create ...
首先必须在WebLogic容器里配置一个数据源,本示例程序的数据源名称为“jdbc” 然后启动数据库后台服务和WebLogic容器 最后运行程序 注意:如果时java项目利用jndi时,必须导入WebLogic容器里的weblogic.jar包,如果是web项目则不用导入 利用JNDI获取数据源,示例程序源码如下: package myjdbc; import java.util.Hashtable; import javax.naming.Context; import javax.naming.InitialContext; import javax.sql.DataSource ...
package com.hzp.reg; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Reg1 { public static void main(String[] args){ String s1="123456789"; String s2="abcdefg"; String s3=" 12ab"; String s4="12 abc"; String s5="172. ...
一个好的用户界面(GUI)的设计通常可以在现实世界找到相应的表现。例如,如果在您的面前摆放着一个类似于电脑键盘按键的一个简单的按钮,然而就是这么简单的一个按钮,我们就可以看出一个GUI设计的规则,它由两个主要 ...

Java反射

Java中提供了Class类,可以通过Class类获取类的定义信息,包括包名、类名、类上的注释(Annotation)、类的修饰符、父类、继承的接口、构造方法、成员变量和成员方法。这些信息分别使用java.lang.annotation.Annotation、 java.lang.reflect.Constructor、java.lang.reflect.Field、java.lang.reflect.Method、java.lang.reflect.Modifier来表示。可以动态调用方法和属性。下面的例子展示了基本用法。 package ch5; import static java.l ...
Global site tag (gtag.js) - Google Analytics