- 浏览: 83324 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
wzwahl36:
文章很赞!http://www.atool.org/img2b ...
Base64编码的图片在网页中的显示问题的解决 -
mllongze:
haidage 写道小伙,你头像真磕碜。那是我最帅的一张
JAVA实现约瑟夫环 -
haidage:
小伙,你头像真磕碜。
JAVA实现约瑟夫环 -
mllongze:
angelgreen 写道恩 谢谢啊 rpm安装 不用 呵呵 ...
linux下rpm安装时遇到的问题 -
mllongze:
haidage 写道你要干嘛 咋地 没看到嘛 常用的计算符号 ...
常用特殊符号
【1】.web.xml头文件
主要指定默认的会话超时时间间隔,单位是以分种为单位如上:30分种;该元素必须为整数如果该参数为0或负数则表示session会话永不超时!
setMaxInactiveInterval方法是设置当前会话的失效时间而不是整个web的失效时间单位是以秒为单位如为0或负数表示同上,常用于表示当前会话失效时间!
【3】ContextLoaderListener监听类
*:表示通配符
注:在web.xml里也可指定多个context参数
【4】filter过虑器
注:这里要说明一点就是在配置多个过滤器的时候(拿struts2中的
spring中CharactorEncodingFilter的核心方法为doFilterInternal
(截取一断代码)
这里的this.encoding就是上面配置文件中的<param-name>里的encoding这里我们清楚的看到this.encoding!=null的时候就会setCharactorEncoding最后执行下一个过滤器(也就是struts2)在执行struts2中的FilterDispatcher
】
这里的defaultEncoding就是struts.xml里配置struts.i18n.encoding属性值
)
】时候里面设置的设置编码是跟据struts.xml里struts.i18n.encoding里的值【这里说明的主要目的是这俩个过滤器在一起的时候(spring在前)即使spring指定utf-8在Action中也可能出现乱码】最后注意一点就是在配置多个过滤器的同时要把struts2的过滤器放到最后。。为了防止过滤器链中断!
注:拦截器与过滤器的区别
1.拦截器是基于java的反射机制的,而过滤器是基于函数回调。
2.过滤器依赖servlet容器,而拦截器不依赖servlet容器
3.拦截器只能对action请求作用而过滤器则可以对所有的请求起作用
4.在action的生命同期拦截器可以调用多次,而过滤器只能在容器初始化时被调用一次
struts的拦截器是指
【5】OpenSessionInViewFilter
OpenSessionInViewFilter类是spring提供针对Hibernate的一个支持类
在Hibernate+spring时候如果设置了lazy=true那在读取数据当读取了父数据后Hibernate session就会关闭这样当使用用子数据的时候就会报出lazyinit异常这时就需要使用spring的OpenSessionInViewFilter
OpenSessionInViewFilter主要是保持Session状态直到request将全部页面发送到客户端这样就可以解决延迟加载的问题.
这个Filter和上面的Filter一样都要放到Struts2Filter之后
在OpenSessionInViewFilter中的singleSession(默认true)如果设置成true表示一个request只能打开一个session如果设置为false表示session可以打开多个这时可能会出现update,delete报打开多个session异常但当设置为true的时候系统的性能会因为用户的网络受到影响在request生成页面之后session才会被释放如用户网络很差那么连接池中的连接会迟迟不回收,造成内存增加,系统性能受损,但如果不true lazy的功效发挥不出来!!!
OpenSessionInViewFilter的调用流程:request->open session->transaction ->controller->View(JSP)->结束transaction并close session 流程没有什么问题
但想一下如果其中某一部分堵塞了。。那么connection就一直占用不放,最有可能堵塞的就是jsp这一部分一方面可能是页面内容大,response.write()时间长另一方面可能是网络慢,服务器与用户交互时久,当大量这样的情况出现时,就会出现连接池不足造成页面假死!!!
【6】ActionContextCleanUp
ActionContextCleanUp的作用是延长action中属性的生命周期,包括自定义属性,以便在jsp页面可以访问让ActionContextCleanUp来清除不让action自己来清除!
注:ActionContextCleanUp自struts2.1.3版本开始就已经不在采用这种方式了
将使用StrutsPrepareFilter和StrutsExecuteFilter来替代 如项目中遇到sitemesh Filter的话一定要注意顺序先(ActionContextCleanUp)StrutsPrepareFilter -- sitemesh ---StrutsExecuteFilter。
ActionContextFilter struts2.1.3之后邮(StrutsPrepareFilter和StrutsExecuteFilter)组合来代替.
【
自Struts2.1.3以后就这样去定义了
是告诉会通知FilterDispatcher在正确的时间清除请求
【6】StrutsPrepareAndExecuteFilter
FilterDispatcher是早期struts的过滤器2.1.3以后就都使用StrutsPrepareAndExecuteFilter了这样替代的好处就是如果是FilterDispatcher的话我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!
StrutsPrepareAndExecuteFilter是可以分成StrutsPrepareFilter和StrutsExecuteFilter的;“可以在这两个过滤器之间加上我们自己的过滤器”
【7】FCK与Struts2Filter冲突问题
【
Fckeditor在web.xml中的配置
想使用fckeditor还必须在fckeditor.properties设置
connector.userActionImpl=net.fckeditor.requestcycle.impl.UserActionImpl
需要把Struts2的Mapping只过滤*.jsp/*.action这样
【8】web.xml中taglib标签不识别问题
如果web.xml的web-app_2.3.dtd 就可以直接去写如
【
如果是web-app_2.4.dtd就需要这样去写
【
这样给看的人一次看完的机会,,,
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">【2】session的超时时间设定
<session-config> <session-timeout>30</session-timeout> </session-config>
主要指定默认的会话超时时间间隔,单位是以分种为单位如上:30分种;该元素必须为整数如果该参数为0或负数则表示session会话永不超时!
setMaxInactiveInterval方法是设置当前会话的失效时间而不是整个web的失效时间单位是以秒为单位如为0或负数表示同上,常用于表示当前会话失效时间!
【3】ContextLoaderListener监听类
<listener> <listener-class> org.springframework.web.context.ContextLoaderListener </listener-class> </listener>主要是在web容器启动的时候自动装配ApplicationContext的配置信息;如果web.xml中不写配置信息默认的路径是/WEB-INF/appliactionContext.xml所以必须在相应的目录下创建名称与applicationContext.xml文件名相同的文件在web.xml才会启动!也可以自定义其文件名可以在web.xml中加入contextConfigLocation这个context参数
<context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:modules/applicationContext.xml, classpath:modules/**/spring-conf/*.xml, classpath:modules/**/struts-spring-conf/*.xml </param-value> </context-param>classpath:表示在classpath下查找
*:表示通配符
注:在web.xml里也可指定多个context参数
【4】filter过虑器
<filter> <filter-name>encodingFilter</filter-name> <filter-class> org.springframework.web.filter.CharacterEncodingFilter </filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> <param-name>forceEncoding</param-name> <param-value>true</param-value> </init-param> </filter>这里使用spring工具类里的CharacterEncodingFilter编码过虑器encoding表示编码格式forceEncoding表示是否强制编码
注:这里要说明一点就是在配置多个过滤器的时候(拿struts2中的
<filter> <filter-name>Struts2</filter-name> <filter-class> org.apache.struts2.dispatcher.FilterDispatcher </filter-class> </filter>)为例
spring中CharactorEncodingFilter的核心方法为doFilterInternal
(截取一断代码)
if (this.encoding != null && (this.forceEncoding ||request.getCharacterEncoding() == null)) { request.setCharacterEncoding(this.encoding);//设置字符集编码 if (this.forceEncoding&&responseSetCharacterEncodingAvailable) { response.setCharacterEncoding(this.encoding); } } filterChain.doFilter(request, response);//激活下一个过滤器
这里的this.encoding就是上面配置文件中的<param-name>里的encoding这里我们清楚的看到this.encoding!=null的时候就会setCharactorEncoding最后执行下一个过滤器(也就是struts2)在执行struts2中的FilterDispatcher
查看一下FilterDispatcher的源码在其doFilter里找到了方法prepareDispatcherAndWrapRequest(是对request预处理和封装的方法 protected HttpServletRequest prepareDispatcherAndWrapRequest(HttpServletRequest request,HttpServletResponse response) throw ServletException{ Dispatcher du = Dispatcher.getInstance(); if(du==null){ Dispatcher.setInstance(dispatcher); [color=red]dispatcher.prepare(request,response);[/color] } ////// return request; } prepare(request,response)方法【 public void prepare(HttpServletRequest request,HttpServletResponse response){ if(defaultEncoding!=null){ encoding = [color=red]defaultEncoding[/color]; } //// if(encoding!=null){ try { request.setCharacterEncoding(encoding);//设置了字符集 } catch (Exception e) { LOG.error("Error setting character encoding to '" + encoding + "' - ignoring.", e); } } } @Inject(StrutsConstants.STRUTS_I18N_ENCODING) public static void setDefaultEncoding(String val) { defaultEncoding = val; }
】
这里的defaultEncoding就是struts.xml里配置struts.i18n.encoding属性值
)
】时候里面设置的设置编码是跟据struts.xml里struts.i18n.encoding里的值【这里说明的主要目的是这俩个过滤器在一起的时候(spring在前)即使spring指定utf-8在Action中也可能出现乱码】最后注意一点就是在配置多个过滤器的同时要把struts2的过滤器放到最后。。为了防止过滤器链中断!
注:拦截器与过滤器的区别
1.拦截器是基于java的反射机制的,而过滤器是基于函数回调。
2.过滤器依赖servlet容器,而拦截器不依赖servlet容器
3.拦截器只能对action请求作用而过滤器则可以对所有的请求起作用
4.在action的生命同期拦截器可以调用多次,而过滤器只能在容器初始化时被调用一次
struts的拦截器是指
【5】OpenSessionInViewFilter
OpenSessionInViewFilter类是spring提供针对Hibernate的一个支持类
<filter> <filter-name>lazyLoadingFilter</filter-name> <filter-class> org.springframework.orm.hibernate3.support.OpenSessionInViewFilter </filter-class> <init-param> <param-name>singleSession</param-name> <param-value>false</param-value> </init-param> </filter>在这里说一下为什么使用OpenSessionInViewFilter?
在Hibernate+spring时候如果设置了lazy=true那在读取数据当读取了父数据后Hibernate session就会关闭这样当使用用子数据的时候就会报出lazyinit异常这时就需要使用spring的OpenSessionInViewFilter
OpenSessionInViewFilter主要是保持Session状态直到request将全部页面发送到客户端这样就可以解决延迟加载的问题.
这个Filter和上面的Filter一样都要放到Struts2Filter之后
在OpenSessionInViewFilter中的singleSession(默认true)如果设置成true表示一个request只能打开一个session如果设置为false表示session可以打开多个这时可能会出现update,delete报打开多个session异常但当设置为true的时候系统的性能会因为用户的网络受到影响在request生成页面之后session才会被释放如用户网络很差那么连接池中的连接会迟迟不回收,造成内存增加,系统性能受损,但如果不true lazy的功效发挥不出来!!!
OpenSessionInViewFilter的调用流程:request->open session->transaction ->controller->View(JSP)->结束transaction并close session 流程没有什么问题
但想一下如果其中某一部分堵塞了。。那么connection就一直占用不放,最有可能堵塞的就是jsp这一部分一方面可能是页面内容大,response.write()时间长另一方面可能是网络慢,服务器与用户交互时久,当大量这样的情况出现时,就会出现连接池不足造成页面假死!!!
【6】ActionContextCleanUp
ActionContextCleanUp的作用是延长action中属性的生命周期,包括自定义属性,以便在jsp页面可以访问让ActionContextCleanUp来清除不让action自己来清除!
注:ActionContextCleanUp自struts2.1.3版本开始就已经不在采用这种方式了
将使用StrutsPrepareFilter和StrutsExecuteFilter来替代 如项目中遇到sitemesh Filter的话一定要注意顺序先(ActionContextCleanUp)StrutsPrepareFilter -- sitemesh ---StrutsExecuteFilter。
ActionContextFilter struts2.1.3之后邮(StrutsPrepareFilter和StrutsExecuteFilter)组合来代替.
【
自Struts2.1.3以后就这样去定义了
<filter> <filter-name>StrutsPrepareFilter</filter-name> <filter-class> org.apache.struts2.dispatcher.ng.filter.StrutsPrepareFilter</filter-class> </filter> 】 <filter> <filter-name>struts-cleanup</filter-name> <filter-class> org.apache.struts2.dispatcher.ActionContextCleanUp </filter-class> </filter>
是告诉会通知FilterDispatcher在正确的时间清除请求
【6】StrutsPrepareAndExecuteFilter
FilterDispatcher是早期struts的过滤器2.1.3以后就都使用StrutsPrepareAndExecuteFilter了这样替代的好处就是如果是FilterDispatcher的话我必须使用Action的环境,而又想在执行action之前拿filter做一些事, 用FilterDispatcher是做不到的.!
StrutsPrepareAndExecuteFilter是可以分成StrutsPrepareFilter和StrutsExecuteFilter的;“可以在这两个过滤器之间加上我们自己的过滤器”
【7】FCK与Struts2Filter冲突问题
【
Fckeditor在web.xml中的配置
<servlet> <servlet-name>ConnectorServlet</servlet-name> <servlet-class> net.fckeditor.connector.ConnectorServlet </servlet-class> <load-on-startup>2</load-on-startup> </servlet> <servlet-mapping> <servlet-name>ConnectorServlet</servlet-name> <url-pattern> /skin/fckeditor/editor/filemanager/connectors/* </url-pattern> </servlet-mapping>】
想使用fckeditor还必须在fckeditor.properties设置
connector.userActionImpl=net.fckeditor.requestcycle.impl.UserActionImpl
需要把Struts2的Mapping只过滤*.jsp/*.action这样
【8】web.xml中taglib标签不识别问题
如果web.xml的web-app_2.3.dtd 就可以直接去写如
【
<taglib> <taglib-uri>/WEB-INF/struts-logic.tld</taglib-uri> <taglib-location>/WEB-INF/struts-logic.tld</taglib-location> </taglib>】
如果是web-app_2.4.dtd就需要这样去写
【
<jsp-config> <taglib> <taglib-uri>/WEB-INF/validator-user.tld</taglib-uri> <taglib-location>/WEB-INF/validator-user.tld</taglib-location> </taglib> </jsp-config>】
评论
2 楼
mllongze
2011-04-29
haidage 写道
哥们咱能不能分几章写,多好。
这样给看的人一次看完的机会,,,
1 楼
haidage
2011-04-28
哥们咱能不能分几章写,多好。
发表评论
-
Cross Frame 与不同域进行交互
2011-11-04 11:25 2160为何要用不同网域的 Iframe? 通常较具规模的网站, ... -
数据库连接池技术中dbcp、c3p0、jndi
2011-10-21 16:54 1232不管通过何种持久化技术,都必须通过数据连接访问数据库,在Spr ... -
JAVA实现约瑟夫环
2011-10-12 11:59 934//实现约瑟夫环 public class Josephus ... -
java.lang.NoClassDefFoundError: net/sf/ezmorph/Morpher
2011-09-22 12:58 1020使用JSON,在SERVLET或者STRUTS的ACTION中 ... -
六条比较有用的MySQL的SQL语句
2011-09-22 12:08 786本文给大家介绍六条比较有用的MySQL的SQL语句,可能很多人 ... -
linux下rpm安装时遇到的问题
2011-09-22 12:07 1185在Linux下安装rpm包时经常会遇到下面这个问题: ... -
JS 常用经典小技巧==(不断更新)
2011-09-22 12:06 955一、1. X.replace(/\"/g," ... -
ajax提交特殊字符编码转换问题.ishexdigit问题-解决方案
2011-09-22 12:03 2034今天测试密码输入了一串特殊字符后后台出来如下错误: 2010 ... -
JS逻辑运算符&&与||的妙用
2011-09-22 12:01 4721/* 文章写的不错 就此分享 */ &&中第一 ... -
JavaScript学习笔记(一)---Curry化技术/几个页面加载的区别
2011-04-28 17:36 2600Curry化技术是一种通过 ... -
不能使用Hibernate Reverse Engineering生成实体类的原因(转)
2011-04-28 16:00 1182/*取自http://tonysmith.iteye.com/ ... -
Myeclipse6.5反编译工具----jadclipse
2011-04-25 16:17 1218一。将解压后的jad.exe文件复制到java\jdk\bin ... -
Hibernate Criteria 学习
2011-04-21 11:04 646/*此文章网上摘录 仅供自己学习使用*/ 设计上可以灵活的 ... -
Base64编码的图片在网页中的显示问题的解决
2011-03-21 17:17 84171.为什么要用到BASE64编码的图片信息 Base6 ... -
JQuery的Cookies插件
2011-03-18 16:46 1805在使用jquery.cookies.2.2.0.js的插件时是 ... -
Hibernate 映射文件在不联网的时候 处理DTD方法
2011-03-18 16:16 1295这个问题应该是在做hibernate项目中遇到的比较常见的问题 ... -
DOM 创建 Select 加入Option
2011-03-17 11:19 856(转载....) 注意:Option中的O是要大写的,不然语法 ... -
Hibernate继承分页BUG解决方法之一
2011-03-09 16:08 1039(转载) 今天遇到了一个大问题,hibernate的继承分页b ... -
javascript cookies 存、取、删除实例
2011-03-09 14:51 884(转载 javascript cookies技术 。。。。 ... -
object和embed使用及举例(转载)
2011-03-09 11:21 1153今天看到公司代码里有j ...
相关推荐
### 在web.xml中引入其他XML配置文件的步骤 在Java Web开发中,`web.xml`作为Web应用程序的核心配置文件,负责定义应用级别的配置信息。为了提高代码的可维护性和复用性,有时需要将一部分配置内容提取到独立的XML...
Tomcat 配置文件 web.xml 与 server.xml 解析 Tomcat 配置文件 web.xml 和 server.xml 是 Tomcat 自身的配置文件,用于配置 Tomcat 服务器的行为和性能。在本文中,我们将对 web.xml 和 server.xml 中的主要配置项...
《web.xml详解与应用》 在Java Web开发中,`web.xml`文件是核心配置文件,它是应用服务器启动时加载的部署描述符,用于定义Web应用程序的结构、配置及行为。本篇将深入探讨`web.xml`的重要概念、元素、属性以及在...
了解`web.xml`的加载顺序和节点解析,有助于我们更有效地配置和管理Web应用程序,确保其在运行时能够按照预期工作。通过合理的配置,我们可以实现诸如初始化资源、拦截请求、处理异常、安全管理等多种功能,提高Web...
### web.xml配置解析 #### 一、概述 `web.xml`是Java Web应用程序中的核心配置文件,用于描述和管理Web应用程序的各种组件,如Servlet、过滤器(Filter)、监听器(Listener)等。它是一个XML文件,遵循特定的DTD...
Web.xml 中的 listener、filter、servlet 加载顺序及其详解 在 Web 应用程序中,web.xml 文件扮演着非常重要的角色,它定义了 Web 应用的结构和配置。其中,listener、filter、servlet 是三个非常重要的概念,它们...
### web.xml 详细解析 `web.xml` 是 Java EE 应用中不可或缺的一部分,它作为 Servlet 容器的配置文件,用于控制 Web 应用的行为和配置。以下是对 `web.xml` 各部分的深入解析: #### 1. **定义头和根元素** - *...
标题中的问题“无法在web.xml或使用此应用程序部署的jar文件中解析绝对uri:[http://java.sun.com/jsp/jstl”指出,这可能是Java Web应用开发中遇到的一个常见错误,涉及到JSP(JavaServer Pages)和JSTL(Java...
web.xml 文件必须遵守 DTD 文件的规则,否则将无法被正确解析。 部署描述符 web.xml 文件是 Servlet/JSP 应用的部署描述符,用于描述应用程序的各个方面的元素,如 servlet 注册、servlet 映射以及监听器注册。...
WEB.xml详解主要涉及了Java EE Web应用程序的标准配置文件web.xml的详细使用说明,这是Servlet规范中定义的一个配置文件,用于配置web应用的初始化参数、servlet和filter、监听器等组件。 首先,web.xml文件在Web...
传统的SpringMVC配置往往依赖于XML文件,如web.xml和spring-servlet.xml等,但随着Spring框架的发展,出现了基于代码的配置方式,实现了零XML配置,提高了开发效率。本文将详细介绍如何在不使用web.xml的情况下,...
但是,如果web.xml文件存在语法错误或配置错误,Jboss将无法正确地解析该文件,从而导致启动报错Failed to parse WEB-INF/web.xml; - nested throwable。 错误分析 从错误日志中可以看到,Jboss在启动时抛出了一个...
《web.xml详细解析四合一》 web.xml是Java EE应用程序中的核心配置文件,它定义了Web应用的行为和结构。此文件对于理解Web应用如何运行至关重要,因为它提供了服务器如何处理请求、初始化Servlet、过滤请求以及处理...
本文将深入解析`web.xml`配置,帮助开发者理解其背后的原理和用途。 一、web.xml文件概述 `web.xml`被称为部署描述符(Deployment Descriptor),它位于Java Web项目的`WEB-INF`目录下。这个文件告诉应用服务器如何...
在现代的Web开发中,"Web项目没有web.xml配置文件"是一个常见的现象,尤其是在使用Spring Boot、Spring MVC等框架时。传统的Java Web应用通常依赖于`web.xml`文件来配置Servlet、过滤器、监听器等核心组件,但在最新...
`Web.xml`文件是Servlet容器(如Tomcat、Jetty)解析的配置文件,它为Web应用程序提供了元数据,包括Servlet、过滤器、监听器、会话配置、错误页面等。该文件位于`WEB-INF`目录下,是Java Web应用的标准配置部分。 ...
DOCTYPE声明类似于框架结构,它告诉解析器关于web.xml文档结构的规则,确保web.xml文档格式的正确性。例如: ```xml <!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "***">...
这个CHM文件深入解析了`web.xml`的各种配置元素,帮助开发者更好地理解和控制Web应用程序的运行方式。 1. **web.xml的作用** `web.xml`是Servlet容器(如Tomcat、Jetty等)启动时读取的配置文件,用于指导服务器...
首先,`web.xml`文件的结构遵循XML规范,文件以XML头开始,声明XML版本和字符编码,紧接着是DOCTYPE声明,用于指定servlet规范的版本和DTD,确保解析器能正确解析文件内容。`web-app`是整个文件的根元素,需要注意的...
《深入解析Web.xml 2.4配置详解》 在Java Web开发中,`web.xml`文件是核心配置文件之一,它定义了应用程序的行为和结构,是Servlet容器(如Tomcat)运行Web应用程序的基础。本文将深入探讨`web.xml 2.4`版本中的...