您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > 51CTO下载-基于SSH的轻量级J2EE应用开发与实践
1一、展现层JavaServletJavaServlet:是采用Java编写的服务器端程序。Servlet程序需要特定的环境来运行,我们称之为WEB服务器,或者WEB容器。Servlet生命周期加载-初始化(Servlet程序一般在第一次访问时进行初始化)调用销毁Servlet是非线程安全的(应该避免在JavaServlet类中定义成员变量)。Servlet多数情况响应的是HTTP请求,并返回HTML、XML等内容,所以不可避免的,在编写Servlet程序时一般都会涉及到大量HTML内容操作,这给程序编写效率和可读性带来很大的障碍。JavaServletPagesJSP:由SunMicroSystems公司倡导,多家公司共同参与创建的一种使软件开发者可以响应HTTP请求,而动态生成HTML、XML等多种格式文档的WEB网页的技术标准。JSP实质上依然是JavaServlet,JSP可以看做是高级提炼而作为JavaServletAPI的扩展而应用。JSP是使用Java语言作为脚本语言。JSP可以通过JSP编译器编译成JavaSerlvet类(.java),也可以直接编译成二进制码(.class)语法JSP页面=静态数据(HTML)+JSP指令+JSP脚本+JSP动作+用户标签静态数据(HTML、XML…)静态数据的输出与录入到JSP文件的内容是一致的。2JSP脚本元素和变量申明这类申明的代码会放到JavaServlet类体内,主要可以用来申明类成员变量、静态和类方法。%!intcount=0;%%!StringsayHello(Stringname){return“hello“+name;}%脚本式相当于为JavaServelt的service方法声明变量,或者在service方法输出内容,jsp实际会将内容存放到_jspService方法中%intname=“”%%out.print(“hello”);out.print(name);%表达式%=count+1%JSP内置脚本变量outJSPWriter用来写入响应流的数据pageServlet自身pageContext包含整个页面相联系的数据requestHTTPrequestresponseHTTPresponsesessionHTTPsession,会话信息,在多个请求中跟踪一个客户信息3JSP指令Include指令主要是将一个独立的文件包含到当前文件中;执行的效果可以理解为直接将被include的页面内容直接拷贝到当前include位置中示例代码:%@includefile=nocache.jsp%Page指令pageimport:导入java类或者包,相当于java中的importpagecontentType:设置生成页面的类型pageerrorPage:设置请求当前页面出现异常时,进行错误处理的错误页pageisErrorPage:标示当前页面是否为一个错误处理页pageisThreadSafe:设置jsp生成servlet是否需要线程安全示例:%@pageimport=java.util.*%%@pageimport=java.sql.Date%%@pagecontentType=text/html%%@pageisErrorPage=false%%@pageerrorPage=/common/error.jsp%%@pageisThreadSafe=true%Taglib指令描述需要使用的JSP标签库,需要设置两个属性,分别为标签前缀prefix和标签库资源的URI示例:%@taglibprefix=cwuri=/widget-tags%JSP动作jsp:include动态include,要区别与include指令jsp:forwardJsp跳转jsp:param4在jsp动作中传递参数jsp:getPropery/jsp:setPropery从指定的JavaBean获取属性值、给指定的JavaBean设置属性值jsp:useBean创建或者复用一个JavaBean变量jsp:pluginjsp:fallbackJsp:include和jsp:forward差别在于处理完另外一个JSP或者是JavaServlet后,前者将控制权交回给当前JSP页面,而后者不交回控制权。自定制标签库JSPStandardTagLibraryJSTLJSP标准标记库是,JSP1.2定制标记库集;封装了一些典型表现任务(迭代、格式化、逻辑判断),降低表现层代码的维护的复杂度、提高典型需求的复用。JSTL发展JSTL1.0:2002年6月21日发布,主要包含core、format、xml、sql四组标记库;支持Servlet2.3和JSP1.2规范。JSTL1.1:2003年9月25日发布第一个beta版本,2004年1月30日发布第一个release版本,主要包含;支持Servlet2.4和JSP2.0标准。JSTL使用加入对应的jar包(standard-xxx.jar和jstl-xxx.jar)ELJSP2.0一个重要的特性就是ExpressionLanguage,EL可以容易的存取通过JavaBeans组件存储的应用数据。我们可以通过${name}这种语法访问一个简单的变量,也可以通过${user.name}访问嵌套属性。我们可以在标签中使用EL表达式,例如:c:iftest=${sessionScope.cart.numberOfItems0}.../c:ifEL表达式以${符合开始,}符号结束,中间可以包含文字。需要输出${字符的话,可以通过引号括起来进行转义,例如’${‘5禁用EL因为${}在JSP2.0之前是非保留的,为了在不同的JSP标准中有相同的解析,我们可以选择禁用表达式;我们可以通过下面page指令来禁用表达式%@pageisELIgnored=true|false%表达式我们可以在下面场景使用EL表达式:文本姓名:${user.name}标准标签库或者自定义标签库的属性cw:textproperty=”name”value=”${name}”/变量WEB容器会根据PageContext.findAttribute(String)来获取变量的值;假设有${name}表达式,容器依次从page、request、session、application中获取变量值,假如这些作用域都不能找到对应的变量值,那么将返回null值;假如我们指定作用域的话,将从指定的作用域中获取变量值。ea[eb]形式表达式解析,先将ea转换为ea对应的值(va),将eb转换为eb变量对应值(vb),假如va、vb的有一个为null,直接返回null,否则根据类型来获取对应的变量值:va为Map,返回va.get(vb)va是List或者是数组,将vb强制转换为int,返回va.get(vb)或者是va[vb]va是一个JavaBean对象,将vb强制转换为String,假如vb是va的可读属性,返回对应的属性值,否则抛出对应的异常。隐式对象在EL表达式变量,将按照下列顺序来获取值:页面上下文ServletContextSessionRequestResponse隐式存储Param:pramValuesheader6cookieinitParam各作用域pageScoperequestScopesessionScopeapplicationScope当我们的表达式按名称引用这些对象时,将从指定的引用中返回值,例如${sessionScope[‘user.name’]}表达式字符JSPEL包含如下字符:布尔值:true、false整型浮点类型字符串:单引号、双引号需要转义Null:null操作符算术:+、-、*、/或者div、%或者mod逻辑:and、&&、or、||、not、!关系:==、eq、!=、ne、、lt、、gt、=、ge、=、le判空:empty条件/三目:A?B:C,注意,?和:前后的表达式最好使用空格分隔保留符EL表达式保留下列字符,我们的表达式中不能使用下列字符andeqgttrueinstanceofornelefalseemptynotltgenulldivmod使用函数我们可以在静态文本或则是标签属性中使用函数,例如:%@taglibprefix=fnuri={fn:length(name)}获取name变量值的长度c:iftest=${fn:length(name)100}””…/c:if8二、Struts2MVC介绍1、MCV是在1990年代从建筑设计领域引入到计算机科学中来的一种设计模式。2、MCV:Model-View-Controller,模型-视图-控制器。3、JavaWEB开发中的MVCFramework有:Struts、Webwork、SpringMVC、Tapestry、JSF、Struts2Struts2介绍Struts2是第二代基于MVC模型的web应用框架,是webwork和struts社区合并后的产物,struts2是继承自webwork,而不是struts1。Struts2主要组件有拦截器、OGNL表达式语言和堆栈等。9架构控制器是控制请求的转发和拦截。控制器将请求转发到相应的Action然后填充视图,从而进行展现。ControllerModelFilterDispatcherInterceptorActionViewJSP/Excel...setXXXgetXXXexecute10基本配置struts2配置文件通过在web.xml里配置过滤器来接入struts2.0.在struts.xml里配置拦截器。分发器配置我们可以在web.xml里配置一个过滤器来接入struts2,示例代码:filterfilter-namestruts2/filter-namefilter-classorg.apache.struts2.dispatcher.FilterDispatcher/filter-class/filterfilter-mappingfilter-namestruts2/filter-nameurl-pattern*.action/url-pattern/filter-mapping在web.xml中配置struts2过滤器,配置好后,所有以指定配置后缀(这里是.action)的请求将会采用struts2进行分发。11Action配置Action映射actionname=loginclass=tutorial.Loginresulttype=redirectActionworkspace/resultresultname=input/Logon.jsp/result/action属性必填描述name√Action名字class×Action分发对应的类converter×注册类型转换method×调用方法名上面配置配置中的login为action名字,这个是我们请求用的的url在配置中,我们为login配置了两个返回结果Action方法某个请求分派到指定的Action类时,默认是调用该Action的execute方法;假如你希望使用其他方法名,可以在配置Action通过配置method为实际调用的方法名。actionname=loginoutclass=tutorial.Loginmethod=loginoutresult/login.jsp/result/action通配符配置在很多情况下,我们的多个action配置可能会共用一个模式,例如edit操作时,访
本文标题:51CTO下载-基于SSH的轻量级J2EE应用开发与实践
链接地址:https://www.777doc.com/doc-3691874 .html