关于 java web 开发 问题 总结1


、、、、、、、、、、、、、、实在不行了,打开任务管理器,结束myeclipse。 tomcat吧,重新启动!!


1.SQLite是一个广泛使用的数据库,但Hibernate并不能很好的支持它。Hibernate结合SQLite使用很不方便,
Hibernate-Sqlite 正是为了解决此问题,它能够帮助你利用Hibernate+SQLite进行快速开发。

2.OGNL,全称为Object-Graph Navigation Language,它是一个功能强大的表达式语言,用来获取和设置Java对象的属性,
它旨在提供一个更高的更抽象的层次来对Java对象图进行导航。

3.struts 配置注意:
1.可能Myeclipse 中已经提供了相应包,再次加入 将会出错
2.Myeclise tomcat 如果部署多个web程序,启动时所用工程的错误都会集中在一起,因此最好,编写时只部署一个项目
3.现在Struts 2 标签不需要在web.xml 文件中指定 .tld 文件了,只需要 builder path中加入 struts-tagxxx.jar 包
并在jsp 文件中<%@taglib prefix="s" uri="/struts-tags" %>

4.tld文件 taglib description 标签库描述文件
tag标签的配置文件,假如你写了个tag名叫 public class testTag extends TagSupport{
//your code
}
之后你在tld文件里配置一下
<tag>
.......
</tag>
<tag>
之后在你的jsp文件用<@taglib> 指令引用就行了 就可以调用了

5.struts.xml 在src 下建立。工程会自动将其拷贝在 WEB-INF/classes 文件夹中


6.引用 jquery ui 库 (直接看网上demo 代码 就可以推敲出需要什么了)
<script src="./xx/jquery-1.9.1.js"></script> ///jquery 库
<script src="./xx/jquery-ui-1.10.1.custom.js"></script> ///jquery ui 库 也可以一个个控件加入jquery.ui.xxxx.js
<link rel="stylesheet" href="./ui/base/jquery-ui.css" /> ///默认主题
<link rel="stylesheet" href="./xx/jquery-ui-1.10.1.custom.css" />
///引用css样式 (这是一种主题!!可以网上专门下主题包含了所用已经设计好了的主题!注意要将主题的资源也拷贝到工程中)


7.jquery-1.4.2.js里的代码是没有进行处理的原代码,适合于人们阅读与研究.
jquery-1.4.2.min.js里的代码进行过特殊的处理,如变量的名称基本都写成一个字母,而且格式缩进都被删除了.
所以文件容量比较小(min),一般在网页中调用这个文件.
可以看作:jquery-1.4.2.min.js是jquery-1.4.2.js的编译版本
所在得出结论是jquery-1.4.2.min.js是小,而query-1.4.2.js才是好看的。

8.虽然struts 2 很方便 但是它的布局简直让人 恶心。。 theme="simple" 可以消除 form 自定义布局
要想让他显示再你想要的位置,将theme="simple",然后在每个表单后面写<s:fielderror><s:param>fieldname</s:param></fielderror>


9.关于 java web 中 引用资源的 一点 和 两点 要注意 区分!! ./ 当前目录 ../上一目录 /根目录 (在程序中尽量使用相对路径)

10.DOM事件模型默认的是冒泡型事件流。。。
当在某一个元素上触发某个事件时,该事件会冒泡向上传递,也就是它的父节点会触发同样的事件,
父父节点也会触发相同的事件一直到跟元素。。
f1嵌套f2 f2 嵌套f3,根据它们的嵌套关系,当鼠标进入f3时,会依次触发f3,f2,f1的mouseover事件,
当鼠标离开f3时,同样会依次触发f3,f2,f1的mouseout事件,也就是事件永远是从里向外传递的。。
那么,当鼠标从f3进入f2时,会依次触发f3,f2,f1的mouseout事件,再依次触发f2,f1的mouseover事件。。。
至于楼主问的如何判别离开f1区域,当鼠标从f1移到整个区域外,算是离开,这时只会触发f1的mouseover事件,
因为它的父元素没有任何mouseover事件函数了。。
当鼠标从f1移到f2中,也算是离开f1,这时,会触发f1的mouseout事件,然后会依次触发f2,f1的mouseover事件(记得是事件是冒泡的)..
最后我意外发现一个技巧 if(event.relatedTarget.name === undefined)...说明在最外面了!!!
但是最后发现 jquery 中的有相应的函数 提供这个操作, jquery 很方便的!!!


