`
文章列表
Hibernate的Lazy初始化1:n关系时,你必须保证是在同一个Session内部使用这个关系集合,不然Hiernate将抛出例外。 另外,你不愿意你的DAO测试代码每次都打开关系Session,因此,我们一般会采用OpenSessionInView模式。 OpenSessionInViewFilter解决Web应用程序的问题 如果程序是在正常的Web程序中运行,那么Spring的OpenSessionInViewFilter能够解决问题,它: protected void doFilterInternal(HttpServletRequest request, HttpServ ...
  在Struts2.0中,Action已经与Servlet API完全分离,这使得Struts2.0的Action具有了更加灵活和低耦合的特性,与Struts1.0相比较而言是个巨大的进步。虽然Struts2.0的Action已经与Servlet API完全分离,但我们在实现业务逻辑处理时经常需要访问Servlet中的对象,如Session、Application等。Struts2.0 提供了一个名字为ActionContext的类,在Action中可以通过该类获得Servlet API。   ActionContext是一个Action的上下文对象,Action运行期间所用到的数据都保存在 ...
采用声明式事务 1、了解事务的传播特性 1、propagation_required:如果当前存在一个事务,则支持当前事务,如果没有事务则开启事务 2、propagation_supports:如果存在一个事务,则支持当前事务,如果没有事务则非事务执行 3、propagatio ...
ActionContext xwork框架的ActionContext是Action执行时的上下文,存放Action执行时需要用到的对象。在使用webwork时,其中放有Parameter、Session、ServletContext、Locale等信息。这样,webwork负责将Servlet相关数据转换为与ServletAPI无关的Map对象(即ActionContext),使得xwork的Action实现与web层、逻辑层与表现层的解耦。 ServletActionContext 提供直接与Servlet容器交互的途径。通过它,可以取得HttpServletRequest、Http ...
        在看AOP(Aspect Oriented Programming)的时候,看到有人说利用Java的动态代理可以轻松实现,于是准备对这个动态代理一探究竟...         首先google了一把,发现关于动态代理的material的确很多,先找了两篇中文的看了一下,大概明白了怎么回事,感觉很简单的一点东西,虽然有些细节还不是太清楚,溯本归源,到sun公司网站去看,然后通过自己动手做了个sample,终于搞清楚了它的来龙去脉,在这里与大家分享一下,如有不正之处,敬请指正...         首先简单回顾一下代理模式的内容,“动态”毕竟只是个修饰词:)... 定义(GoF):为 ...
    实现了Comparable接口的类在一个Collection(集合)里是可以排序的,而排序的规则是按照你实现的Comparable里的抽象方法compareTo(Object o) 方法来决定的。 compareTo方法在Object中并没有被声明,它是java.lang.Compareable接口中唯一的方法。一个类实现了Compareable接口,就表明它的实例具有内在的排序关系(natural ordering)。如果一个数组中的对象实现了Compareable接口,则对这个数组进行排序非常简单:Arrays.sort();对于存储在集合中的Comareable对象,搜索、计算极 ...
1.request.getRequestDispatcher()是请求转发,前后页面共享一个request ; response.sendRedirect()是重新定向,前后页面不是一个request。 2.RequestDispatcher.forward()是在服务器端运行; HttpServletResponse.sendRedirect()是通过向客户浏览器发送命令来完成. 所以RequestDispatcher.forward()对于浏览器来说是“透明的”; 而HttpServletResponse.sendRedirect()则不是。 3.ServletContext.getRe ...
推广Web Standards的人经常说XHTML比HTML更加严格,当然从某种意义上说是的,比如它要求所有的标签关闭并且所有的属性都用引号。但其实XHTML 1.0还分两种(加上Frameset DOCTYPE的话算三种,本文不讨论),Transitional(过渡型)和Strict(严格)DOCTYPEs。并且HTML 4.01也有同样的文档声明。 从字面上就可以看出来意思:Transitional DOCTYPEs只是为了实现从旧时代到新时代的过渡,而且Strict DOCTYPEs是默认的文档声明, 对构造HTML 4.01和XHTML 1.0都适用。 使用Transitional ...
ClassLoader一个经常出现又让很多人望而却步的词,本文将试图以最浅显易懂的方式来讲解 ClassLoader,希望能对不了解该机制的朋友起到一点点作用。 要深入了解ClassLoader,首先就要知道ClassLoader是用来干什么的,顾名思义,它就 ...
这是我听上学堂张志宇老师讲课的总结 一般用request.getParameter(属性名称)即可。 对于有重名的表单可以采取getParameterNames import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.*; //获取所有的参数 public class ShowParameters extends HttpServlet { public void doGet(HttpServletRequest request, HttpServl ...
        产生这个问题的原因是将substring方法将双字节的汉字当成一个字节的字符(UCS2字符)处理了。要解决这个问题的方法是首先得到该字符串的UCS2编码的字节数组,如下面的代码如下: byte[] bytes = s.getBytes("Unicode");         由于上面生成的字节数组中前两个字节是标志位,bytes[0] = -2,bytes[1] = -1,因此,要从第三个字节开始扫描,对于一个英文或数字字符,UCS2编码的第二个字节是相应的ASCII,第一个字节是0,如a的UCS2编码是0  97,而汉字两个字节都不为0,因此,可以利于UC ...
load加载方法: Users user = (Users)session.load(Users.class, userId); get加载方法: Users user = (Users)session.get(Users.class, userId); 两加载方法区别: 区别1:如果数据库中,没有userId的对象。如果通过get方法加载,则返回的是一个null;如果通过load加载,则返回一个代理对象,如果后面代码如果调用user对象的某个属性(比如user.getPassword())会抛出异常:org.hibernate.ObjectNotFoundException; 区别2 ...
Tomcat 原理解说:启动过程分析 从开始学Java,使用网页编程,我们的程序就一直在web容器内运行。容器的概念也是彷佛距离我们相当遥远。Spring给了我们一扇窗户,让我们理解轻量级容器的解决方案。非常庆幸我们所处在一个开源的Java世界,所有的优秀软件都可以在代码级进行亲密接触。 Tomcat结构写的相当之好,极易阅读。本系列文档计划着重以下3个方面: 1. Tomcat 启动过程分析。分析tomcat的启动过程 2. Tomcat Web容器功能分析。分析web容器的实现方法 3. Tomcat 其他配置说明。一些我们目前应用较少的Tomcat配置项说明 注意,本文档分析基于Tomc ...
1 - Tomcat Server的组成部分 1.1 - Server A Server element represents the entire Catalina servlet container. (Singleton) 1.2 - Service A Service element represents the combination of one or more Connector components that share a single Engine Service是这样一个集合:它由一个或者 ...
Global site tag (gtag.js) - Google Analytics