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

高端网站创建有的网站打不开是什么原因呢

高端网站创建,有的网站打不开是什么原因呢,奔奔网站建设,坂田做网站建设好的网络公司文章目录Struts2 标签是干什么的Struts2 标签可以使用在哪里关于标签的属性常用的标签s:property调用方法s:iterator遍历Integer类型的Lists:selects:ifs:form自动填写表单项的值s:textfields:includes:submits:checkboxs:radios:action示例代码s:dates:url示例代码s:set示例代… 文章目录Struts2 标签是干什么的Struts2 标签可以使用在哪里关于标签的属性常用的标签s:property调用方法s:iterator遍历Integer类型的Lists:selects:ifs:form自动填写表单项的值s:textfields:includes:submits:checkboxs:radios:action示例代码s:dates:url示例代码s:set示例代码Struts2 标签的官方在线说明文档 https://struts.apache.org/tag-developers/tag-reference.htmlStruts2 标签是干什么的 Struts2 自己定义的标记库专门用于访问 ValueStack查看 ValueStack 中的内容。 使用 Struts 标签之前在 JSP 中需要添加相关的指令来导入标签库 % taglib uri/struts-tags prefixs %Struts2 标签可以使用在哪里 Struts2 标签都是结合 OGNL 表达式一起使用的。 Struts2 标签只能用于 JSP 文件中不可以在 XML 和 HTML 文件中使用。 Struts2 标签中不能使用 EL 表达式。 关于标签的属性 除了 Struts2 标记库自定义的属性其它所有 html 的属性都可以使用比如 name、value 等但是有 2 个属性名字做了改动 1.class 属性 在 Struts2 中为 cssClass 2.style 属性 在 Struts2 中位 cssStyle 常用的标签 s:property 该标签表示访问 ValueStack 获取指定属性的值并输出到页面中。 s:property valuename escapetrue default/value 该属性的值是 OGNL 表达式表示从 OGNL 表达式中取出数据 escape 表示 value 中从“name”取出的数据是否是转义的默认是转义的。 default 如果 OGNL 表达式中取不到值就显示 default 的值 该标签的底层是执行如下的代码 String name Ognl.getValue(name, context, root).toString(); out.print(name);OGNL 表达式中以 # 开头表示访问 ValueStack 中的 context 对象获取 name 属性值并输出到页面中。 s:property value#name/如果省略 value 属性则默认将 root 栈顶的第一个对象取出直接输出到页面中参考如下代码 % page importjava.util.* % % page contentTypetext/html;charsetUTF-8 languagejava % % taglib uri/struts-tags prefixs % html headtitleTitle/title /head body h2s:property/ /h2 /body /html访问 JSP 文件得到如下的结果 value 属性值中还可以进行字符串拼接 s:property valuename java /先从 ValueStack 对象中获取 name 的属性值然后和字符串“java”拼接最后输出到页面中。 value 属性值中可以调用方法 s:property valuearry[1].toUpperCase() /先从 ValueStack 对象中获取 arry 的属性值其实是一个字符串数组接着获取下标索引为 1 的元素接着调用该元素对象的 toUpperCase() 方法最后将结果值输出到页面中。 调用方法 % taglib prefixs uri/struts-tags % % page contentTypetext/html;charsetUTF-8 languagejava % html headtitleproperty标签/title /head bodyh2Struts2 Tag - 非UI标签 /h2 %--到ValueStack中的root区查找含有方法format的对象找到后调用对象的format方法。其中的参数date会被解析成去调用 对象的getDate方法将方法的返回值作为参数传入方法format中--% s:property valueformat(date,yyyy-MM-dd E) / /body /html s:iterator s:iterator valueprojects varpro“projects” 是 ognl 表达式底层是执行下面的代码来获取到对应的属性值 List projectList (List)Ognl.getValue(projects,root);// root是CompoundRoot对象其实就是一个集合对象数据的存取遵循“栈”规则OGNL 引擎从 root 的栈顶开始查找含有 projects 属性的对象找到后就不会继续往下查找然后调对象的 getProjects() 方法获取到对应的属性值其实就是一个集合对象。 接着开始遍历集合 projects循环取出集合中的元素。将取出的元素Project 对象压入 root 栈顶同时以 pro 为 key 值存放在 context 对象中这是 ValueStack 的另一个属性是 Map 结构那么要访问 context 中的这个元素ognl 表达式的格式为 #pro。不仅如此还会以 pro 为属性名将取出的元素绑定到 PageContex 对象中。 当取出集合中的第二个元素时会将之前压入 root 栈顶的对象先弹出再压入 root 的栈顶同时又以 pro 为 key 值将第二个元素存入 context 中那么之前的就会被覆盖掉。 这些数据状态可以通过 s:debug/ 标签来记录获知 我们一起来分析下面的标签语句 s:iterator statusstus valueprojects varpro s:property value#stus.count/ s:property valuename/ s:property value#pro.name/ ${pro.name} ${name} /s:iterator属性 status 用来指定一个状态对象该对象有以下的属性 index被遍历元素的下标 count统计遍历的次数 first是否为第一个元素 even偶数判断count是否偶数 odd奇数判断count是否奇数 modulus(n)方法 count 除以 n 后取余 其中的 status 属性就是用来指定状态对象的其值就是 ognl 表达式可以找到存储在 context 对象中的状态对象所以访问状态对象的相关属性需要加上 #例如#stus.count。 其中的 value 属性用来指定被遍历的集合对象其值就是 ognl 表达式通过该表达式可以获取到被遍历的集合对象实际是到 ValueStack 对象中的 root 对象中查找。 其中的 varpro表示迭代遍历的时候会以 pro 为绑定名将遍历出来的对象绑定到 PageContext 对象和 ValueStack 的 context 对象中。 其中的 s:property 标签的 value 属性值是 #stus.count表示到 ValueStack 对象中的 context 对象查找属性 stus找到后再获取 count 属性值标签 s:property/ 就是将最终获取到值输出到页面中。 其中的 s:property 标签的 value 属性值是 name表示到 ValueStack 对象中的 root 对象查找属性 name找到后获取 name 的值并输出到页面中。遍历处理的 Project 对象都会压入 root 栈顶所以可以到 root 对象中获取 Project 对象的 name 属性值。 其中的 s:property 标签的 value 属性值是 #pro.name表示到 ValueStack 对象中的 context 对象查找属性 pro找到后再获取 name 属性值标签 s:property/ 就是将最终获取到值输出到页面中。 其中的 ${pro.name} el 表达式是去 PageContext 对象中找到绑定名为 pro 的对象找到后获取该对象的 name 属性值并输出到页面中。 其中的 ${name} el 表达式是取 ValueStack 的 root 对象中查找 name 属性找到后将属性值输出到页面中。这个特性是因为 Struts2 对 el 表达式进行了改进才得以实现的。 s:iterator/ 标签对应于 jstl 的 c:forEach/ 标签。 s:iterator/ 标签的应用示例代码如下 s:iterator valueprojects varprojecttrtd${id}/tdtd${name}/tdtd${startDate}/tdtd${endDate}/td/tr /s:iteratorAction 对象有属性 projects这个属性值是一个集合对象从集合遍历出来的 project 对象会压入 ValueStack 的 root 对象中所以可以通过 el 表达式直接获取 project 对象的属性值。 上述的 el 表达式也可以替换成 s:property/ 标签如下所示 s:iterator valueprojects varprojecttrtds:property valueid//tdtds:property valuename//tdtds:property valuestartDate//tdtds:property valueendDate//td/tr /s:iterators:property/ 标签就是去访问 ValueStack 对象获取指定属性的值并输出到页面中。 c:forEach/ 标签的应用示例代码如下 c:forEach items${projects} varprojecttrtd${project.id}/tdtd${project.name}/tdtd${project.startDate}/tdtd${project.endDate}/td/tr /c:forEach遍历Integer类型的List label爱好/labels:iterator valuehobbies statusst%-- hobbies是一个Integer类型的List对象st代表的是一个状态对象其中的属性index存储着遍历到元素的下标索引值状态对象存储在ValueStack的context对象中所以获取状态对象需要在属性名称前面加上#--%s:property valuehobbies[#st.index]/,/s:iterators:select s:select listlist label选择城市 namecity value01 listKeyid listValuename headerKey-1 headerValue请选择... themesimple /s:select这个 Struts2 标签很有意思最后生成1个下拉选择框是根据 list 这个集合迭代生成各个 Option 对象这个 Option 对象的 value 属性值等于集合取出来的对象的 id 属性值Option 对象的 text 属性值等于集合取出来的对象的 name 属性值并且这个下拉选择框的头 1 个Option 对象的 value 属性值等于 headerKey 的值text 属性值等于 headerValue 的值。 属性 list 指定遍历的集合对象 属性 value 指定元素 select 默认提交的值 属性 label 指定显示的文本 属性 name 指定参数的名称 属性 listKey 对应每一个 option 提交的值即作用于 option 的属性 value 属性 listValue 对应每一个 option 的显示文本即作用于 option 的属性 text 属性 headerKey 提示头对应的提交值即作用于第一个 option 的属性 value 属性 headerValue 提示头的文字即作用于第一个 option 的属性 text 属性 theme 指定下拉选择框的显示样式如果其值为 simple则属性 label 的作用会失效 s:if 这个标签对应于 jstl 的 c:choose 标签。 Struts2 的 s:if/ 标签的使用示例 s:if testpage 1a hrefprojectlist.action?page${page-1}上一页/a /s:if s:else上一页 /s:else属性 test 的值是 ognl 表达式表达式 page 1 会先获取 page 的值然后和 1 进行比较成立则返回 truetesttrue 则会将 s:if/ 标签体的内容输出到页面中。如果 testfalse 则会将 s:else/ 标签体中的内容输出到页面中。 对应的 jstl 的 c:choose 标签的示例代码如下 c:choosec:when test${page gt 1}a hrefprojectlist.action?page${page-1}上一页/a/c:whenc:otherwise上一页/c:otherwise /c:chooses:form s:form actionlogin methodpost /s:form属性 action 的值会被完整显示即【虚拟目录命名空间action名称】并且名称后面会自动加后缀 .action。特别注意JSP 只有通过控制器转发action 的值才会自动完整显示如果你只是放在项目根目录下浏览器可以直接访问那么 action 的值你填写的是什么就显示什么。 最终会输出如下的 HTML 标签 form idlogin namelogin action/sp/login.action methodpost table classwwFormTable /table /form在 form/ 内会包含一个 table/ 所以这个标签都是结合 s:textfield、s:submit 等标签一起使用的。 自动填写表单项的值 s:form 标签可以自动将 Action 对象的属性填写到页面对应的表单项中不过密码是不被自动填写的。 s:textfield s:textfield label账户名称 nameuser.accountName/该标签都是结合标签 s:form/ 一起使用的该标签会自动从 ValueStack 的 root 对象中获取 user.accountName 的值然后赋值给 input/ 的属性 value。 最终会输出如下的 HTML 标签 tr td classtdLabel label foruser_accountName classlabel 账户名称: /label /td td classtdInput input typetext nameuser.accountName valueadmin iduser_accountName/ /td /trs:include 在当前页面中包含页面 select-language.jsp s:include valueselect-language.jsp/s:submit Struts2 的 submit 标签如果只定义了属性 key s:submit keysubmit/会输出下面的标签内容 tr td colspan2 div classformButton input typesubmit idlogin_submit namesubmit/ /div /td /trs:submit/ 的属性 key 的值只决定了生成的 HTML 标签的属性 name 的取值属性 type 的值由 Struts2 标签名称决定没有属性 value 默认显示“提交”。 s:submit/ 的属性 key 与生成的 HTML 标签的属性 name 对应。 注生成的 HTML 标签的属性 id 的值由表单 form/ 的属性 action 的值连接上标签自身属性 name 的值。 如果只定义了属性 name s:submit namesubmit/则会输出下面的HTML 标签 tr td colspan2 div classformButton input typesubmit valueSubmit idlogin_submit namesubmit/ /div /td /trs:submit/ 的属性 name 的值决定了生成的 HTML 标签的属性 value、name 的取值。 如果只定义了 value 属性 s:submit value提交/则会输出下面的 HTML 标签 tr td colspan2 div classformButton input typesubmit value提交 idlogin_0/ /div /td /trs:submit/ 的属性 value 的值只决定了生成的 HTML 标签的属性 value 的取值。 总结 s:submit/ 标签不适合设置属性 name 的值也不适合设置属性 key 的值因为提交按钮不应该有属性 name否则提交表单数据时会将提交按钮的 name 作为请求参数传递给服务端这样会出现问题。如下所示 另外属性 key 和属性 name 也不建议使用中文。 s:checkbox s:form action methodpost themexhtmls:iterator valuehobbiess:checkbox label%{label} namehobbies fieldValue%{value}//s:iterators:submit/ /s:form上面的hobbies 是一个 List 对象里面存储着 Hobby 对象Hobby 对象有两个属性分别是tabel和value。 %{label} 表示从ValueStack的属性root中获取属性label的值 %{value} 表示从ValueStack的属性root中获取属性value的值 如果List 对象改成 Map 对象应该这样获取键值对的值 s:iterator valueproductOptions s:checkbox label%{key} nameproduct fieldValue%{value} / /s:iteratorproductOptions 是一个 Map 对象 %{key} 表示获取Map的key %{value} 表示获取对应的value 猜想Struts2会将MapString,Integer对象转换成SetEntryString,Integer对象再遍历Set对象将内含的Entry对象置入到ValueStack的root对象中再分别取出key值和value值再赋值给checkbox对应的属性从而逐一输出对应的checkbox元素。 s:radio s:form actionbasic-information methodpost themexhtmls:radio listhobbies label爱好 namehobbylistValuelabel listKeyvalue /s:submit/ /s:formlist 属性 指定需要遍历的集合 listValue 属性 作用于每一个选项的提示One 、Two、Three listKey 属性 作用于每一个要提交的值1、2、3 listValue“label” 表示到ValueStack中的root对象获取属性label的值 listKey“value” 表示到ValueStack中的root对象获取属性value的值 上述的标签代码最后会生成如下的标准html代码 form idbasic-information namebasic-information action/st/basic-information.action methodposttable classwwFormTabletrtd classtdLabellabel forbasic-information_hobby classlabel爱好:/label/tdtdclasstdInputinput typeradio namehobby idbasic-information_hobby1 value1/labelforbasic-information_hobby1one/labelinput typeradio namehobby idbasic-information_hobby2 value2/labelforbasic-information_hobby2two/labelinput typeradio namehobby idbasic-information_hobby3 value3/labelforbasic-information_hobby3three/label/td/trtrtd colspan2div classformButtoninput typesubmit valueSubmit idbasic-information_0//div/td/tr/table /form页面显示效果如下 s:action s:action nameTwo_2 executeResulttrue vartwo/s:action/ 用来访问指定的 Action 组件。 name 指定 Action 的名称也就是 struts.xml 中标签 Action 的属性 name 的值。 executeResult 为 true 则表示会执行结果组件如果结果组件是一个页面那么该页面就会嵌入到标签 s:action/ 所在的页面中值为 false 则不会执行结果组件。 有时候我们需要在页面显示出 Action 取出的数据所以设置属性 executeResult“true” 有些时候我们会在页面调用 Action但是不需要数据显示出来设置为 false 即可。 var 指定 key 的名称上述示例中 var“two”表示将 Action 对象作为 valuetwo 作为 key 存储到 ValueStack 对象中的属性 context 中context 是 Map 的实例对象。 如果我们写了 varxxx属性就会把 Action 放入 ValueStack 中如果不写就不会放默认不放。 因为 Action 对象被存储到 context 中所以想要获取 Action 对象的属性的值假设 TwoAction 有个名为 two 的属性获取该属性的值可以这样写 s:property value#two.two /示例代码 struts.xml的配置内容如下 action name*_* classpriv.lwx.struts2.tag.web.{1}Actionresult namesuccess/WEB-INF/jsp/{2}.jsp/result/action!-- http://localhost:8080/st/3.action --action name3result namesuccessWEB-INF/jsp/3.jsp/result/action3.jsp 的源码如下 %page pageEncodingutf-8 % %taglib uri/struts-tags prefixs % html headtitle/title /head body h2Three /h2 s:action nameTwo_2 executeResulttrue / /body /html2.jsp 的源码如下 %page pageEncodingutf-8 % %taglib uri/struts-tags prefixs % html headtitle/title /head body h1two /h1 h2s:property valuetwo/ /h2 /body /html访问 http://localhost:8080/st/3.action可以得到下图所示的页面内容 上图的结果就是因为在 3.jsp 中访问了 TwoAction而 TwoAction 执行完后转发到 2.jsp因此最后的结果就是 2.jsp 嵌入到 3.jsp 中。 s:date % taglib prefixs uri/struts-tags % % page contentTypetext/html;charsetUTF-8 languagejava % html headtitledate标签/title /head bodyh2Struts2 Tag - 非UI标签 /h2 %--到ValueStack中的root区查找含有属性date的对象找到后调用对象的getDate方法获取属性date的值。 接着会去调用某个方法并将获取到的属性date的值和格式字符串yyyy-MM-dd E作为参数传入这个方法会将 日期按指定的格式拼接成一个字符串并返回该字符串。接着将该字符串作为参数调用out.print()从而将指定的 日期对象按指定的格式输出到页面中--% s:date namedate formatyyyy-MM-dd E/ /body /htmls:url s:url actionTwo_2 varurl includeParamsget/none/all value/ action会自动生成一个资源的请求路径/st/Two_2.action var则指定属性名将地址存储到 ValueStack 的属性 context 中 includeParams值可取 get/none/all。 值 all 表示自动将请求本页面的参数加于本 url 之后 值 none 表示没有此功能默认 值 get 表示仅 get 请求本页面的参数加于本 url 之后 value如何访问的不是 Action可以使用属性 value 指定请求地址。例如 s:url valuehttp://www.baidu.com varurl2/ a href${url2}click me/a示例代码 %page pageEncodingutf-8 % %taglib uri/struts-tags prefixs % html headtitleURL标签的演示/title /head body h2%--属性action会自动生成一个资源的请求路径而属性var则指定属性名将地址存储到ValueStack的属性context中--%s:url actionTwo_2 varurl/%--EL表达式可以访问ValueStack的属性context获取指定属性的值--%a href${url}click me/as:debug/ /h2 /body /htmls:set s:set var value scope / 从 ValueStack 中取出数据放入指定的范围中。 scope指定 4 个范围之一(pageContext、request、session、application) value指定 Ognl 表达式 var指定属性名 示例代码 %page pageEncodingutf-8 % %taglib uri/struts-tags prefixs % html headtitleURL标签的演示/title /head body h2%--属性action会自动生成一个资源的请求路径而属性var则指定属性名将地址存储到ValueStack的属性context中--%s:url actionTwo_2 varurl/%--EL表达式可以访问ValueStack的属性context获取指定属性的值--%a href${url}click me/ahr/%--从ValueStack中获取属性url的值并以属性名url1将其存储到pageContext中--%s:set varurl1 value#url scopepageContext/a href${url1}click me/a%-- s:debug/--% /h2 /body /html
http://wiki.neutronadmin.com/news/182339/

