`

第四部分 DWRServlet类分析

 
阅读更多

org.directwebremoting.servlet.DwrServlet主要分为三部分,也就是三个主要方法:init;doGet;doPost;
1,init,初始化。
DWR对于Servelet容器内部设一个配置容器,该容器装载dwr映射相关信息。

publicvoidinit(ServletConfigservletConfig)throwsServletException
{
super.init(servletConfig);
ServletContextservletContext
=servletConfig.getServletContext();

try
{
//setupLogging()onlyneededforservletloggingifcommons-loggingisunavailable
//logStartup()justoutputssomeversionnumbers
日志初始化开始
StartupUtil.logStartup(servletConfig);

//createandsetupaDefaultContainer
DWR对于Servelet容器内部设一个配置容器,该容器装载dwr隐射相关信息。
container
=ContainerUtil.createAndSetupDefaultContainer(servletConfig);

StartupUtil.initContainerBeans(servletConfig,servletContext,container);
webContextBuilder
=container.getBean(WebContextBuilder.class);

ContainerUtil.prepareForWebContextFilter(servletContext,servletConfig,container,webContextBuilder,
this);
ContainerUtil.publishContainer(container,servletConfig);
ContainerUtil.configureContainerFully(container,servletConfig);
}

catch(ExceptionInInitializerErrorex)
{
log.fatal(
"ExceptionInInitializerError.Nestedexception:",ex.getException());
thrownewServletException(ex);
}

catch(Exceptionex)
{
log.fatal(
"DwrServlet.init()failed",ex);
thrownewServletException(ex);
}

finally
{
if(webContextBuilder!=null)
{
webContextBuilder.unset();
}

}

}



比较细致的环节:
init()调用
createAndSetupDefaultContainer()
调用
setupDefaultContainer(defaultContainer, servletConfig)
调用如下步骤
1)setupDefaults(container);
包括:
容器相关管理工具配置集,也就是要实现的一些接口。这种方式蛮好,当容器需要具备很多接口功能时,把这些接口全部做成隐射,并设置成可配置的实现
container.addImplementation(AccessControl.class, DefaultAccessControl.class);
// Mapping handlers to URLs,路径配置
createUrlMapping(container, "/index.html", IndexHandler.class, "indexHandlerUrl");
//读取servlet配置属性
2)setupFromServletConfig(container, servletConfig);
额外处理1)中多选类型
3)resolveMultipleImplementations(container, servletConfig);

里面使用了通用yui型压缩器
【使用 YUI Compressor 压缩 Javascript 和 CSS

工具下载: http://www.julienlecomte.net/yuicompressor/
英文介绍: http://com3.devnet.re3.yahoo.com/yui/compressor/

YUI Compressor是使用Java编写的工具,需要Java版本大于等于1.4。

工作原理简介:
主要是去掉冗余的空白,主要包括空格,换行符、制表符。
对于 Javascript,还采用缩短变量名的方法压缩文件,就是在保证代码正确性的情况下将变量名用只有1个字符的字符串代替,或者2个、3个字符,总之尽量短。
对于 CSS,还有采用优化0值属性值的表示,优化颜色值的方法压缩文件。
CSS的优化比 CSSTidy 功能弱。CSSTidy还能支持一些相关属性的合并。】
//工具配置集 加载,显现,检查
4)container.setupFinished();
容器内容bean初始化 ,包括系统默认???
initContainerBeans

2,doGet
实际调用doPost,看到这里最好温习下servlet的doGet方法和doPost的区别

protectedvoiddoGet(HttpServletRequestreq,HttpServletResponseresp)throwsIOException,ServletException
{
doPost(req,resp);
}


3,doPost
在工程中,有个样例Dynamically Text,地址是http://localhost:5050/dwr/simpletext/index.html,当点击按钮时,实际上就是触发了org.directwebremoting.servlet.DwrServlet的下面的方法。

protectedvoiddoPost(HttpServletRequestrequest,HttpServletResponseresponse)throwsIOException,ServletException
{
try
{
webContextBuilder.set(request,response,getServletConfig(),getServletContext(),container);

UrlProcessorprocessor
=container.getBean(UrlProcessor.class);
processor.handle(request,response);
}

finally
{
webContextBuilder.unset();
}

}
分享到:
评论

相关推荐

    DWR的访问DAO和Servlet

    DWR 的 访问 Dao和servlet的简单测试和应用

    dwr相关jar包

    dwr推送要用到的两个jar包,dwr.jar是3.0的,还有前台需要的jquery文件,需要案例请关注我看我的个人博客,里面有dwr使用的详细介绍,有什么问题直接回复我

    dwr源码包,dwr.jar包下载

    org.directwebremoting.servlet.DwrServlet <init-param> <param-name>debug</param-name> <param-value>true</param-value>//开启调试 </init-param> <servlet-name>dwr-invoker ...

    最新的dwr的jar包

    最新的dwr的jar包,要用到dwr技术必须的jar包。

    DWR入门教程之HelloWorld - 中文JAVA技术网.mht

    请先到 http://getahead.ltd.uk/dwr/ 下载 dwr.jar ,放到 WEB-INF/lib 下 … 负责处理客户端请求,并呼叫 Java 对象的是 DWRServlet , DWR 其实也有些 ...JavaScript 应用程序中 … 在 web.xml 中加入 DWRServlet…

    ajax框架Dwr的具体使用步骤

    org.directwebremoting.servlet.DwrServlet <init-param> <param-name>debug</param-name> <param-value>true</param-value>//开启调试 </init-param> <servlet-name>dwr-invoker...

    Spring+Dwr整合的项目(源码)

    这是一个SPRING+DWR的整合项目.包括整合的三种方式,最彻底的整合是不需要配置DWRSERVLET+dwr.xml文件.使用annonation实现. 希望对你有用. 一起学习,一起进步...

    dwr 原码

    負責處理客戶端請求,並呼叫Java物件的是DWRServlet,DWR其實也有些Model 2的味道,只是View的這一層比較弱,因為放到客戶端的JavaScript應用程式中…

    在Spring中使用dwr

    在Spring中使用dwr,配置详解 <servlet-name>dwr-invoker <servlet-class>uk.ltd.getahead.dwr.DWRServlet <param-name>debug</param-name>

    Java 开发人员与网页设计人员的桥梁 DWR

    Java 开发人员与网页设计人员的桥梁 DWR…呃!...负责处理客户端请求,并呼叫Java对象的是DWRServlet,DWR其实也有些Model 2的味道,只是View的这一层比较弱,因为放到客户端的JavaScript应用程序中…

Global site tag (gtag.js) - Google Analytics