??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲日本va中文字幕,国模精品一区,久久蜜桃精品http://www.aygfsteel.com/hoojo/category/49179.html学习在于U篏Q滴水可以石I!学而不思则|,思而不学则D! zh-cnFri, 30 Aug 2013 20:55:20 GMTFri, 30 Aug 2013 20:55:20 GMT60Java 利用SWFUpload多文件上?session 为空失效Q不能验证的问题http://www.aygfsteel.com/hoojo/archive/2012/05/11/377897.htmlhoojohoojoFri, 11 May 2012 06:14:00 GMThttp://www.aygfsteel.com/hoojo/archive/2012/05/11/377897.htmlhttp://www.aygfsteel.com/hoojo/comments/377897.htmlhttp://www.aygfsteel.com/hoojo/archive/2012/05/11/377897.html#Feedback0http://www.aygfsteel.com/hoojo/comments/commentRss/377897.htmlhttp://www.aygfsteel.com/hoojo/services/trackbacks/377897.html     我们都知道普通的文g上传是通过表单q行文g上传的,q不能达到异步上传的目的。通过使用某些技术手D,比如jquery form.js可以辑ֈ异步上传的目的,但最重要的问题在于,它不能够q行多个文g的上传。如果你要上传多个文Ӟ必须一个一个地上传Q同时还要在界面上处理当上传完一个文件之后,下一个文件上传框的问题?br>    现在我们有了一个更多的q行Q即使用swfuploadq行多文件异步上传。顾名思义Q它是一个flash的上传工P但在界面上的表现形式使它和普通的html元素一P没有复杂的展玎ͼ׃个普通的上传框,卛_辑ֈ惌目的?

    关于swfupload的用这里自不必多,q里主要介绍的是解决在java web开发过E中l常到的验证失败的问题。这是因为flash在上传的时候用的是和览器不同的会话Qflash的SWFUpload上传利用socket套接字进行通信Q所以导致session和原来上一ơ的会话不同Q导致session丢失。这样就D服务器在验证时自然被认ؓ是新会话Q从而验证不能通过Q导致上传不能成功了?br>    解决问题的方法,是让flash在上传文件的时候带上同在一个界面的session标识Q这通常是修改其中的upload_url来达到我们的目的Q修改如下所C:

upload_url: "/admin/infobuild/image/upload.action;jsessionid=${pageContext.session.id }"

上面q句话,必须攑ֈjsp界面上,因ؓ里面使用CJavaWeb的语法,当然q可以修改,通过?lt;%=session.getId()%> ?${pageContext.session.id } 攑ֈҎ的js变量中,可以辑ֈ隐藏变量的目的。比如如下的代码Q?
<!-- q句要房子jsp面中的script脚本中,或是攑֜servlet的response.getWriter()中的script脚本中;M要在swfupload 的js引入之前执行 -->
window["sessionId"]="${pageContext.session.id}"; 
<!-- q句话就可以在引入的js中?-->
upload_url: Gtip.util.addContextPath("/admin/infobuild/image/upload.action;jsessionId"  + "=" + window["sessionId"]),

以上Ҏ是解军_jsp面中解决的取值java的变量|

如上代码的第一句放到jsp文g中,如jsp的公共include文g中。下面一句就攑ֈjs文g中,如引入的upload.js文g当中?br>    但以上代码还存在一个问题,是默认的sessionName问题。在tomcat或者其它j2ee容器Q默认的sessionName也是 jsessionId。如果我们修改了sessionName如通过tomcat的server.xml修改session_cookie_nameQ这样默认的sessionName是我们修改之后的了。解x问题Q需要再加一个参数设|才可,如下所C:

 

<!-- q三行放在include 导入的那个jsp的页面中 -->
window["contextPath"] = "${pageContext.request.contextPath}";
window["sessionId"] = "${pageContext.session.id}";
window["sessionName"] = "jsessionId";
 
// js中用jsp中设|的window的变量?/span>
upload_url: addContextPath("/admin/infobuild/image/upload.action;" + window["sessionName"] + "=" + window["sessionId"])

