《学习内容》:
//========学习内容=========
EL表达式语言 (域对象取值)
EL表达式语言(参数值+运算)
JSTL核心标签
JSTL标签+练习
JSTL自定义
文件上传(1)
文件上传(2)
文件下载
《知识点—笔记》
//=========================
EL域对象取值:
${requestScope.存的key}
${sessionScope.存的key}
${applicationScope.存的key}
JSTL遍历集合 数组
中间内容进行拼接等操作
文件上传
//创建一个工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
ServletFileUpload upload = new ServletFileUpload(//需要Factory工厂);
List
《代码内容》:
TestEL项目
Index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<script>
window.onload = function () {
window.location.href = "test"
}
</script>
<body>
</body>
</html>
TestCont**roller**
package controller;
import domain.User;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
public class TestController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException, ServletException {
String uname = "武伟";
request.setAttribute("uname",uname);
User user = new User("李雅芬","520");
request.setAttribute("user",user);
String[] unames = new String[]{"武伟","李雅芬","二胖"};
request.setAttribute("unames",unames);
ArrayList<User> list = new ArrayList<>();
list.add(user);
list.add(user);
request.setAttribute("list",list);
ArrayList<String> data = new ArrayList<>();
data.add("'name'");data.add("'age'");data.add("'sex'");data.add("'value'");data.add("'dink'");
request.setAttribute("data",data);
ArrayList<Integer> echars = new ArrayList<>();
echars.add(1);echars.add(2);echars.add(19);echars.add(25);echars.add(26);
request.setAttribute("echars",echars);
request.getRequestDispatcher("newJsp.jsp").forward(request,response);
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doPost(req,resp);
}
}
newJsp.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ page isELIgnored="false"%>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<html>
<head>
<script type="text/javascript" src="./static/echarts-en.min.js"></script>
</head>
<body>
<div align="center" id="main" style="width: 600px;height:400px;"></div>
</body>
<script>
var myChart = echarts.init(document.getElementById("main"));
option = {
xAxis: {
type: 'category',
data: ${requestScope.data}
},
yAxis: {
type: 'value'
},
series: [{
data: ${requestScope.echars},
type: 'line'
}]
};
myChart.setOption(option)
</script>
</html>
上传文件和下载文件项目
downLoa**d.jsp**
<%--
Created by IntelliJ IDEA.
User: ATanmo
Date: 2021/3/16
Time: 8:57
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>下载产品</title>
<meta charset="UTF-8">
</head>
<body>
<a href="download?filename=bj.png">下载</a>
</body>
</html>
index.js**p**
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta charset="UTF-8">
<title>文件上传与下载</title>
</head>
<body>
<table align="center" width="60%" height="60%">
<form action="testfile" method="post" enctype="multipart/form-data">
<tr>
<p>
用户名:<input type="text" name="username" value="">
</p>
<p>
请您选择上传的文件:<input type="file" name="filename" value="">
</p>
<p>
<input type="submit" value="确认">
</p>
</form>
</tr>
</table>
</body>
</html>
DownLoad**Controller**
package controller;
import javax.servlet.ServletException;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.FileInputStream;
import java.io.IOException;
import java.net.URL;
import java.net.URLEncoder;
public class DownLoadController extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String filename = request.getParameter("filename");
FileInputStream inputStream = new FileInputStream("D://test/" + filename);
byte[] stream = new byte[1024];
int length = inputStream.read(stream);
String encode = URLEncoder.encode(filename, "UTF-8");
System.out.println(encode);
response.setContentType("application/x-msdownLoad");
response.setHeader("Content-disposition","attachment;filename="+filename);
//循环读取全部的字节 然后输出流写出去
ServletOutputStream outputStream = response.getOutputStream();
while (length != -1){
outputStream.write(stream);
outputStream.flush();
length = inputStream.read(stream);
}
}
}
TestFileCo**ntroller**
package controller;
import org.apache.commons.fileupload.FileItem;
import org.apache.commons.fileupload.FileItemFactory;
import org.apache.commons.fileupload.FileUploadException;
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.taglibs.standard.lang.jstl.test.beans.Factory;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.util.List;
public class TestFileController extends HttpServlet {
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//创建一个工厂
DiskFileItemFactory factory = new DiskFileItemFactory();
//创建一个文件加载
ServletFileUpload upload = new ServletFileUpload(factory);
//加载request对象 进行包装
try {
System.out.println("文件上传中...");
//解析后 里面有前端全部的组件
List<FileItem> fileItems = upload.parseRequest(request);
for (FileItem item : fileItems){
//来判断他是一个普通的组件还是一个文件组件
if (item.isFormField()){//如果他是一个普通的组件
String fieldName = item.getFieldName();
String paramValue = item.getString("UTF-8");
System.out.println(fieldName+"===="+paramValue);
}else {
//如果走到了这里 那么说明他是一个文件组件
request.setCharacterEncoding("UTF-8");
String fieldName = item.getFieldName();
String value = item.getString("UTF-8");
String realFileName = item.getName();
System.out.println(fieldName+"==="+value+"==="+realFileName);
item.write(new File("D://test/"+realFileName));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
学习总结:
学懂的:
可以熟练的使用EL和JSTL,文件上传下载的具体写法,当时写的时候挺熟练的。
有问题的地方:
虽然写的功能没有什么问题,但是文件上传和下载虽然流程功能没有什么问题
但是其中的设置缓存,最大多少,最小多少,进度条,自己没有去尝试,等待
后期项目的时候用的时候勾起印象,进行进一步加深,JSTL的自定义标签和自定义EL
都没有去练习。**