先是看了struts的一些其他功能,由于没有实践,忘记的差不多了,应该是说上传和下载文件,和多文件的处理,要用到流
翻书中……………..
上传:
JSP中,<s:file …….>标签,并且一定要在form的参数中写上:”enctype=”multipart/form-data””
类中,要有<s:file …….>name属性同名的变量,File类型的,先把这个文件变成输入流,然后new一个文件输出流,要求有文件位置,再用字节缓存,把输入流的内容都读到输出流中,最后关闭流
代码: File f = new File("D:\\TDDOWNLOAD\\TEST.txt");
FileInputStream fis = newFileInputStream(f);
FileOutputStream fos = newFileOutputStream("D:\\TDDOWNLOAD\\out.txt");
byte[] buffer= new byte[1024];
int count;
while((count =fis.read(buffer))>0)
{
fos.write(buffer, 0, count);
}
fis.close();
fos.close();
多文件伤处:注意点是几个file标签的name一定要写成一样,方便生成list,
下载:
JSP页面中可用连接的形式<a href=””>,可以直接写连接,也可以写action,在代码中处理
代码:只要生成输入流就可以了,要有一个文件路径的变量,路径由配置文件给出,生成输入流的方法体可以这么写servletActionContext.getServletContext().getResourceAsStream(downloadFile);
配置文件:下载的话,配置文件是关键,
Ex:
<action name=”download”class=”adsfasdfa”>
传递参数,指定要下载的文件的路径
<param name=”downloadFile”>d:/programfiles/12.txt</param>
<result name=”success” type=”stream”>
输入流的名称,对应Action类中的getTargetFile()方法
<param name=”inputName”>targetFile</param>
设置下载文件的文件名
<param name=”contentDisposition”>
filename=”example.rar”
</param>
指定下载文件的缓冲区的大小
<param name=”bufferSize”>4096</param>
</result>
</action>
下午的时候学习了ajax是个什么东东
Ajax不是一门新语言什么的,就是一种技术的运用,是异步的JS和XML
看到了两种写法
目前只熟悉第一种
1. 获取浏览器实例,区分是不是IE4.5
2. 再调用发放
3. 然后就能对状态值进行判断
4. 判断体内就可以对服务器端返回的值进行判断处理
几个注意点,运用这个ajax技术之后就不要再和struts中的一些地方搞混淆了
1. send中的方法也可以带参数,对应action中的方法不需要返回String值,定义成void
2. 需要一个String类型的result变量,来反馈给客户端结果
3. JS方法需要调用,反馈结果之后可以用window.location();继续走,因为没有strtus的一系列了。
晚上的时候看了DOM
这是文件对象模型。是表示和处理一个HTML或XML文档的常用方法
DOM中常用的document.getElementById();和getElementsByTagName()
document.getElementById("ID");注释:getElementById() 无法工作在 XML 中。在 XML 文档中,您必须通过拥有类型 id 的属性来进行搜索,而此类型必须在XML DTD 中进行声明。
getElementsByTagName() 方法会使用指定的标签名返回所有的元素(作为一个节点列表),这些元素是您在使用此方法时所处的元素的后代。
getElementsByTagName() 可被用于任何的 HTML 元素:
对 firstChild 最普遍的用法是访问某个元素的文本:
var x=[a paragraph]; var text=x.firstChild.nodeValue;parentNode属性常被用来改变文档的结构。假设您希望从文档中删除带有 id 为"maindiv" 的节点:
var x=document.getElementById("maindiv");x.parentNode.removeChild(x);首先,您需要找到带有指定 id 的节点,然后移至其父节点并执行 removeChild() 方法。
nodeList,
您可以通过使用length 属性来循环遍历节点列表:var x=document.getElementsByTagName("p"); for (vari=0;i<x.length;i++) { // do something with each paragraph }您也可以通过索引号来访问某个具体的元素。
要访问第三个<p> 元素,您可以这么写:var y=x[2];
简而言之,DOM是最大的对象可以在任何页面调用
几个注意点:
绝不要使用在文档加载之后使用 document.write()。这会覆盖该文档。
如需改变 HTML 元素的内容,请使用这个语法:
Document.getElementById(),innerHTML =*****;
如需改变 HTML 元素的属性,请使用这个语法:
Document.getElementByID().attribute = ****;
如需改变 HTML 元素的样式,请使用这个语法:
Document.getElementById().style.property = ******;
使用 HTML DOM 来分配事件
HTML DOM允许您通过使用 JavaScript 来向 HTML 元素分配事件:
document.getElementById("myBtn").οnclick=function(){displayDate()};
创建新的元素
<script>
var para=document.createElement("p");
var node=document.createTextNode("这是新段落。");
para.appendChild(node);
var element=document.getElementById("div1");
element.appendChild(para);
</script>
其实最开始是准备看JS的,然后做了份试题,对了13/20
好吧,该睡觉了,明天要正常起床啊,明天继续,恩,来干劲了
2013/3/28 03:15
疑问:
拦截器到底有什么用,干什么的,怎么用
Document.getElementById().Inner:什么的这玩意是属于哪里的内容,可用范围是什么,
答:DOM中自带的,也就是到处都可以用。“.innerHTML=’asdfasdf’”
对于uploadFileName和upload(file标签中name属性的值)的关系,前者是需要自己写,还是自动生成,需要实验