以上代码的前三行攑ֈ公共的include.jsp中,最后一行放到公qupload.js中。这样即可满xl要求了?br>不过有一点不好的xQ在部v环境中时Q如果部|环境修改了sessionNameQ则必须在此include.jsp中修改一个具体的sessionName才可?

转蝲h明出?i flym
本文地址:http://www.iflym.com/index.php/code/201108190001.html



hoojo 2012-05-11 14:14 发表评论
]]>
Servlet 手记http://www.aygfsteel.com/hoojo/archive/2012/01/29/368965.htmlhoojohoojoSun, 29 Jan 2012 07:50:00 GMThttp://www.aygfsteel.com/hoojo/archive/2012/01/29/368965.htmlhttp://www.aygfsteel.com/hoojo/comments/368965.htmlhttp://www.aygfsteel.com/hoojo/archive/2012/01/29/368965.html#Feedback5http://www.aygfsteel.com/hoojo/comments/commentRss/368965.htmlhttp://www.aygfsteel.com/hoojo/services/trackbacks/368965.html

Servlet 是一U比JSP 更早的动态网늼E技术。在没有JSP 之前Q?Servlet 也是同时充当视图层、业务逻辑层及持久层角艌Ӏ?

Servlet 的开发效率非怽Q特别是当用Servlet 生成表现层页面时Q页面中所有的HTML 标签Q都需采用Servlet 的输出流来输出,因此极其烦琐。由于Servlet 是个标准的Java c,因此必须q序员开发,其修攚w度大Q美工h员根本无法参与Servlet 面的开发。这一pd的问题,都阻了Servlet 作ؓ表现层的使用?

