第三方控件
1. 掌握文件上传
HTTP协议是基于TCP协议的一种超文本传输协议,用于通信。
客户端请求,服务端响应。
rfc 1867里提出了HTTP协议允许进行文件上传。
<input type="file"/>
commons-fileupload它就遵循了rfc 1867规范,进行了一系列文件上传封装。
-
下载最新版的fileupload和io组件http://commons.apache.org/proper/commons-fileupload/
-
客户端:rfc1867规范中提到了想要做文件上传 必须保证请求方式为
POST
,内容类型(Content-Type)必须为multipart/form-data
- 编写一个表单将其请求方式设置为POST
- 将表单的属性
enctype="multipart/form-data"
(设置上它之后,数据的请求信息变化了,变为了文件项形式上传) - 设置一个文件域用于选择文件
-
服务端:
// 1.工厂 // 接口:File文件Item项Factory工厂 用来进行文件项内容接收的 // 实现类:DiskFileItemFactory // 常用的API: DiskFileItemFactory fif = new DiskFileItemFactory(); // 设置上传过程中的文件缓冲区大小 // fif.setSizeThreshold(sizeThreshold); // 设置上传过程中的临时文件存储位置 // fif.setRepository(repository) // 2.产品 // 接口FileItem 用来存储请求过来的文件项内容 文件项可能为文件表单 也可能为普通表单 // 判断是否是普通表单 // isFormFiled() // 获取文件名 // getName() // 获取name属性值 // getFiledName() // 获取value属性值 // getString() getString(String encoding) // 获取文件大小 // getSize() // 文件存储 (上传到服务器的哪个位置) // write(File destFile) // 3.操作工 // ServletFileUpload // 设置上传文件的总大小 // setSizeMax(long 字节) 如果文件上传超过大小限制 会抛出一个FileUploadBase.SizeLimitExceededException异常 // 解析请求 将请求内容转换为对应的文件项集合 // List<FileItem> parseRequest(HttpServletRequest request) // 判断是否是enctype=multipart/form-data格式的上传 // boolean isMultipartContent(HttpServletRequest request) // 设置头编码(如果你的文件名乱码了 可以设置它) 记住这些编码设置应该放在最前面 否则都已经获取完了 设置也就没意义 // setHeaderEncoding(String encoding)
2. 掌握富文本编辑器的使用
第一步我们创建一个web项目,将官网下载的ueditor放在根目录下面,并将自
带的jar包引入,如下图所示:
第二步需要先配置ueditor下面的ueditor.config.js文件,找到
window.UEDITOR_HOME_URL = “/项目名称/ueditor/”;进行路径配置,如下图所示:
第三步在我们需要用到富文本编辑器的地方引入js文件,需要引入
ueditor.config.js,ueditor.all.js,jquery-2.2.3.min.js三个文件,如
下图所示:
第四步需要在页面中用一个文本域来引入,输入如下代码:
第五步运行项目,可以看到富文本编辑器ueditor已经显示在浏览器页面上了,
如下图所示:
第六步如果需要进行上传文件,图片,视频,需要配置“ueditor->jsp->config.json”文件,配置图片,文件,视频的路径访问前缀,相对路径可以
用“…”,如下图所示:
3. 掌握页面拆分
在我们编写JSP文件时,我们发现在多个JSP文件中可能会出现大量重复的代码。JSP由HTML+Java组成的,所以有可能有大量的重复HTML或者大量的重复Java代码。那么我们就需要对重复性的代码进行复用。
3.1 静态包含
<%@include %>
指令
3.2 动态包含
<jsp:include/>
3.3. jsp静态包含和动态包含的区别
在jsp中有两种包含,静态包含<%@include file="xxx.jsp"%>
和动态包含<jsp:include page="xxx.jsp">
,下面说一下它们之间的区别
-
<%@include file="xxx.jsp"%>
为jsp中的编译指令,其文件的包含是发生在jsp向servlet转换的时期,而<jsp:include page="xxx.jsp">
是jsp中的动作指令,其文件的包含是发生在编译时期,也就是将java文件编译为class文件的时期 -
使用静态包含只会产生一个class文件,而使用动态包含会产生多个class文件
-
使用静态包含,包含页面和被包含页面的
request
对象为同一对象,因为静态包含只是将被包含的页面的内容复制到包含的页面中去;而动态包含包含页面和被包含页面不是同一个页面,被包含的页面的request
对象可以取到的参数范围要相对大些,不仅可以取到传递到包含页面的参数,同样也能取得在包含页面向下传递的参数