11.子元素 浮动后 不在父中的解决方法
<div>
<div style="float:left;">test</div>
</div>
这样往往使得父级DIV没有高度,一般我们可以通过以下几种方法使得父级DIV也有高度:
1、给父级DIV也加上float(这样所用子元素都有了浮动效果);
2、给父级DIV加上height;
3、在子级DIV后面加上<div style="clear:both;"></div>,(在浮动元素的最后添加 这样比较冗余)即清除左右两边的浮动。


12.。如果要访问action获得数据的话,获得完数据你的jsp肯定要被重新刷新的。
要么在jsp加载前访问action拿好数据,要么用ajax,在显示数据的地方动态load数据。
ServletActionContext.getRequest().setAttribute("data", list);
ServletActionContext.getRequest().getSession().setAttribute("data2", "this is data2");
ActionContext.getContext().getSession().put("data3", "this is data3");
1、如果你是要向action提交数据,那么可以把数据都放到一个form里,然后用js提交form到你指定的action
2、如果你要通过js 从 action获取一些数据,那么可以通过ajax的方式调用action,获取到action的返回值,
建议使用jquery的get或者post方法去调用,代码很简单


13. String path = request.getContextPath(); 获得的路径是 /WebAppName
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+ "/";
http ://christopher-pc : 8080 /WebAppName /

14.一般不要使用 basePath,它是绝对路径!!(因为这样会影响到jqueryui等库文件中的对相对路径下文件的引用!!)
web目录 不要依赖index.jsp!!不要将页面直接放在WebRoot目录下!
当你一个登陆界面提交信息给action之后,action发现登陆不成功,那么应该返回到这个登陆界面
看看这个时候URL变成什么样了!URL由于调用action 变成了/webapp/namespace/someAction.action 了!!!
那么这个时候返回来的登陆界面可引用不到它曾经可以引用到js 或者 css 了!!
解决方案是 ,将jsp 页面放在 webRoot/namespace 文件夹下 适应这种变化!!!!!!!!
登陆成功的页面可以放在webRoot/WEB-INFO 文件夹下。这样不会由于页面跳转,URL混乱变化!!

15.validate框架无效
1. 命名是否符合约定:
<actionClass>-validation.xml
<actionClass>-<actionAlias>-validation.xml
2. validation.xml的标签是否正确,比如是否关闭所有标签,是否多一个关闭标签等。注意:这方面错误没有任何提示, 只是验证不起作用。
3. fieldName 命名是否和jsp以及 action中的属性一致 如:
action中有userName 属性,
jsp 中有标签:<s:textfield name="userName"/>
validation.xml中需有:<field name="userName">...</field>
上述的三个userName一定要一致。
4.检查是否在同一个field里面配置了重复的参数,重复的参数也可能会使你的信息显示不出来
5.要记得验证框架所产生的错误信息被是写入到了fielderror里面去了,所以在需要显示错误信息的页面要用
<s:fielderror cssStyle="FONT-WEIGHT: bold;color:yellow;font-size:14px;"></s:fielderror>标签
不能用<s:actionerror/> 它是action 设置的addActionError("。。。")
6.注意客户端信息:: <message>${getText("userName.required")}</message> !!!!!
7.应该在Myeclipse 中编写 该配置文件,在外部容易出错!!
8.关于警告:log4j:WARN No appenders could be found for logger
(com.opensymphony.xwork2.config.providers.XmlConfigurationProvider).这时 应该在src文件夹下加入 log4j.xml
(否者加载不了validator.jar 等一些库!!)
9.如果s:form theme 属性改为了 simple了,那么不能够在相应位置显示 校验信息必须使用 <s:filerror>标签显示信息。