自MVC 规范出现后, Servlet 的责d始明下来,仅仅作ؓ控制器用,不再需要生成页面标{,也不再作囑ֱ角色使用?

 

Servlet Q通常UCؓ服务器端程序,是运行在服务器端的程序,用于处理及响应客Lh?

Servlet 是个Ҏ的Java c,q个Java cdȝ承HttpServlet 。每个Servlet 可以响应L的请求。Servlet 提供不同的方法用于响应客Lh?

doGet: 用于响应客户端的get h?

doPost: 用于响应客户端的post h?

doPut: 用于响应客户端的put h?

doDelete: 用于响应客户端的delete h?

事实上,客户端的h通常只有get 和post 两种; Servlet Z响应q两U请求,必须重写doGet 和doPost 两个Ҏ。如果Servlet Z响应四个ҎQ则需要同旉写上面的四个Ҏ?

 

大部分时候, Servlet 对于所有请求的响应都是完全一L。此Ӟ可以采用重写一个方法来代替上面的几个方法, Servlet 只需重写service Ҏ卛_响应客户端的所有请求。另外, HttpServlet q包含两个方法?

init(ServletConfig config): 创徏Servlet 实例Ӟ调用的初始化Ҏ?

destroy: 销毁Servlet 实例Ӟ自动调用的资源回收方法?

通常无须重写init和destroy两个ҎQ除非需要在初始化Servlet Ӟ完成某些资源初始化的ҎQ才考虑重写init Ҏ。如果需要在销毁Servlet 之前Q先完成某些资源的回Ӟ比如关闭数据库连接等Q才需要重写destroy Ҏ?

注意:如果重写了init(ServletConfig config)ҎQ则应在重写该方法的W一行调用super.init(config) 。该Ҏ调用HttpServlet 的init Ҏ?

 

Servlet 和JSP 的区别在?

Servlet 中没有内|对象,原来JSP 中的内置对象都必通过HttpServletRequest对象Q或由HttpServletResponse 对象生成:

对于静态的HTML 标签Q?Servlet 都必M用页面输出流逐行输出?

q也正是W者在前面介绍? JSP 是Servlet 的一U简化,使用JSP 只需要完成程序员需要输出到客户端的内容Q至于JSP 中的Java 脚本如何镶嵌C个类中,由JSP 容器完成。而Servlet 则是个完整的Java c,q个cȝservice Ҏ用于生成对客L的响应?

 

Servlet 的配|?/strong>

~辑好的Servlet 源文件ƈ不能响应用户hQ还必须其~译成class 文g。将~译后的HelloServlet. class 文g攑֜WEB-INF/classes 路径下,如果Servlet 有包Q则q应该将class 文g攑֜对应的包路径下?

Z让Servlet 能响应用戯求,q必dServlet 配置在Web 应用中。配|ServletӞ需要修改web.xrnl 文g?

配置Servlet 需要配|两个部分?lt;servlet>/<servlet-mapping>

 

Servlet的生命周?/strong>

Servlet 在容器中q行Q其实例的创建及销毁等都不是由E序员决定的Q而是由容器进行控制?

Servlet 的创建有两个选择?

客户端请求对应的Servlet Ӟ创徏Servlet 实例:大部分的Servlet 都是q种Servlet?Web 应用启动Ӟ立即创徏Servlet 实例:即load-on-startup Servlet?

每个Servlet 的运行都遵@如下生命周期?

(1)创徏Servlet 实例?

(2) Web 容器调用Servlet 的init ҎQ对Servlet q行初始化?

(3) Servlet 初始化后Q将一直存在于容器中,用于响应客户端请求。如果客L有get hQ容器调用Servlet 的doGet Ҏ处理q响应请求。对于不同的hQ有不同的处理方法,或者统一使用service Ҏ处理来响应用戯求?

(4) Web 容器角色销毁Servlet Ӟ调用Servlet 的destroy ҎQ通常在关闭Web容器之时销毁Servlet?

 

使用Servlet创作为控制器

正如前面见到Q用Servlet 作ؓ表现层的工作量太大,所有的HTML 标签都需要用页面输出流生成。因此,使用Servlet 作ؓ表现层有如下三个劣势?

开发效率低Q所有的HTML 标签都需使用面输出完成?

不利于团队协作开发,工人员无法参与Servlet 界面的开发?

E序可维护性差Q即使修改一个按钮的标题Q都必须重新~辑Java 代码Qƈ重新~译?

 

整个l构非常清晰Q下面是MVC 中各个角色的对应lg?

M: ModelQ即模型Q对应JavaBean ?

V: View Q即视图Q对应JSP 面?

C: ControllerQ即控制器,对应Servlet?/p>

 

load-on-startup Servlet

Servlet 的实例化有两个时?用户h之时Q或应用启动之时。应用启动时启动的Servlet 通常是用于某些后台服务的Servlet Q或者拦截很多请求的Servlet; q种Servlet 通常作ؓ应用的基Servlet 使用Q提供重要的后台服务。如果需要Web 应用启动Ӟ可用load-on-startup 元素完成Servlet 的初始化。load-on-startup 元素只接收一个整型|q个整型D, Servlet p优先初始化?/p>

讉KServlet 的配|参?

配置Servlet Ӟq可以增加附加的配置参数。通过使用配置参数Q可以实现更好地解耦,避免所有的参数以硬~码方式写在E序中?

讉KServlet 配置参数要通过ServletConfig cȝ实例完成Q?ServletConfig提供如下Ҏ?

java.lang.String getInitParameter(java.lang.String name): 用于获取初始化参数?

注意: JSP 的内直对象config 是此处的ServletConfig

自定义标{

使用标签c,可以使用单的标签来封装复杂的功能Q从而团队更好地协作开?能让工人员更好地参与JSP 面的开??

自定义标{都必ȝ承一个父c? java.Servlet.jsp.tagext.TagSupport 。除此之外,自定义标{q有如下要求?

·如果标签cd含属性,每个属性都有对应的getter 和setter Ҏ?

·重写doStartTag或doEndTagҎQ这两个Ҏ生成面内容?

·如果需要在销毁标{之前完成资源回Ӟ则重写re1easeҎ?/p>

TLD 文g

TLD 是Tag Library Definition 的羃写,x{ֺ定义Q文件的后缀是tld Q每个TLD文g对应一个标{ֺQ一个标{ֺ中可包含多个标签。TLD 文g也称为标{ֺ定义文g。标{ֺ定义文g的根元素是taglibQ它可以有多个tag 子元素,每个tag 子元素都对应一个标{?

~辑了标{ֺ定义文gq不够, Web 容器q无法加载标{ֺ定义文g。还必须在web.xml 文g中增加标{ֺ的定义。在web.xml 文g中定义标{ֺ时用taglib 元素Q该元素包含两个子元? taglib-uri和taglib-locationQ前者确定标{ֺ的URI; 后者确定标{ֺ定义文g的位|?/p>

使用标签?

使用标签库分成以下两步?

(1) 导入标签?使用taglib ~译指o导入标签?

(2) 使用标签:在JSP 面中用自定义标签?

taglib 的语法格式如?

?@ taglib uri="tagliburi" prefix="tagPrefix" %?

其中uri 属性确定标{ֺ定义文g的URIQ这个URI 是在web.xml 文g中ؓ标签

库定义的URI。而prefix 属性确定的是标{։~Q即在JSP 面中用标{时Q该标签

库负责处理的标签前缀?

使用标签的语法格式如?

<tagPrefix : tagName tagAttribute=ntagValue n ...>

<tagBody/>

</tagPrefix>

如果该标{没有标{体Q则可以使用如下语法格式:

<tagPrefix : tagName tagAttribute=ntagValue n ?>

带标{体的标{?

带标{体的标{,是允许在标{ֆ嵌套标签Q通常可用于完成一些逻辑q算例如判断和@环等?

带标{体的标{N要承BodyTagSupportQ该cd含一个bodyContent 属性,该属性代表标{体?

BodyTagSupport q包含两个方法?

doAfterBody: 每次处理完标{体后调用该Ҏ?

void doInitBody: 开始调用标{体时调用该Ҏ?

如果有必要,可以重写q两个方法?

在处理标{的各个方法中Q不同的q回值对应不同的含义Q常用的q回值有如下几个?

SKIP_BODY: 不处理标{体Q直接调用doEndTagҎ?

SKIP_PAGE: 忽略标签后面的JSP 面?

EVAL_PAGE: 处理标签l束Q直接处理页面内宏V?

EVAL_BODY_BUFFERED: 处理标签体?

EVAL_BODY_INCLUDE: 处理标签体,但忽略setBodyContent和doInitBodyҎ?

EVAL_BODY_AGAIN: Ҏ{体循环处理?

 

Filter

Filter q不是一个标准的Servlet Q它不能处理用户hQ也不能对客L生成响应。主要用于对HttpServletRequest q行预处理,也可以对HttpServletResponse q行后处理,是个典型的处理链?

Filter 有如下几个用处?/u>

·在HttpServletRequest 到达Servlet 之前Q拦截客LHttpServletRequest ?

·Ҏ需要检查HttpServletRequest Q也可以修改HttpServletRequest 头和数据?

·在HttpServletResponse 到达客户端之前,拦截HttpServletResponse ?

·Ҏ需要检查HttpServletResponse Q也可以修改HttpServletResponse 头和数据?

Filter 有如下几个种cR?/em>

·用户授权的Filter: Filter 负责查用戯求,Ҏhqo用户非法h?

·日志Filter: 详细记录某些Ҏ的用戯求?

·负责解码的Filter: 包括寚w标准~码的请求解码?

.能改变XML 内容的XSLTFilter {?

一个Filter 可负责拦截多个请求或响应:一个请求或响应也可被多个请求拦截?

创徏一个Filter 只需两个步骤:

(1)创徏Filter 处理c?

(2) 在web.xml 文g中配|Filter?

创徏Filter c?/u>

创徏Filter 必须实现javax.servle t. Filter 接口Q在该接口中定义了三个方法?

void init(FilterConfig config): 用于完成Filter 的初始化?

void destroy: 用于Filter 销毁前Q完成某些资源的回收?

void doFilter(ServletRequest request, ServletResponse response,FilterChain chain): 实现qo功能Q该Ҏ是Ҏ个请求及响应增加的额外处理?

执行chain.doFilter(requestQreponse)ҎQ当Filter 对请求过滤后Q依然将h发送到目的地址。如果检查权限,可以在Filter 中根据用戯求的HttpSessionQ判断用h限是否够?

如果权限不够Q则调用重定向即可,无须调用chain.doFilter(requestQreponse)Ҏ?

配置Filter

Filter 的配|和Servlet 的配|非常相|都需要配|两个部?

·配置Filter 名?

·配置Filter 拦截URL 模式?

区别在于Q?Servlet 通常只配|一个URL Q而Filter 可以同时拦截多个h的URL?

因此Q可以配|多个Filter 拦截模式?

 

Listener

Listener 的作用非常类gload-on-startup Servlet。用于在Web 应用启动Ӟ启动某些后台E序Q这些后台程序负责ؓpȝq行提供支持?

Listener 与load-on-startup Servlet 的区别在? Listener 的启动时机比load-on-startup Servlet 早,只是Listener 是Servlet 2.3 规范之后才出现的?

使用Listener 只需要两个步?

(1) 创徏Listener 实现cR?

(2) 在web.xml 文g中配|Listener?

创徏Listener c?/em>

创徏Li stener cdd现ServletContex tListener 接口Q该接口包含两个Ҏ?

eontextInitialized(ServletContextEvent see): 启动Web 应用Ӟpȝ调用该Filter的方法?

eontextDestroyed(ServletContextEvent see): 关闭Web 应用时候,pȝ调用Filter

的方法?

配置Listener

正如load-an-startup Servlet 一P Listener 用于启动Web 应用的后台服务程序,但不负责处理及响应用戯求,因此无须配置URL?

若将Listener 配置在Web 容器?如果Web 容器支持Listener)Q则Listener 随Web 应用的启动而启动?

配置Listener 时?lt;listener/>元素Q下面是配置Listener 的片D?

<!-- 配置Listener-->

<listener>

<!- 指定Listener 的实现类?

<listener-class>lee.ScheduleListener</listener-class>

</listener>

在上面的配置中,既无配|Listener 的名字,也无配|Listener 的URL 只需配置它的实现cd可。此时容器将自动部|在容器中的ListenerQƈ在应用启动时Q自动加载所有的Listener?/p>



hoojo 2012-01-29 15:50 发表评论
]]>
JSP 手记http://www.aygfsteel.com/hoojo/archive/2012/01/29/368960.htmlhoojohoojoSun, 29 Jan 2012 06:49:00 GMThttp://www.aygfsteel.com/hoojo/archive/2012/01/29/368960.htmlhttp://www.aygfsteel.com/hoojo/comments/368960.htmlhttp://www.aygfsteel.com/hoojo/archive/2012/01/29/368960.html#Feedback1http://www.aygfsteel.com/hoojo/comments/commentRss/368960.htmlhttp://www.aygfsteel.com/hoojo/services/trackbacks/368960.html
UMLp?View)、图(Diagram)、模型元?Model Element)和通用机制(General Mechanism){几个部分组成?

a) 视图(View)Q?是表辄l的某一斚w的特征的UML建模元素的子集,由多个图构成Q是在某一个抽象层上,对系l的抽象表示?

b) ?Diagram)Q?是模型元素集的图形表C,通常是由弧(关系Q和点Q其他模型元素)怺q接构成的?

c) 模型元素(Model Element)Q代表面向对象中的类、对象、消息和关系{概念,是构成图的最基本的常用概c?

d) 通用机制(General Mechanism)Q用于表C其他信息,比如注释、模型元素的语义{。另外,UMLq提供扩展机Ӟ使UML语言能够适应一个特D的ҎQ或q程Q,或扩充至一个组l或用户?

  阅读全文

hoojo 2012-01-29 14:49 发表评论
]]>
վ֩ģ壺 ʯɽ| ǧ| | | | | | կ| ϼ| Ԫ| | ̨| Ͽ| ľ| ˰| | ʶ| | ͨ| ֹ| ۰| | | | հ| Ž| ƽ| | | | ˴| | ζ| | կ| Ͼ| ƽ| С| | | Ԫ|