《学习内容》:
//========学习内容=========
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);}@Overrideprotected 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: ATanmoDate: 2021/3/16Time: 8:57To 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 {@Overrideprotected 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
都没有去练习。**