16.向action提交 并 获得 数据 数据
向服务器提交数据常见的两种方式是get和post,get方式一般会在url后面把参数带上,像“http://127.0.0.1:8080/struts2test/database/datatest.action?id=5&name=jine”这样的形式。而post则一般不会在url后面带参数,并且一般来说post中的参数是在form中间。如:
<form action="<%=request.getContextPath()%>/test.action" method="post">
id:<input type="text" name="id"/>
name:<input type="text" name="name"/>
<input type="submit" value="发送"/>
</form>
这里并不想讨论二者的优劣,应该说两者都是优点缺点并存的,否则另外一个就完全没有存在的必要了,不过做web开发的时候经常会遇到中文乱码问题,这个问题一般是在用get方式提交数据时出现的,用post则一般可以避免中文乱码问题。我起初做开发的时候就遇到这种问题,于是我就想有没有什么办法能在点击某个超链接的时候将参数以post方式传到服务器呢?答案是肯定的,使用javascript就可以完成任务。

1.javascript 中通过 doucument form 提交数据 这种方法,只能够提交数据,不能够获得返回数据。。
想想看,你的回调函数呢?我怎么知道action 处理完了。?必须使用ajax技术 才能双方交互!!
<script type="text/javascript">
function postwith(to, p) {
var myForm = document.createElement_x("form");
myForm.method = "post";
myForm.action = to;
for ( var k in p) {
var myInput = document.createElement_x("input");
myInput.setAttribute("name", k);
myInput.setAttribute("value", p[k]);
myForm.appendChild(myInput);
}
document.body.appendChild(myForm);
myForm.submit();
document.body.removeChild(myForm);
}
</script>
超链接的代码:
<a href="javascript:postwith('datatest.action',{'currentPage':'2','xisuo':'计算机'})">use js to post</a>
点击超链接后可以将currentPage、xisuo的值以post的形式发送到datatest.action进行处理,特别是在处理多个参数的时候显得非常方便。

2.用ajax 创建 XMLHttpRequest 对象 send post 发送数据,并接收! 如果使用servlet 不用说,直接使用response getWriter 然后write
即可,但是使用Strut2 框架的action 不能如此,必须配置action 的result 为
<result type="stream"> stream形式 (一般用于文件传输)
<param name="contentType">text/html</param>
<param name="inputName">inputStream</param> 这个代表装载客户端访问数据的 action中的一个属性!!!
</result>
///客户端代码如下!!!
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
document.getElementById("test").innerHTML=xmlhttp.responseText;
alert(xmlhttp.responseText);
}
};
xmlhttp.open("GET","requestAction.action",true);
xmlhttp.send(n);

3.使用jquery 类库 $(selector).load(URL,data,callback); 或者 get post 函数 都可以
action result 指定为 json!!
$.ajax({
url : "requestAction.action",
data : {
roomId:n 这里 会直接 将action 中的 roomId 属性 设置成 n!!
},
dataType :"text", ///指定返回数据的数据格式。一般是json
type : "GET",
success : function(data){
alert(data);
}
});

17.web项目 jar包放lib下和直接在工程上build path引入有啥区别?
放到build path 下面只是编译时需要。 要运行肯定得放在lib下面
build path:可以说是引用;
WEB-INFO/lib:可以说是固定在一个地方;
eclipse编译项目的时候是根据build path的,如果不用eclipse来发布项目的话,就会出现找不到jar,tomcat运行项目首先是在它自己的公共lib里找jar,
如果找不到的话就会去项目的WEB-INFO/lib目录找,如果找不到就报错。

build path引用的jar可以引用lib下的jar,也可以引用硬盘上任何可以访问位置上的jar,但是,我推荐把需要的jar都放到lib下,
这样一旦发生jar包冲突、缺失的问题,我们可以直接到lib下查看,如果放到其它位置,检查起来则相对麻烦。

