当前位置: 首页 > news >正文

网站广告赚钱怎么做医疗网站如何做优化

网站广告赚钱怎么做,医疗网站如何做优化,文登区住房和城乡建设局网站,建设银行论坛网站第一节、MVC以及Struts2简介 第二节、Action生命周期以及接收表单数据 第三节、Struts2配置以及Struts.xml详解 Struts2 主要配置文件 Web.xml 设置过滤器以及annotation初始化参数 Struts.xml 主配置文件 Struts.properties 默认属性文件 Struts-default.xml 默认配置文件… 第一节、MVC以及Struts2简介 第二节、Action生命周期以及接收表单数据 第三节、Struts2配置以及Struts.xml详解 Struts2 主要配置文件 Web.xml 设置过滤器以及annotation初始化参数 Struts.xml 主配置文件 Struts.properties 默认属性文件 Struts-default.xml 默认配置文件 Struts-plugin.xml 插件配置文件 Struts2 主要配置加载次序 由上至下以此为 Struts-default.xml Struts-plugin.xml Struts.xml Struts.properties Web.xml 如果在多个文件中配置了同一个Struts2常量则后一个文件中的配置的常量值将覆盖前面文件中配置的常量值。在不同文件中配置常量的方式是不一样的但不管哪个文件中配置Struts2常量都要指定两个属性常量name和常量value 推荐在struts.xml文件中配置Struts2常量 Struts-default.xml 配置信息 Bean元素属性 class必选指定了Bean实例的实现类 type可选通常是通过某个接口或者在此前定一个过的Bean name可选它指定的Bean实例的名字对于有相同type的多个Beanname必须唯一 scope可选指定Bean的作用域只能是default、singleton、request、session和thread之一 static可选它指定Bean是否使用静态方法注入。通常而言当指定了type属性时该属性就不应该设置为true optional可选指定Bean是否是一个可选Bean default.properties 默认属性信息 ##字符集 struts.i18n.encodingUTF-8 struts.objectFactory.spring.autoWire name struts.objectFactory.spring.useClassCache true struts.objectFactory.spring.autoWire.alwaysRespect false struts.multipart.parserjakartastruts.multipart.saveDirstruts.multipart.maxSize2097152 ##请求后缀 struts.action.extensionaction,, struts.serve.statictrue struts.serve.static.browserCachetrue struts.enable.DynamicMethodInvocation false struts.enable.SlashesInActionNames false struts.mapper.action.prefix.enabled false struts.mapper.action.prefix.crossNamespaces false struts.tag.altSyntaxtrue ##开发模式 struts.devMode false struts.i18n.reloadfalse struts.ui.themexhtmlstruts.ui.templateDirtemplate struts.ui.theme.expansion.token~~~struts.ui.templateSuffixftl struts.configuration.xml.reloadfalse struts.velocity.configfile velocity.properties struts.velocity.contexts struts.velocity.toolboxlocation struts.url.http.port 80struts.url.https.port 443 struts.url.includeParams none struts.dispatcher.parametersWorkaround false struts.freemarker.templatesCachefalse struts.freemarker.beanwrapperCachefalse struts.freemarker.wrapper.altMaptrue struts.freemarker.mru.max.strong.size0 struts.xslt.nocachefalse struts.mapper.alwaysSelectFullNamespacefalse struts.ognl.allowStaticMethodAccessfalse struts.el.throwExceptionOnFailurefalse struts.ognl.logMissingPropertiesfalse struts.ognl.enableExpressionCachetrue struts.handle.exceptiontrue Struts.xml 配置信息 struts !--重置属性— constant namestruts.devMode valuetrue /constant constant namestruts.i18n.encoding valueurf-8/constant !--定义包— package namedefault namespace/ extendstruts-default !--动作— action name class result name class /result /action /package /struts Constant 常量 Package 包 解决Action重名方便继承 -name 包名 -extends 父包名 -namespace 命名空间 Action -name 动作名 -class 实现类 global-results 全局结果 Result 局部结果 第四节、Action 高级 method 属性 action nameadmin classnet.nw.action.AdminAction methodadd resultresult.jsp/result /action DMI动态方法调用 action nameadmin classnet.nw.action.AdminAction resultresult.jsp/result /action a href%path%/admin/admin!add.action添加/a Forword Action(页面跳转) 默认Action default-action-ref nameerror/default-action-ref action nameerrorresulterror.jsp/result /action 通配符映射 action nameStudent* classnet.nw.struts2.action.StudentAction method{1}result/Student{1}_success.jsp/result /action{0} 表示匹配所有内容 {1} 表示前面的第一个*的内容 * 0-N不包括 / ** 0-N包括 / \ 转义符 Zero Configuration (Annotation配置) 引入struts2-convention-plugin-2.2.1.jar包 //web.xml filter……init-paramparam-nameactionPackages/param-nameparam-valuenet.nw.action/param-value/init-paraminit-paramparam-nameencoding/param-nameparam-valueUTF-8/param-value/init-param /filter //注解 parentPackage(valuestruts-default) Namespace(value/) Result(namelogin_success,location/login_success.jsp) Results({ Result(namelogin_success,location/login_success.jsp,typeredirect), Result(namelogin_failure,location/login_failure.jsp,typeredirect) }) 包含模块 include fileadmin.xml 出错页面 action name**resulterror.jsp/result /action 第五节、访问Web元素以及Result类型 Action访问web对象四种方式 1.创建request,session,application Map对象 Map request (Map)ActionContext.getContext().get(request); Map session ActionContext.getContext().getsession(); Map application ActionContext.getContext().getApplication(); 2.实现RequestAware,SessionAware,ApplicationAware接口 Map对象常用 3.创建传统的HttpServletRequest、HttpSession、ServletContext对象 HttpServletReques request ServletActionContext.getRequest(); HttpSession session request.getSession(); ServletContext application session.getServletContext(); 4.实现ServletRequestAware、ServletContextAware接口 Result类型 Dispatcher转发到URL通常是JSP(服务器) Redirect重定向到URL通常是JSP(客户端) Chain转发到一个Action服务器 redirectAction重定向到一个Action客户端 freemarker处理FreeMarker模型 Httpheader控制特殊HTTP行为的结果类型 Stream向浏览器发送InputSream对象通常用来处理文件下载还可用于返回AJAX数据 Velocity处理Velocity模版 Xslt处理XML/XLST模版 plainText显示原始文件内容例如文件源代码 第六节、Validation框架和i18n Exception异常处理 global-resultsresult name error /error.jsp/result /global-results global-exception-mappingsexception-mapping resulterror exceptionjava.lang.Exception/exception /global-exception-mappings Validation框架 分为validate() / XML / Annotation 三种方式 重写validate() 方法验证action中所有的方法。 Override public void validate(){if(! false){this.addFieldError(validate_error,验证错误);}super.validate(); } 编写ActionName-validation.xml验证action中所有的方法。 //Login-validation.xml !DOCTYPE validators PUBLIC -//Apache Struts//XWork Validator 1.0.3//ENhttp://struts.apache.org/dtds/xwork-validator-1.0.3.dtd validatorsfield nameusernamefield-validator typerequiredstringmessage用户名不能为空/message/field-validatorfield-validator typeemailmessage用户名必须为邮箱格式/message/field-validator/fieldfield namepasswordfield-validator typerequiredstringmessage密码不能为空/message/field-validatorfield-validator typestringlengthparam nameminLength6/paramparam namemaxLength20/parammessage密码长度必须在 ${min} ~ ${max}之间/message/field-validator/field /validators validateMethodName() 验证指定方法 //User.java public void validateLogin(){if(! false){this.addFieldError(validate_error,验证错误);} } Struts.xml配置 验证指定方法 //User.java Override public void validate(){if(! false){this.addFieldError(validate_error,验证错误);}super.validate(); } //Struts.xml actioninterceptor namedefaultStackparam namevalidation.includeMethodsadd/param/interceptor /action Annotation注解 Action(interceptorRefsInterceptorRef(valuedefaultStack,params{validation.includeMethod},add)) SkipValidation (推荐) 出错信息 s:filederror cssStylecolor:red / i18n i18n:Internationalization  国际化 L10n:localization 本地化 创建资源文件包名_语言_国家.properties App_en_US.properties App_zn_CN.properties Struts.xml加载属性文件 constant namestruts.custom.i18n.resources valueAPP/constant //.html a href%path%/language.action?request_localen_US英文/a s.property valuegetText(label.username) / //Validation.xml message ${getText(login.field.isnull,{getText(label.username)})} /message 第七节、OGNL一 OGNL简介 OGNL 是 Object-Graph Navigation Language 的缩写它是一种功能强大的表达式语言Expression Language简称EL通过它简单一致的表达式语法可以存储对象的任意属性调用对象的方法遍历整个对象的结构图实现字段类型转化等功能。它使用相同的表达式去存取对象的属性。 对象导航图 方法调用 普通方法 //java public String method(){return aaaaa; } //jsp s:property valueobj.method() / Action普通方法 //jsp s:property valuemethod() / 静态方法 //struts.xml constant namestruts.ognl.allowStaticMethodAcces valuetrue/constant //jsp s:property valuepackage.ActionNamemethod() / 静态属性注意必须是public //java public static Int num 123; //jsp s:property valuepackage.ActionNamenum / 构造方法 s:property valuenew package.construct() / 系统Math方法 s:property valuerandom() / 系统其他类方法 s:property valuejava.util.CalendargetInstance() / 集合对象 List有序可重复 Set无序不可重复 Map键值对 获取集合长度  list.size(); //java private ListString aaa new ArrayListString(); private SetString bbb new HashSetString(); private MapInterget,String ccc new HashMapinterger String(); public construct() {aaa.add(aaaaaa);bbb.add(bbbbbb);ccc.put(1,ccc); } //jsp s:property valueaaa / !---List 集合 - s:property valueaaa[0] / !---List 集合对象 - s:property valueaaa.{attr} / !---List 集合属性 - s:property valueaaa.{attr}.[0] / !---List 集合属性 - s:property valuebbb / !---Set 集合 - s:property valuebbb[0] / !---Set 集合对象 - s:property valueccc / !---Map 集合 - s:property valueccc[1] / !---Map 集合对象 - s:property valueccc.keys / !---Map 集合中key对象 - s:property valueccc.values / !---Map 集合中values对象 - s:property valueccc.size() / !---Map 集合中的长度 - 第八节、OGNL二 投影和选择 #this       当前?            所有^           第一个$           最后一个 //java private ListStudents stus new ArrayListStudents(); public construct() {stus.add(new Students(张三18));stus.add(new Students(李四28));stus.add(new Students(王五38)); } //jsp s:property valuestus.{?#this.age30}.{name} / s:property valuestus.{^#this.age30}.{name} / s:property valuestus.{$#this.age30}.{name} / #符号的使用 访问根对象    Struts2 中值栈为根对象如ODNL上下文和Action上下文#相当于ActionContext.getContext();    下面是几个ActionContext中有用的属性 #parameters URL地址参数#request 请求参数#session SESSION参数#application#attr 用于按request session application 顺序访问其属性attribute 用于选择和投影 构造Map #{foo1:bar1,foo2:bar2} $符号的使用 用于在国际化资源文件中引用OGNL表达式 在Struts 2 配置文件中引用OGNL表达式不推荐 值栈 Struts2 为每一次请求生成一个值栈不同的请求对应不同的值栈 Struts2 接收到一个action请求首先创建Action类的实例对象把该对象压进值栈。此时action中的所有属性都是默认值。然后执行定义该action上的所有拦截器最后执行action动作。Action构造方法-拦截器-动作方法注意拦截器可以改变属性的值当改变某个属性值后Action类的相应属性值就会变成在拦截器中最后改变该属性的这个值。 两个action之间采用的是服务器跳转如果两个action有名字相同的属性则对后一个属性的修改是否会覆盖前一个action的属性。分以下两种情况 如果具体相同名字的属性是引用类型则会覆盖。 如果具体相同名字的属性是基本类型则不会覆盖。 将对象压入值栈 ActionContext.getContext().getValueStack().push(obj); 访问值栈中的对象 [0].attr //从值栈第一个对象开始寻找 [1].method() //从值栈第二个对象开始寻找 s:property value[0] / s:property value[1] / s:property value[2] / 第九节、Interceptor拦截器 拦截器原理 拦截器Interceptor 是Struts2框架的核心Struts2中包括解析请求参数、将请求参数赋值给Action属性、执行数据校验、文件上传等工作都是通过拦截器实现的Struts2设计的灵巧性更大程度地得益于拦截器设计当需要扩展Struts2功能时只需要提供对应拦截器并将它配置在Struts2容器中即可如果不需要该功能时也只需要取消该拦截器的配置即可。 Struts2 内建了大量的拦截器这些拦截器以name-class对的形式配置在struts-default.xml文件中其中name是拦截器的名字就是以后使用该拦截器的唯一标识class则指定了该拦截器的实现类如果我们定义的package继承了Struts2的默认struts-default包则可以自由使用下面定义的拦截器否则必须自己定义这些拦截器。 常见的内置拦截器 chain服务器内部跳转 execAndWait等待执行拦截器 fileUpload文件上传拦截器 timer统计动作执行时间 token表单令牌 token-session表单令牌会话 拦截器与过滤器的区别 拦截器拦截的是动作(action)过滤器过滤的是请求(request)过滤器一般映射为 /* ,过滤所有请求。 拦截器是基于java反射机制的而过滤器是基于函数回调的。 过滤器依赖于servlet容器而拦截器不依赖于servlet容器。 拦截器可以访问Action上下文、值栈里的对象而过滤器不能。 在Action的生命周期中拦截器可以多次调用而过滤器只能在容器初始化时被调用一次。 自定义拦截器 实现Interceptor接口(不推荐) 继承AbstractInterceptor抽象类对所有方法进行拦截 //java class demoInterceptor extents AbstractInterceptor{Overridepublic String intercept(ActionInvocation invocation) throws Exception{//拦截之前String result invocation.invokde();//拦截之后return result;} } //struts.xml package namedefault namespace/ extendsstruts-defaultinteroeptorsinterceptor namedemoInterceptor classpackage.demoInterceptor /intorceptor-stack namemydefaultStackinterceptor-rel namedemoInterceptor /interceptor-relinterceptor-rel namedefaultStack /interceptor-rel/intorceptor-stack/interoeptors /package package nameuser namespace/user extendsdefaultaction namelogin classpackage.UserActioninterceptor-rel namemydefaultStack /interceptor-rel/action /package MethodFilterInterceptor对指定方法进行拦截 //java class demoInterceptor extents MethodFilterInterceptor{Overridepublic String doIntercept(ActionInvocation invocation) throws Exception{//拦截之前String result invocation.invokde();//拦截之后return result;} } //struts.xml package namedefault namespace/ extendsstruts-defaultinteroeptorsinterceptor namedemoInterceptor classpackage.demoInterceptor /intorceptor-stack namemydefaultStackinterceptor-rel namedemoInterceptor param nameexcludeMethodsexcludeFun/param/interceptor-relinterceptor-rel namedefaultStack /interceptor-rel/intorceptor-stack/interoeptors /package !--另一种方式-- package nameuser namespace/user extendsdefaultaction namelogin classpackage.UserActioninterceptor-rel namemydefaultStack param namedemoInterceptor.excludeMethodsexcludeFun/paramparam namedemoInterceptor.includeMethodsincludeFun/param/interceptor-rel/action /package PreResultListener 监听器 在返回结果集之前执行的方法 //java class BeforeResultInterceptor extents PreResultListener{public void beforeResult(ActionInvocation invocation,String str){//返回结果集之前执行} } class demoInterceptor extents MethodFilterInterceptor{Overridepublic String doIntercept(ActionInvocation invocation) throws Exception{invocation.addPreResultListener(new BeforeResultInterceptor());//拦截之前String result invocation.invokde();//拦截之后return result;} } 使用拦截器解决表单重复提交 //struts.xml interceptor-ref nametoken!-- 显示重复提交出错页面-- /interceptor-ref interceptor-ref nametokenSession!-- 显示重复提交成功页面但不执行重复提交动作-- /interceptor-ref result nameinvalid.token/tokenerror.jsp/result //jsp s:token/s:token  第十节、UI表单标签     第十一节、OtherTag和类型转换 第十二节、FileUpload组件 第十三节、页面圆形和Tiles布局 第十四节、数据建模和用例分析 第十五节、验证码以及权限管理 第十六节、分页 转载于:https://www.cnblogs.com/linzhenjie/p/3704674.html
http://www.hkea.cn/news/14472191/

