您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 广告经营 > 实际上容器就是一个服务程序
1.Web容器实际上容器就是一个服务程序,在服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如java中的Tomcat容器,ASP的IIS或PWS都是这样的容器,一个服务器不止一个容器的给处于其中的应用程序组件(JSP,SERVLET)提供一个环境,使JSP,SERVLET直接跟容器中的环境变量交互,不必关注其它系统问题。主要有WEB服务器来实现。例如:TOMCAT,WEBLOGIC,WEBSPHERE等。该容器提供的接口严格遵守J2EE规范中的WEBAPPLICATION标准。我们把遵守以上标准的WEB服务器就叫做J2EE中的WEB容器。2.获取网站上下文的根目录${pageContext.request.contextPath}3.%@pageisELIgnored=true%用于设置是否解释表达式语言3.四个作用域Page对应于类PageContextRequest对应于类HttpServletRequestSession对应于类HttpSessionApplication对应于类ServletContext4.html:link标签%Datenow=newDate();request.setAttribute(now,now);request.setAttribute(name,张龙);Mapmap=newHashMap();map.put(x,1);map.put(y,2);map.put(z,3);request.setAttribute(person,map);%ahref=/StrutsLoginDemo/RegUser.shtml注册(太差)/abrahref=${pageContext.request.contextPath}/RegUser.shtml注册(一般)/abrhtml:linkaction=/RegUser注册(很好)/html:linkbrhtml:linkaction=/RegUserparamId=usernameparamName=name注册(url编码)/html:linkbrhtml:linkaction=/RegUserparamId=timeparamName=nowparamProperty=time注册(对象属性url编码)/html:linkbrhtml:linkaction=/RegUsername=person注册(多个参数)/html:linkbr5.首页应用logic:forwardname=”forwardname”(家里地址)Forwardname为全局forward6.首页应用logic:redirect(可以是外面地址)logic:forwardname=reguserui/(forear为全局的)logic:redirectforward=reguserui/logic:redirectlogic:redirectpage=/RegUserUI.shtml/logic:redirectlogic:redirecthref=:redirect7.servelet-----rediret与forward区别forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器,浏览器根本不知道服务器发送的内容是从哪儿来的,所以它的地址栏中还是原来的地址。还有,转发是在web应用程序之内进行的,可以访问web应用程序所设定的内部目录,像是WEB-INF目录,只能在Web应用程序中进行,不能指定至其它的Web应用程序的地址。redirect就是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址,一般来说浏览器会用刚才请求的所有参数重新请求,所以session,request参数都可以获取。web应用程序会要求客户端浏览器重新发出请求地址,客户端会重新连接至所指定的地址,因此浏览器的地址会出现重新导向的信息,重新导向后的请求由浏览器发出,所以不能访问Web应用程序中的隐藏目录,像是WEB-INF,重新是由浏览器重新要求一个网页,可以指定至其他的Web应用程序地址。RequestDispatcher.forward()方法和HttpServletResponse.sendRedirect()方法的区别是:前者仅是容器中控制权的转向,在客户端浏览器地址栏中不会显示出转向后的地址,他是不会改变Request的值,如果你需要在下一个页面中能从中获取新的信息的话,你可以Request.setAttribute()来放置一些标志,这样从下一个页面中获取;后者则是完全的跳转,浏览器将会得到跳转的地址,并重新发送请求链接。这样,从浏览器的地址栏中可以看到跳转后的链接地址。所以,前者更加高效,在前者可以满足需要时,尽量使用RequestDispatcher.forward()方法,并且,这样也有助于隐藏实际的链接。在有些情况下,比如,需要跳转到一个其它服务器上的资源,则必须使用HttpServletResponse.sendRequest()方法。1、forward与include共亨Request范围内的对象,而redirect则不行,即:如果一个javabean被声明为request范围的话,则被forward到的资源也可以访问这个javabean,而redriect则不行。2、forward与include基本上都是转发到context内部的资源,而redirect可以重定向到外部的资源,如:req.sendRedriect1.从地址栏显示来说forward是服务器请求资源,服务器直接访问目标地址的URL,把那个URL的响应内容读取过来,然后把这些内容再发给浏览器.浏览器根本不知道服务器发送的内容从哪里来的,所以它的地址栏还是原来的地址.redirect是服务端根据逻辑,发送一个状态码,告诉浏览器重新去请求那个地址.所以地址栏显示的是新的URL.2.从数据共享来说forward:转发页面和转发到的页面可以共享request里面的数据.redirect:不能共享数据.3.从运用地方来说forward:一般用于用户登陆的时候,根据角色转发到相应的模块.redirect:一般用于用户注销登陆时返回主页面和跳转到其它的网站等.4.从效率来说forward:高.redirect:低.8.html:link与html:rewrite区别html:linkaction=/RegUser注册(很好)/html:link生成:ahref=/StrutsLoginDemo/RegUser.do注册(很好)/ahtml:rewriteaction=/RegUser/生成:/StrutsLoginDemo/RegUser.do9.在Action中使用response输出数据。必须设置返回ActionForward的对象为null,通常用于输出二进制数据如:图片,下载文件等10.向FormBean中填充复杂对象复杂对象一定要初始化,如果某个Action关联了一个FormBean,那么当浏览器请求这个Action时,Structs框架将创建这个FormBean把这个FormBean存储在相应的Web域中,并用请求参数来填充这个FormBean。11.actionattribute=userLoginForminput=/userLogin.jspname=userLoginFormpath=/userLoginscope=requesttype=com.yourcompany.struts.action.UserLoginActionforwardname=failedpath=/userLogin.jsp/forwardname=successpath=/userLoginSuccess.jsp//actionPath:请求此Action的路径,必须以/开头。省略了.do。Type:此Action所对应的类名。Scope:把FormBean的各个参数存储时,所指定的Web作用域。(默认是session)Attribute:存储此FormBean时所指定的名称scope.setAttribute(“Attribute所指定的名称”,formbean对象)Input:用于ActionForm验证数据错误时,返回的页面。Name:FormBean的名称。12.关于ActionErrors的存储问题当ActionForm判断数据错误时,ActionErrors对象被存储在request中,即request.setAttribute(“特殊属性名”,errors),其中该错误对象的属性名称是org.apache.struts.Globals.ERROR_KEY可以用${requestScope[org.apache.struts.action.ERROR]}取得错误用html:errorsproperty=”username”显示错误,username是ActionErrors的键而不是资源文件的键。13.bean:messagekey=””用于从资源文件中取信息例如:inputtype=submitvalue=bean:messagekey='info.submit'/(可以)html:submittitleKey=info.submitvalue=bean:messagekey='info.submit'//html:submit(不行)应该改成html:submittitleKey=info.submitbean:messagekey='info.submit'//html:submit14.配置多个资源包在struts-config.xml文档里写:message-resourcesparameter=com.struts.A/message-resourcesparameter=com.struts.Errorkey=error/若要用资源ERROR的内容需指定BUNDLE属性bean:messagekey='error.username'bundle=error/15.国际化的Locale信息存放在session中,你有改变session中的Locale信息才能改变语言显示。16.错误消息的显示。errors.footer=/ulhrerrors.header=h3fontcolor=redValidationError/font/h3pYoumustcorrectthefollowingerror(s)beforeproceeding:/pulerrors.prefix=lierrors.suffix=/li如图:html:errorsproperty=usernamebundle=errorheader=footer=prefix=suffix=/如何不设置header,footer,prefix,suffix为空值,则显示错误的格式将默认应用资源里指定的header,footer,prefix,suffix格式。注意:ActionErrors可以一个键对应多个值17.业务校验即在Action的execute方法中进行校验。ActionMessageserrors=newActionMessages();if(userForm.getUser().getUsername().trim().equals(sunny)){errors.add(username,newActionMessage(error.repeated));request.setAttribute(Glo
本文标题:实际上容器就是一个服务程序
链接地址:https://www.777doc.com/doc-3076368 .html