放到lib下也是一个好习惯,引用其它位置的jar【通常某些同学喜欢用myeclipse自动添加对struts、spring、hibernate的支持】,
使用这种方式,很容易造成jar包冲突、缺失的问题,尤其是团队协作的情况下,如果你引用了本地硬盘上的某个jar,
提交了.classpath文件到svn,别人检出后,就会报错,因为他的硬盘上的同一位置没有这个jar,而如果你放到lib下,
再提交,检出后他的lib下是有这个jar的,因为lib是工程的一部分。

18.客户端 有JSON 库 可以将数据转换成json字符串,这样便解决了java 对象的传递,在js端,可以使用 eval 函数将字符串转为对象操作!
如果数据是 {} 包含的 应当 在两边加上 () 才可以转换!


19.form 表单 和 table 结合 布局,异常工整!!!

20.js 文件被应用到 jsp 文件中出现 乱码,是因为(js文件使用的编码和jsp指定的编码不同,
因此浏览器解析js文件时,不能按照它自身编码来解析产生了乱码!
解决方案便是 <script>中指定charset="js的编码")或者将js 另存为UTF-8 格式。<script >指定 charset="utf-8"即可!!!
myeclipse 中 preference--general---content types 即可设置文件的默认编码!!



21.No configuration found for the specified action: 'request.action' in namespace: '/main'.
Form action defaulting to 'action' attribute's literal value
产生该消息的原因是 :一旦进入jsp 便会对 form 表单的action 属性进行检查,如果action对应值,不在struts.xml 中便会提示
记住不能加 .action

22.知道吗?由于jquery 的效果,拦截了submit点击事件,导致了。s:from 不能提交!!这个问题困扰了 我十多个小时!
因此如果你真想认真测试 那么后台一定要干净!!!!!不要加些有的 没的东西进去!!!!


23.对于多方法的Action 不能让 验证文件对每个执行函数都进行验证!!
为了能试用验证文件validator 必须在 Struts.xml配置 每个方法的action别名
<action name="Login" class="action.MyAction" method="login">
<result>/Success.jsp</result>
</action>

对于方法login的验证文件就应该这样取名字
MyAction-Login-validation.xml
即是 <类名>-<别名>-validation.xml

24.ModelDriven 的校验!!
private UserPsw userPsw = new UserPsw(); ///必须要在这里new ,框架是不会帮你建立对象的,它只会调用对象的set方法!!
@Override 如果 没有new 后果便是 NULLPOint 异常!!!!
public UserPsw getModel()
{
return userPsw;
}
验证文件ModelDriven的时候 直接使用Model的属性为字段名
写成 username 不用 user.username

属性驱动模型下在JSP中访问属性时: <s:property value="username">
而在模型驱动模型下在JSP中访问属性时: <s:property value ="model.usename">
但是,Struts2会自动识别使用何种驱动模式,省略model.系统自动会关联到model.username的属性值。

25.actionSuport 类实现了ValidationAware接口。该接口提供了各种操作 filedError 以及 actionMessage 的方法。
校验还是使用validation 方法 或者 validateXxx 方法对action中特定方法校验 。。
其实使用框架校验 和使用 函数校验一样的简单!!视情况定了!!


26.No result defined for action com.hotel.mainaction.RequestAction and result input
表单提交 错误,校验,转换等错误 必然导致 return input ,不会进入方法执行!因此如果没有定义input 的result 必然导致异常!!


27.jquery 可以操作 html 标签 甚至是struts2 标签。 这里有个技巧。如果不知道怎么操作哪个属性。
那么在浏览器中 打开---审查元素,我们仔细观察,浏览器是怎么解析这个标签的!知道了,便可操作!!!



28.用户登录了 跳转到 action 验证,再跳到main页面,如果用户直接在地址栏上输入 main页面地址,难道就让它显示吗???
绝不能这样,这个时候session 便起作用了。在验证用户登录后,我们可以保存一个值在session 中,home 页面应该加一句
判断,如果是登录成功了的 可以正常显示,否者应该跳转到登录界面让用户登陆。。
<%UserPsw user=(UserPsw)session.getAttribute("user");
if(user==null)
{%>
<jsp:forward page="../main/login.jsp"/>
<%} %>

根据我的测试发现,ActionContext 的session 不是保存在 服务端的,当整个浏览器关闭后,session 在该浏览器中消失!

