guyanqing 1 vuosi sitten
vanhempi
commit
b1d19c1b00

+ 14 - 0
JavaWeb27/pom.xml

@@ -52,6 +52,20 @@
       <scope>runtime</scope>
     </dependency>
 
+<!--    这是文件上传和瞎下载的maven依赖-->
+    <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>2.6</version>
+    </dependency>
+    <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
+    <dependency>
+      <groupId>commons-fileupload</groupId>
+      <artifactId>commons-fileupload</artifactId>
+      <version>1.4</version>
+    </dependency>
+
   </dependencies>
 
   <build>

+ 69 - 0
JavaWeb27/src/main/java/com/sf/fileupload/FileUpLoadServlet.java

@@ -0,0 +1,69 @@
+package com.sf.fileupload;
+
+import org.apache.commons.fileupload.FileItem;
+import org.apache.commons.fileupload.FileUploadException;
+import org.apache.commons.fileupload.disk.DiskFileItemFactory;
+import org.apache.commons.fileupload.servlet.ServletFileUpload;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.*;
+import java.io.File;
+import java.io.IOException;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * 这是文件上传的servlet
+ */
+@WebServlet(name = "FileUpLoadServlet", value = "/FileUpLoadServlet")
+public class FileUpLoadServlet extends HttpServlet {
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+    doPost(request,response);
+    }
+
+    @Override
+    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        System.out.println("请求依赖来到servlet这里...");
+        DiskFileItemFactory diskFileItemFactory = new DiskFileItemFactory();
+        ServletFileUpload servletFileUpload = new ServletFileUpload(diskFileItemFactory);
+//        对当前上传的文件单个进行限制
+        servletFileUpload.setFileSizeMax(1024*1024*10);
+//        对文件上传的总大小进行限制
+        servletFileUpload.setSizeMax(1024*1024*100);
+        try {
+            //前端传过来的属性控件
+            List<FileItem> fileItems = servletFileUpload.parseRequest(request);
+            for (FileItem fileItem : fileItems) {
+//                获取表单的名称
+                String fieldName = fileItem.getFieldName();
+               // 获取表单的value值,以utf-8的形式进行获取,防止中文乱码
+                String value = fileItem.getString("UTF-8");
+                System.out.println("fieldName"+value);
+//                获取文件的名称
+                String name = fileItem.getName();
+                //防止文件名称重复,可以i使用时间戳
+                String id = new Date().getTime()+"";
+//                    重新生成文件名称
+                name = id+name;
+//                  上传到指定的位置
+                String realPath = getServletContext().getRealPath("/upload");
+                System.out.println("上传图片的地址"+realPath);
+               // 获取路径
+                File file = new File(realPath);
+//                    判断当前路径是否存在
+                if(!file.exists()){
+                    file.mkdirs();
+                };
+//                  将文件写到服务器当中
+                fileItem.write(new File(realPath+"/"+name));
+//                  清空缓存
+                fileItem.delete();
+            }
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+}

+ 36 - 0
JavaWeb27/src/main/java/com/sf/filter/MyFilter.java

@@ -0,0 +1,36 @@
+package com.sf.filter;
+
+
+import javax.servlet.*;
+import javax.servlet.http.HttpServletRequest;
+import java.io.IOException;
+
+/**
+ * 自定义过滤器
+ */
+public class MyFilter implements Filter {
+    @Override
+    public void init(FilterConfig filterConfig) throws ServletException {
+        System.out.println("filter初始化啦。。。");
+    }
+
+    @Override
+    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
+//        doFilter(request,response) 是放行
+//        HttpServletRequest httpServletRequest  = (HttpServletRequest) request;
+//        if(httpServletRequest.getRequestURI().contains("index.jsp")){
+//            System.out.println("放行你  index.jsp");
+////            放行
+//            chain.doFilter(request,response);
+//        }else {
+//            System.out.println("你不是index.jsp,不能放行");
+//        }
+        chain.doFilter(request,response);
+
+    }
+
+    @Override
+    public void destroy() {
+        System.out.println("filter的销毁方法。。。");
+    }
+}

+ 26 - 0
JavaWeb27/src/main/java/com/sf/servlet/TestServletSubmit.java

@@ -0,0 +1,26 @@
+package com.sf.servlet;
+
+import javax.servlet.*;
+import javax.servlet.http.*;
+import javax.servlet.annotation.*;
+import java.io.IOException;
+
+/**
+ * 测试请求乱码的servlet
+ */
+@WebServlet(name = "TestServletSubmit", value = "/TestServletSubmit")
+public class TestServletSubmit extends HttpServlet {
+    @Override
+    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+        doPost(request,response);
+    }
+
+    @Override
+    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
+//        设置接受参数的字符集
+        request.setCharacterEncoding("UTF-8");
+        //    接受请求传过来的参数
+        String userName = request.getParameter("userName");
+        System.out.println(userName);
+    }
+}

+ 12 - 0
JavaWeb27/src/main/webapp/WEB-INF/web.xml