相关文章:

  • 电子商务网站策划书3500字wordpress一键发布
  • 建设平面设计工作室网站方案门户设计模板
  • 安云自助建站系统源码商业网点是什么意思
  • 温州网站推广公司门户网站建站多少钱
  • 可以做qq空间背景音乐的网站零食加盟店10大品牌前三名
  • 昆山网站开发深圳做网站做app
  • 网站打赏怎么做的如何找网站制作
  • 做网站的费用计入哪个科目电影院可以寄存东西吗
  • 求做图的网站怎么做秒赞网站
  • 地方志网站群建设wordpress 创建数据库表
  • 专门做西装网站企业网站的优缺点
  • 在线咨询网站开发价格国外外包平台
  • seo优化网站模板外贸网站建设制作设计案例
  • 网站制作的销售对象重庆宣网站建设
  • 西固网站建设平台织梦模板大全
  • 现在流行的网站开发制作工具可视化建站源码
  • 台州市建设规划局网站6WordPress图片裁减
  • 装修网站怎么做的好wordpress自建模板
  • 中山三水网站建设万江区网站建设
  • winserver2008上用iis发布网站北京做公司网站的公司
  • 摄影网站开发的背景广饶网站制作
  • 网站建设与维护 技能宝塔wordpress 404配置
  • 网站制作前言公司织梦者网站模板
  • 郓城县网站建设合肥包河区最新消息
  • wordpress站内搜索统计代理备案 网站 安全吗
  • 营销平台网站建设本地wordpress站点上传文件
  • 建设部网标准下载网站做西班牙语网站
  • 网站站点怎么做淄博网络公司做网站的电话
  • 自己开网站怎么开谷歌在线浏览器免费入口
  • 网站建立需要多少钱php网站开发框架