相关文章:

  • 找个男做那个视频网站好网站导航优化
  • 网站 续费网站建设主要工作内容
  • 南宁网站制作费用深圳网络推广服务是什么
  • 三门峡建设环境局网站什么网站可以做调察问卷
  • wordpress建外贸网站北京个人网站备案
  • 福建亨立建设集团有限公司网站怎么开发一个微信商城
  • 定制化网站一般价格绍兴seo推广公司
  • 沭阳网站设计中国石油大学网页设计与网站建设
  • 泊头市网站建设网站的功能
  • 廉江手机网站建设公司济南万速网站建设
  • 服务号不认证可做微网站吗深圳网站建设icxun
  • 网站建设的因素网站的优点和缺点
  • 天河区门户网站教育局板块郑州同济医院收费高吗
  • 网站建设个人工作总结福田欧曼行星
  • 那些网站可以做宣传wordpress退出代码
  • 企业网站建设太原网站建设儿童网站模板
  • 无锡企业自助建站系统多语言网站怎么实现
  • allintitle:湛江网站建设 seowordpress分类自定义文字
  • 个人注册一个小公司要多少钱张家港网站建设优化
  • 大庆做流产油城女子网站企业网站系统
  • 八亿wap建站网站优化seo培
  • 做视频网站 投入购物网站功能报价
  • 广西住房与建设厅网站首页跨境电商saas
  • 淮南市网站开发的方式电商平台项目商业计划书
  • 凡科免费建站wordpress注册
  • 网站查询关键词排名软件无锡 网站建设
  • 镇江企业网站湖南做网站 地址磐石网络
  • wordpress ip 改变重庆网站seo方法
  • 深圳网络营销十年乐云seo专家长沙百度首页优化
  • 新乡市建设路小学网站网站建设现状 数据