@@ -40,6 +40,18 @@
         <url-pattern>/Hello3Servlet</url-pattern>
     </servlet-mapping>
 
+<!--    自定义拦截器-->
+    <filter>
+<!--        给当前拦截器起名字-->
+        <filter-name>myFilter</filter-name>
+<!--        通过全类名指定当前的拦截器-->
+        <filter-class>com.sf.filter.MyFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>myFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+
     <welcome-file-list>
         <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>

+ 20 - 0
JavaWeb27/src/main/webapp/index.jsp

@@ -49,5 +49,25 @@ get请求传递参数
 <a href="GetNameServlet">通过el表达式获取请求阈中的数据</a>
 <hr>
 <a href="GetUserListServlet">获取用户列表测试</a>
+
+<%--处理请求乱码问题  -- post--%>
+<hr>
+<form action="TestServletSubmit" method="post">
+    <input type="text" name="userName" placeholder="请输入用户名">
+    <hr>
+    <input type="submit" value="测试请求乱码提交的按钮">
+</form>
+
+
+<%--文件上传   post
+action  : 后台servlet的请求地址  method  请求方式
+enctype:浏览器上传内容的属性     默认application/x-www-form-urlencoded
+前端传递参数的属性  -- 两个控件     普通控件    二进制控件
+--%>
+<form action="FileUpLoadServlet" method="post" enctype="multipart/form-data">
+    <input type="text" name="userName">
+    <input type="file" name="file">
+    <input type="submit" value="文件上传">
+</form>
 </body>
 </html>

+ 0 - 1
JavaWeb27/src/main/webapp/indexJSP.jsp

@@ -33,6 +33,5 @@ ${7 div 2}
 ==    eq  ===>${2 ==  2}  ${1 eq 3}
 
 <hr>
-
 </body>
 </html>

BIN
JavaWeb27/target/JavaWeb27.war


BIN
JavaWeb27/target/JavaWeb27/WEB-INF/classes/com/sf/fileupload/FileUpLoadServlet.class


BIN
JavaWeb27/target/JavaWeb27/WEB-INF/classes/com/sf/filter/MyFilter.class


BIN
JavaWeb27/target/JavaWeb27/WEB-INF/classes/com/sf/servlet/TestServletSubmit.class


BIN
JavaWeb27/target/JavaWeb27/WEB-INF/lib/commons-fileupload-1.4.jar


BIN
JavaWeb27/target/JavaWeb27/WEB-INF/lib/commons-io-2.6.jar


+ 12 - 0
JavaWeb27/target/JavaWeb27/WEB-INF/web.xml

@@ -40,6 +40,18 @@
         <url-pattern>/Hello3Servlet</url-pattern>
     </servlet-mapping>
 
+<!--    自定义拦截器-->
+    <filter>
+<!--        给当前拦截器起名字-->
+        <filter-name>myFilter</filter-name>
+<!--        通过全类名指定当前的拦截器-->
+        <filter-class>com.sf.filter.MyFilter</filter-class>
+    </filter>
+    <filter-mapping>
+        <filter-name>myFilter</filter-name>
+        <url-pattern>/*</url-pattern>
+    </filter-mapping>
+
     <welcome-file-list>
         <welcome-file>index.jsp</welcome-file>
     </welcome-file-list>

+ 20 - 0
JavaWeb27/target/JavaWeb27/index.jsp

@@ -49,5 +49,25 @@ get请求传递参数
 <a href="GetNameServlet">通过el表达式获取请求阈中的数据</a>
 <hr>
 <a href="GetUserListServlet">获取用户列表测试</a>
+
+<%--处理请求乱码问题  -- post--%>
+<hr>
+<form action="TestServletSubmit" method="post">
+    <input type="text" name="userName" placeholder="请输入用户名">
+    <hr>
+    <input type="submit" value="测试请求乱码提交的按钮">
+</form>
+
+
+<%--文件上传   post
+action  : 后台servlet的请求地址  method  请求方式
+enctype:浏览器上传内容的属性     默认application/x-www-form-urlencoded
+前端传递参数的属性  -- 两个控件     普通控件    二进制控件
+--%>
+<form action="FileUpLoadServlet" method="post" enctype="multipart/form-data">
+    <input type="text" name="userName">
+    <input type="file" name="file">
+    <input type="submit" value="文件上传">
+</form>
 </body>
 </html>

+ 0 - 1
JavaWeb27/target/JavaWeb27/indexJSP.jsp

@@ -33,6 +33,5 @@ ${7 div 2}
 ==    eq  ===>${2 ==  2}  ${1 eq 3}
 
 <hr>
-
 </body>
 </html>

BIN
JavaWeb27/target/classes/com/sf/fileupload/FileUpLoadServlet.class


BIN
JavaWeb27/target/classes/com/sf/filter/MyFilter.class


BIN
JavaWeb27/target/classes/com/sf/servlet/TestServletSubmit.class