29.使用dojo 客户端ajax框架Struts2的标签(无论是dojo或非dojo)均需要freeMarker模板文件*.ftl进行渲染和解释以生成Html页面,
dojo或非dojo的标签库均配备一套自己的模板文件库,在jsp页面里,struts2根据各标签的theme来查找自己配置的相应模板文件*.ftl,
若theme设置不对,则struts2就会从相应路径中找不到需要的ftl文件,就会报错../*.ftl not found.

曾经 core jar 中有ajax的template,可以在 from中设置 theme="ajax" 但是现在不行了,高版本将其分离为struts2-dojo-plugoin.jar
自成框架,并且该框架不再支持form 的 theme!!你可以打开该jar包的 template 看!!没有from.ftl lable.ftl 了!!有的是
div.ftl...你也可在程序中 使用 xx: alt+/ 提示消息 不会有 form的 只有 div 等支持的标签!!
你要理解这句话<%@ taglib prefix="sd" uri="/struts-dojo-tags"%> 这是引用标签库!! 其中的 sd 爱怎么取就怎么取!!
<sd:head />它生成了对AJAX框架dojo的配置文件的引用或代码,可动态的增加和修改<head></head>内的信息



30.org.apache.jasper.JasperException: Unable to load class for JSP
代表什么呢?就是你jsp 写错了!里面有不可解析的内容(注意,不要把注释内容写到了标签属性里面!!就是这个错!!)

31.如今S:form 的默认主题已经不支持 客户端校验了 ,因此单单写个 validate="true"将会出错,是因为这种主题找不到搭配的校验器了
而支持客服端校验的主题便是xhtml!!!

32.要善于使用 javadoc 如果信息过多,这个是个好帮手!!注释设置 书签 // TODO 多么方便

33.sqlite 数据库 列名不分大小写,可以将数据设置为null,
但是一般从中读取数据,如果是int null将会读成0!因此0 和null 要引起注意


34.Calendar 月份的下标是从0开始的,想要正常习惯显示必须加一,在设置moth 时,必须必当前月数小一!!
calendar构建时,可以指定时区 TimeZone(中国为GMT+8:00) 以及当地的星期语言环境 Locale(中国为Locale.CHINA)
getActualMaximum(Calendar.DAY_OF_YEAR) 可以计算出某年的总天数!! 会自动区分 闰年366!!
另外在设置一天的时间,应当用 HOUR_OF_DAY 而不是HOUR 千万不能混淆

35. Struts2 框架的客户端是要刷新的!!验证失败后将会产生input ,定位到指定的web资源上!
我还以为不会刷新,总结,必须用ajax 校验的地方还是使用 js 脚本校验吧,自己写灵活可靠,struts 框架只适合,服务端校验

36.jquery 的真谛!!var obj = $("selector") ; 其实就是将html 选中,然后$()将其封装成对象,然后 jquery库提供某些函数接口
通过这些接口便可以改变 html 的属性了!! $(); 就像是构造函数一样!!
其实和document 对象一样,只是jquery 封装得更 彻底,功能更多!用document 何不用jquery?
一般 input 的 value 不能通过 attr("value") 获取 有个专门的 val() ,可以直接获取

37.表单中 disabled = "true" 和 readOnly ="true" 最大区别是前者不能够提交到服务器,后者 可以!

38.关于javaScript正则表达式:/^....$/ ^代表开始 $代表结尾 ,如果单纯写 /..../ 他们区别是很大的。
前者闭合 调用test(str) 会判断端 str整个字符串是否为 ....指定的形式,而/.../调用test(str)只是判断str是否包含....样式的子串!

39.<s:property value="roomPriceList.get(#item.roomType-1).description"> 看看struts 框架 有多强大了。可以这样操作集合!!!
<s:property value="roomPriceList.{? #this.id == #item.roomType}.get(0).description"> !!!!这样也可以
<td><s:textfield name ="order.id" ></s:textfield></td> 这样可以将 服务端的 order的id 属性设为 input的值!!!
这样看来,jquery 的ajax 技术 在 强大的 sx:submit 面前只是小儿科了!!!



40. 写代码 要一块一块的,不要挤在一起,myeclipse的折叠功能,如果把两块代码 分开很远就不会连在一起很混乱了


41.表单重复提交。如果submit 连续点击两次 将会两次提交表单,这是个很严重的问题。 。。应当在提交校验时设置 flag !!


42. java script 操作页面跳转。
struts 页面跳转 href = "someAction!somefunction.action?collection=1&collection=2" (会将参数自动转换为集合类型的元素!)
<a οnclick="window.open('../main/balanceDetail.jsp')">打开新窗口!!</a>

第一种:
<script language="javascript" type="text/javascript">
window.location.href="login.jsp?backurl="+window.location.href;
</script>

第二种:
<script language="javascript">
alert("返回");
window.history.back(-1);
</script>

第三种:
<script language="javascript">
window.navigate("top.jsp");
</script>

第四种:
<script language="JavaScript">
self.location='top.htm';
</script>

第五种:
<script language="javascript">
alert("非法访问!");
top.location='xx.jsp';
</script>


43. result Type 浅析
dispatcher 为默认跳转类型,用于返回一个视图资源(如:jsp)
Xml代码 :

<result name="success">/main.jsp</result>
<result name="success">/main.jsp</result>
以上写法使用了两个默认,其完整的写法为:
<result name="success" type="dispatcher">
<param name="location">/maini.jsp</param>
</result>

用于页面转发,页面跳转过程一直是同一个线程,Action中的数据一直保存在。
location只能是页面,不能是另一个action(可用type="chain"解决)。

 

redirect 类型用于重定向到一个页面,另一个action或一个网址。
Xml代码:

<result name="success" type="redirect">aaa.jsp</result>
<result name="success" type="redirect">bbb.action</result>
<result name="success" type="redirect">www.baidu.com</result>

缺点:redirect把一个http返回码(SUCCESS)以及返回的页面位置一起重新发给web服务器,容纳后由web服务器产生一个新的HTTP请求,就会产生一个新的线程,保存在原来Action执行的线程中的数据就无法访问。
所以,result需要包含Action的数据,那么redirect不是一个可行的办法。因为新的HTTP请求时在Servlet容器的新的线程中处理的,ActionContext中的所有状态都不会存在。

处理方法:

(方法一):
<result name="topic" type="redirect">/topicAction!findTopics.do?topicId=${topicId}</result>
(方法二):
<result name="topic" type="redirect-action">
<param name="actionName">findTopics</param>
<param name="topicId">${topicId}</param>
</result>

 

redirect-action 结果类型使用ActionMapperFactory提供的ActionMapper来重定向请求到另外一个action
Xml代码:

<result name="err" type="redirect-action">
<param name="actionName">重定向的Action名</param>
<param name="namespace">重定向Action所在的名字空间</param>
</result>
redirect和redirect-action两种结果类型在使用上其实并没有什么区别,只是写法不同而已。

 

chain 用于把相关的几个action连接起来,共同完成一个功能。
Xml代码:

<action name="step1" class="test.Step1Action">
<result name="success" type="chain">step2.action</result>
</action>
<action name="step2" class="test.Step2Action">
<result name="success">finish.jsp</result>
</action>
处于chain中的action属于同一个http请求,共享一个ActionContext


plaintextj 结果类型用于直接在页面上显示源代码

Xml代码:

<result name="err" type="plaintext">
<param name="location">具体的位置</param>
<param name="charSet">字符规范(如GBK)</param>
</result>


44。仿佛有这样的 结论:如果使用jquery 效果,如果js文件太庞大,在网页加载时会有段时间产生 jquery 效果执行慢的难看界面
解决方案是,将jquery 效果 写在专门一个js 文件中,并将对应的<script>放在最前面 就好了


45. <s:form> 和 <table> 嵌套,如果 <table>在外面了,居然submit 提交不起!!必须要指定formId。。
并且,js动态加入的input 不能随表单提交!!太影响士气了



46. 4个对象的区别
1.request对象

客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。

2.session对象

session对象指的是客户端与服务器的一次会话,从客户连到服务器的一个WebApplication开始,直到客户端与服务器断开连接为止。它是HttpSession类的实例

3.pageContext对象

pageContext对象提供了对JSP页面内所有的对象及名字空间的访问,也就是说他可以访问到本页所在的SESSION,也可以取本页面所在的application的某一属性值,他相当于页面中所有功能的集大成者,它的本 类名也叫pageContext。

4.page对象

page对象就是指向当前JSP页面本身,有点象类中的this指针,它是java.lang.Object类的实例

这些都是jsp的内置对象,通过这些对象能够做到同服务器端
的交互,从而实现程序的流程。这几个对象存在的生命周期和作用域都不相同:
application存在的时间最长,只要服务器没有关闭,就一直
其次是session>request>page

47.如果打开网页没有 涉及到 表单,那么 刷新不会提示 重复提交订单的对话框,如果修改了form 浏览器cookie中记住了,刷新网页时便会提示


48.tomcat 的 work 文件夹下有 jsp 生成的 .java 和 .class 文件,,注意 include指令 和 jsp:include 的区别
include指令: 引入静态文本(html,jsp),在JSP页面被转化成servlet之前和它融和到一起. (只会产生包含者的java 和 class 文件)
jsp:include 标签,引入执行页面或servlet所生成的应答文本. (被包含者,以及包含者分别产生 java 和 class 文件)
<jsp:forward > 跳转之前,不能有out.print以及include指令。 否者 Attempt to clear a buffer that's already been flushed 异常
因此 forward 标签应当尽量放在前面

49.js 可以访问 非当前文件中的 变量。。也就是说<script />标签只是将 js 文件 原封不动复制到 jsp 文件中。。。


50.如果使用 include 指令包含另外一个jsp 并且都两个页面中都有sx 申明,<sx:head parseContent="true"/>
提交表单使用 sx:submit 那么表单对应的 οnsubmit="return someFunction()" 将会执行两次
看官网 :If you are planning to nest tags from the Dojo plugin, make sure you set parseContent="false", otherwise each request made by the inner tags will be performed twice.

dojo notifytopic 执行一次 。等情况都是 parseContent 造成的。。


51.dreamweaver 中编写 网页,注意 实时代码时不能修改代码,非实时视图时 不会执行js
实时。就是即时预览,一般情况像FLASH等是在预览窗口不会播放的,但是实时就像浏览器上一样,会播放这些视频等,
你可以将实时预览理解为一个可以任意编辑内容的浏览器

52. 区分 setTimeOut setInterval 函数,注意 执行他们的参数 应该 加引号,多看看 w3school 代码!!

53.dreamweaver 中 --代码片段,其中包含了很多 已经写好了的 js 函数,点击就可以直接插入

54.dreamweaver 中 不能运行jsp,运行jsp 必须要有相应环境,将其转换为 .java 编译成.class 才行,
显然dreamweaver 只是能够显示静态网页,如果要强行显示动态页面,后果就是将其当成 txt显示 ,那么要考虑使用tomcat了!!
只是简单的在 tomcat webapps文件夹中建立 一个临时站点 ,将 什么 .jsp文件 啊 .js文件啊 放在 里面就好了。
浏览器预览的时候 当然要写成localhost:8080/tempSite/some.jsp 即可访问!!!
虽然如此,dreamweaver中不能所见即所得 jsp 页面内容,看来jsp页面还是在 myeclipse 中开发较好。
dreamweaver 只是适合编写静态网页!!!

55.如今来理解 什么是动态网页。
所谓动态网页是指网页文件里包含了程序代码,通过后台数据库与Web服务器的信息交互,由后台数据库提供实时数据更新和数据查询服务。
动态网页能够根据不同时间和不同访问者而显示不同内容。
(记住 动态网页就是网页里有代码,要先经过服务器运行成静态网页后才能交给浏览器显示,否者浏览器不能解析该文件!!!!)

 




转载于:https://www.cnblogs.com/lansekay/archive/2013/04/28/3050116.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值