STUCTS LABLE ‘S BENEFIT
{LJ?Dragon}【注】Struts标签的三个好处
RELATED LINKS |
|||
0.UTF-8 有无BOM的区别 |
06. |
||
1.修改记事本编码默认 |
07.EasyUEFI简介 |
||
2.CAD安装问题 |
08. |
||
3.几款好用的播放器 |
09. |
||
4.win8 右下角水印问题 |
10.联想G40-30安装Win7 |
||
5.其它 |
................... |
LJ?Dragon |
1.<html:link>标签的三个好处:
使用<html:link action="/action"/>不用关心web应用程序的路径和ActionServlet的映射路径。
可以自动附加jsessionid参数进行url重写。
可以对参数信息进行url编码。 备注: <c:url>标准标签也有<html:link>标签的后两个作用。
实验步骤:
把ActionServlet的映射路径由*.do改为*.html,这时候需要修改前面案例中的jsp页面中的超链接,由这个错误引出<html:link>标签的讲解。
启动一个新浏览器访问第一个Action,查看<html:link>生成的超链接地址,刷新后再查看这个超链接地址,比较差异说明<html:link>标签的url重写功能。
在<html:link>的action属性值的路径后中直接加参数,但是不能对其中的中文字符进行url编码。
使用paramID和paramName等属性设置一个参数,可以完成中文参数的url编码。
使用name和property属性来设置多个参数。
演示完<html:link action="/action"/>标签后,记住把ActionServlet的映射路径改回为*.do,以后*.html与后面讲解的普通html页面打架。
为了体现<html:link>标签的url编码作用,可以用如下两段代码对比一下:
1.
- <a
href="${pageContext.request.contextPath}/RegUser.html?userid=LJDragon">注册</a><
2.
- <%
- //这个可以用<bean:define>标签替代
- request.setAttribute("xx","LJDragon");
- %>
链接
- <html:link
action="/RegUser"
paramId="username"
paramName="xx"
>注册</html:link>
通过读帮助文档来为<html:link>生成的超链接增加参数的另一种方式
- <%
- Date x = new Date();
- request.setAttribute("username",x);
- %>
(这里的脚本代码改成标签的方式来写,有哪些?好像只有<jsp:useBean>标准标签)
- <html:link
action="/regUser"
paramId="username"
paramName="username"
paramProperty="time">
2.全局forward与<logic:forward>标签
全局forward的配置与应用
增加一个全局forward配置,让其path属性指向index.jsp页面,说明action没有找到局部forward时,就会使用全局的forward,
只要将第一个action内部的forward名称改为这个全局的forward,就可以看到运行效果了。
在首页中使用<logic:forward>标签
在首页中使用<logic:redirect>标签
注意:由全局forward加在struts-config配置文件的最前面,引出了<struts-config>中的子元素是有顺序的附带讲解。
对于注册这个url地址,每次都要在浏览器中输入,很麻烦!
先在index.jsp页面中使用<logic:forward>标签转发过去,这时候需要配置全局forward,接着用<logic:redirect>标签重定向过去,
这时候不需要配置全局forward。
3.本阶段应注意的要点:
Action是单实例和线程不安全的,在Action最好不要有可读写的成员变量。(???structs2中Action是多线程多实例的)
struts-config.xml文件中的<action>元素的path属性中没有.do,原因是映射到struts的路径可以不是.do嘛!
struts-config.xml文件中的<action>元素的path属性必须以"/"开头,
forward中配置的jsp文件路径也必须以"/"开头,
总之,在web应用程序中记住路径总是以"/"开头,就错不了!
4.阶段目标与面试相关问题
(1)什么是MVC模式?
(2)说说你对struts的理解?
(3)独立用struts做一个注册程序(这一阶段只要做出基本骨架就行)
(4)怎样防止struts配置文件的膨胀?
(5)说说软件开发的流程
(6)说说你在struts项目中使用的是什么标签库?
(7)能区分ActionMapping与Action的区别吗?
(8)配置文件中的action元素中有哪几个属性必须设置
Struts框架查找出一个xx.do路径对应的Action.execute方法的线索。
答案:
第1题的答案:
MVC是module、view、controller的简写,module代表数据、view代表视图、controller代表控制器,
控制器接收和处理请求,产生数据,然后选择视图显示数据。
MVC的好处在于将处理业务的控制逻辑代码与显示视图的代码进行了分离,便于维护。
如果有可能,最后最好是再画一个图来描述下。
第2题的答案:
从actionservlet->到action开始讲,然后再是formbean,然后再是actionforward,最后是一些表现层的东东。
Struts是一个遵循MVC模式的WEB层框架, 说白了,它就是一个大大的Servlet.
这个Servlet 的名字叫ActionServlet.在web.xml 文件中把某一组请求映射给这个Servlet,通常使用(*.do的形式),也就是映射给了struts框架 .
当这个ActionServlet接收请求以后,它将把这个请求交给一个Action处理,不同的请求交给不同的Action处理,
一个请求路径到底对应哪个Action,这是在struts-config.xml中配置的.
struts-config.xml 的名称和路径可以在ActionServlet 的参数中进行配置,并且可以配置成多个文件,
以逗号分隔,这有很大好处,可以防止配置文件的膨胀。
ActionServlet把请求交给Action之前,会把请求参数封装成一个formbean,当formbean校验有问题时,就返回到错误提示的页面,
当没问题时,才传递给Action去处理。
Action处理后返回的结果视图用一个Actionforward对象表示,
actionforward对象通过struts-config.xml配置文件中的配置关联到某个jsp页面,
因为程序中使用的是在struts-config.xml配置文件为jsp页面设置的逻辑名,这样可以实现action程序代码与返回的jsp页面名称的解耦。
此外,Struts中提供了国际化支持和一些非常方便的标签,使得一些页面开发任务得到了简化。
第4题答案:
查看ActionServlet类的帮助文档,可以看到其配置文件可以是逗号分隔的多个文件。
看struts帮助文档中的controller component这一节,可以看到struts配置文件中可以使用*(wildcards)通配符。
第6题的答案:
主要用jstl标签,有时候也用一些struts自己的标签,为什么呢?
因为jstl是标准,更通用,形成了用jstl标签库的习惯,但struts标签是紧密与struts框架紧密绑定在一起的,它能充分利用struts的特性,
有时候可以为我们带来方便,例如,上面的程序不用<html:link>而是直接写或用jstl标签,
就感觉到这一点了。这样的标签在JSTL中没有相对应的标签可用。
第7题的部分答案:
一个ActionMapping对象对应struts-config.xml文件中的一个<action>元素的配置信息,
读ActionMapping类的API帮助文档,通过各个setter/getter方法,即可了解<action>元素的各个属性的意义。
例如,通过帮助文档即可知道<action>元素的unknown属性的作用,设置默认的Action。
查看ActionMapping的方法列表和配置属性的对应关系,并在程序中打印出相应的配置信息,从而透彻地了解ActionMapping的功能。
第9题:
xx.do--><action>元素的path属性-->action元素的type属性-->Action的Java类-->exectue方法。
Reference
【1】原文 zhchzh1000:http://blog.csdn.net/zhchzh1000/article/details/4602478
STUCTS LABLE ‘S BENEFIT的更多相关文章
- ASP中Lable控件的定位问题
问题:Lable控件的定位问题:找了好久都没找到可以将Lable控件定位的办法,网上说可以将修改position这个属性来实现定位,可是我始终没找到这个属性. (1)首先,在源代码中添加 style ...
- HTML5基础之textarea 和lable
HTML基础:表单<form/>中文本域textarea 和lable <textarea rows="行数" cols="列数">文本 ...
- Html-Css标签lable中定义宽度需要其他的支持
lable的标签如果定义了width,如果要使起生效,则需要定义display width: 130px; display: inline-block;
- UVa 11889 Benefit(数论)
题目链接: 传送门 Benefit Time Limit: 5000MS Memory Limit: 32768 KB Description Recently Yaghoub is play ...
- 全局修改Lable/Button字体
本次版本需求要把原来的字体全改掉,由于项目中有的是代码创建的,有的是XIB中直接改的,一个一个改工作量太大,使用运行时可以很轻松的实现 首先,项目中大多数设置字体的控件有 Lable, ...
- lable自动适配大小
#import "ViewController.h" @interface ViewController () @end @implementation ViewControlle ...
- 设置lable文本内容的行间距
NSMutableParagraphStyle *paragraphStyle =[ [NSMutableParagraphStyle alloc] init]; paragraphStyle.lin ...
- Kinetic使用注意点--lable
new Lable(config) 参数: config:包含所有配置项的对象. { x: "横坐标", y: "纵坐标", width: "宽度&q ...
- 设置lable内容不上下居中
转载自:http://dong-zsh.github.io/2015/10/14/%E8%AE%BE%E7%BD%AElable%E5%86%85%E5%AE%B9%E4%B8%8D%E4%B8%8A ...
随机推荐
- JSP标准标签库的安装以及自定义标签的创建
JSTL 库安装 Apache Tomcat安装JSTL 库步骤如下: 从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip). 官方下载 ...
- 注解SpringMVC
<!--注解映射器 --> <bean class="org.springframework.web.servlet.mvc.method.annotation.Reque ...
- javascript——归并方法
<script type="text/javascript"> //ECMAScript5 还新增了2个归并数组的方法:reduce()和reduceRight(). ...
- 《Python 二三事》——python学习必看(转载)
面向初学者介绍Python相关的一些工具,以及可能遇到的常见问题. 原文出处 原文作者:八八年出生的男性,互联网上常用id是 jagttt .目前正从事 IT 行业的工作.业余爱好是动漫游加电 ...
- tab选项卡-jQuery
上次用原生的js写了个tab选项卡 这次按照一样的思路用jQuery写了一个 ,直接看代码: /*布局*/ <div id="div1"> <input cl ...
- Mvvm绑定datagrid或listview的selectItems的方法[转]
单选,很简单,将SelectedItem与ViewModel的属性进行双向绑定就OK了 多选,由于ListView的SelectedItems不能进行绑定,需要将ListView的SelectionC ...
- macOS 自动修改mac地址脚本
介于 某公众号提供了通过修改mac地址来链接BUPT_mobile 的推送,上网上查了一下咋写脚本,实现一键修改mac地址的功能 网上有自动修改mac地址的程序,但是很坑爹的要收费,所以不如自力更生写 ...
- NSDictionary 使用总结
NSDictionary使用小结 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @ ...
- python学习的一些感悟
首先声明,这里用到的库是在coursera上学习时,老师建立的一个库 #timer import simplegui import random # global state message = &q ...
- 从linux内核中学到的编程技巧 【转】
从linux内核中学到的编程技巧 分类: LINUX 1构建泛型宏 (./linux/include/linux/kernel.h) #define min(x, y) ({ \ typeof(x ...