1. 程式人生 > >springmvc請路徑引數,springmvc-json-ajax使用,springmvc檔案上傳,springmvc檔案下載,springmvc攔截器(內容較多)

springmvc請路徑引數,springmvc-json-ajax使用,springmvc檔案上傳,springmvc檔案下載,springmvc攔截器(內容較多)

按照操作,絕對都可以實現,親測。。。。。(專案所有檔案和目錄結構全都放上去了)

idea工具,建立maven專案

第一步:

放置各種配置檔案:

pom.xml

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.zit</groupId>
    <artifactId>springmvc03</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>springmvc03</name>


    <dependencies>
        <!-- https://mvnrepository.com/artifact/junit/junit -->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.mybatis/mybatis -->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.4.6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/mysql/mysql-connector-java -->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.12</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.projectlombok/lombok -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.18.2</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.9.RELEASE</version>
        </dependency>


        <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>javax.servlet-api</artifactId>
            <version>4.0.1</version>
            <scope>provided</scope>
        </dependency>
        <!-- https://mvnrepository.com/artifact/javax.servlet.jsp/jsp-api -->
        <dependency>
            <groupId>javax.servlet.jsp</groupId>
            <artifactId>jsp-api</artifactId>
            <version>2.2.1-b03</version>
            <scope>provided</scope>
        </dependency>

        <!-- https://mvnrepository.com/artifact/javax.servlet/jstl -->
        <dependency>
            <groupId>javax.servlet</groupId>
            <artifactId>jstl</artifactId>
            <version>1.2</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/org.codehaus.jackson/jackson-mapper-asl -->
        <dependency>
            <groupId>org.codehaus.jackson</groupId>
            <artifactId>jackson-mapper-asl</artifactId>
            <version>1.9.13</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.6</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/commons-fileupload/commons-fileupload -->
        <dependency>
            <groupId>commons-fileupload</groupId>
            <artifactId>commons-fileupload</artifactId>
            <version>1.3.3</version>
        </dependency>

        <!-- https://mvnrepository.com/artifact/commons-io/commons-io -->
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>


    </dependencies>

    <build>
        <finalName>${project.artifactId}</finalName>
        <testSourceDirectory>src/test/java</testSourceDirectory>
        <sourceDirectory>src/main/java</sourceDirectory>
        <!-- 解決無法載入資源配置檔案 -->
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.xml</include>
                    <include>**/*.properties</include>
                </includes>
            </resource>
        </resources>

        <plugins>
            <!-- 配置maven編譯外掛 -->
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>

            <!-- 配置jetty servlet伺服器 -->
            <plugin>
                <groupId>org.eclipse.jetty</groupId>
                <artifactId>jetty-maven-plugin</artifactId>
                <version>9.4.12.v20180830</version>
                <configuration>
                    <stopKey>exit</stopKey>
                    <stopPort>8989</stopPort>
                    <scanIntervalSeconds>10</scanIntervalSeconds>
                    <reload>manual</reload>
                    <webAppConfig>
                        <contextPath>/</contextPath>
                    </webAppConfig>
                    <httpConnector>
                        <port>80</port>
                    </httpConnector>
                </configuration>
                <executions>
                    <execution>
                        <id>jetty-run</id>
                        <phase>test</phase>
                        <goals>
                            <goal>run</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>


    </build>


</project>

src/main/resources目錄下:src/main/resources/smvc.xml檔案:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:context="http://www.springframework.org/schema/context"
       xmlns:mvc="http://www.springframework.org/schema/mvc"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
			http://www.springframework.org/schema/beans/spring-beans.xsd
			http://www.springframework.org/schema/context
			http://www.springframework.org/schema/context/spring-context.xsd
			http://www.springframework.org/schema/mvc
			http://www.springframework.org/schema/mvc/spring-mvc.xsd">

    <!-- 配置自動掃描的包 -->
    <context:component-scan base-package="com.zit.controller"/>

    <!-- 在沒有配置mvc:resources的時候沒有問題,一旦配置了mvc:resources,註解方式的url就沒有載入 -->
    <mvc:annotation-driven>
        <!-- 訊息轉換器 -->
        <mvc:message-converters register-defaults="true">
            <bean class="org.springframework.http.converter.StringHttpMessageConverter">
                <property name="supportedMediaTypes" value="text/html;charset=UTF-8"/>
            </bean>
        </mvc:message-converters>
    </mvc:annotation-driven>

    <!-- 檔案上傳支援 -->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 104857600 代表100MB -->
        <property name="maxUploadSize" value="104857600"/>
        <property name="maxInMemorySize" value="40960"/>
        <property name="defaultEncoding" value="UTF-8"></property>
    </bean>

    <mvc:interceptors>
        <mvc:interceptor>
            <mvc:mapping path="/admin/**"/>
            <mvc:exclude-mapping path="/admin/login"/>
            <bean class="com.zit.interceptor.TestInterceptor"/>
        </mvc:interceptor>

    </mvc:interceptors>


    <!--<mvc:resources mapping="/images/**" location="/images/" />-->


    <!-- 配置檢視解析器 如何把handler 方法返回值解析為實際的物理檢視 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/template/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>
</beans>

src/main/webapp/WEB-INF/web.xml檔案:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
          http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">
    <display-name>springmvc02</display-name>
    <!--springmvc 5.0.9-->
    <!--不使用註解,可以使用配置-->
    <!-- //@WebServlet(name = "springmvc", urlPatterns = {"/"}, loadOnStartup = 1,
     initParams = {@WebInitParam(name = "contextConfigLocation", value = "classpath:smvc.xml")})-->


    <servlet>
        <servlet-name>springmvc</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath*:smvc.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>springmvc</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
    <!--  &lt;!&ndash; 配置spring框架中的編碼過濾器,實現接post請求中文亂碼處理 &ndash;&gt;
      <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
          <param-name>encoding</param-name>
          <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
          <param-name>forceEncoding</param-name>
          <param-value>true</param-value>
        </init-param>
      </filter>
      <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
      </filter-mapping>-->

    <!-- spring filter 編碼過濾器 -->
    <filter>
        <filter-name>characterEncodingFilter</filter-name>
        <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
        <init-param>
            <param-name>forceEncoding</param-name>
            <param-value>true</param-value>
        </init-param>
    </filter>
    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>


    <!--訪問靜態資源-->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
        <url-pattern>*.css</url-pattern>
        <url-pattern>*.js</url-pattern>
        <url-pattern>*.jpg</url-pattern>
        <url-pattern>*.gif</url-pattern>
        <url-pattern>*.png</url-pattern>
        <url-pattern>*.rar</url-pattern>
    </servlet-mapping>

    <!--配置web專案的web.xml檔案的首頁-->
    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <!--  <error-page>&lt;!&ndash;當系統出現404錯誤,跳轉到頁面nopage.html&ndash;&gt;
        <error-code>404</error-code>
        <location>/404.html</location>
      </error-page>
      <error-page>&lt;!&ndash;當系統出現java.lang.NullPointerException,跳轉到頁面error.html&ndash;&gt;
        <exception-type>java.lang.Exception</exception-type>
        <location>/error.html</location>
      </error-page>
      <session-config>&lt;!&ndash;會話超時配置 ,單位分鐘&ndash;&gt;
        <session-timeout>30</session-timeout>
      </session-config>-->

</web-app>

配置檔案完成。。。。

第二步:

目錄結構以及目錄結構中的內容:

controller目錄下的檔案:

AdminController.java

package com.zit.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.PrintWriter;

@Controller
@RequestMapping("/admin")
public class AdminController {

    @RequestMapping("/index")
    public void index() {

    }

    @RequestMapping("/login")
    public void login() {

    }

    //<img src=check/>
    @RequestMapping("/check")
    public void check(HttpServletRequest req, HttpServletResponse resp) {

    }
}

DownloadController.java

package com.zit.controller;

import org.springframework.http.HttpHeaders;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

@Controller
public class DownloadController {

    @RequestMapping("/down")
    @ResponseBody
    public ResponseEntity<byte[]> down(HttpServletRequest req) {
        String f = req.getServletContext().getRealPath("/images/images.rar");
        File ff = new File(f);
        System.out.println(ff.getName());
        ResponseEntity<byte[]> entity = null;
        try {
            FileInputStream fis = new FileInputStream(ff);

            byte[] body = new byte[fis.available()];
            fis.read(body);
            HttpHeaders headers = new HttpHeaders();
            headers.add("Content-Disposition", "attchment;filename=" + ff.getName());
            System.out.println("filename" + ff.getName());
            HttpStatus statusCode = HttpStatus.OK;
            entity = new ResponseEntity<byte[]>(body, headers, statusCode);
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return entity;
    }

}

HomeController.java

package com.zit.controller;

import com.zit.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;

@Controller
public class HomeController {
    @RequestMapping("/index")
    @ResponseBody
    public String index() {
        return "hello-index";
    }

    @GetMapping("/abc")
    public void add(Model model) {
        model.addAttribute("name", "李四");
        List<Student> list = new ArrayList<Student>();
        Student st1 = new Student();
        st1.setId(3);
        st1.setName("金剛");
        st1.setScore(83);
        Student st2 = new Student();
        st2.setId(5);
        st2.setName("郝剛");
        st2.setScore(93);
        list.add(st1);
        list.add(st2);
        model.addAttribute("students", list);

        // /WEB-INF/template/abc.jsp
    }

    @RequestMapping("/xxx")
    public ModelAndView xxx() {
        ModelAndView mv = new ModelAndView("admin");//預設找admin.jsp檢視檔案
        mv.addObject("user", "李青");
        // mv.setViewName("ok");//WEB-INF/template/ok.jsp
        //mv.setViewName("");
        return mv;
    }

  /*  @GetMapping("/add")  @ResponseBody  /add?name=jack&id=6
    public void add(String name, int id, PrintWriter out){
        out.print(name);
        out.print(id);
    }*/

/*    @GetMapping("/add/{name}/{id}")
    @ResponseBody
    public void add(@PathVariable("name") String nn, @PathVariable("id") int id, PrintWriter out) {
        out.print(nn);
        out.print(id);
    }*/


    //http://localhost:8080/add?ii=30&nn=james
    @GetMapping("/add")
    @ResponseBody
    public void add(@RequestParam(value = "nn", required = false, defaultValue = "李四") String name, @RequestParam("ii") int id, PrintWriter out) {
        out.print(name);
        out.print(id);
    }


}

TimeController.java

package com.zit.controller;

import com.zit.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

@Controller
public class TimeController {

    @GetMapping("/timer")
    @ResponseBody
    public String time() {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        return sdf.format(new Date());
    }

    @GetMapping("/find")
    @ResponseBody
    public Student find() {
        Student st = new Student();
        st.setScore(80);
        st.setId(2);
        st.setName("李勇");
        return st;

    }

    /*@GetMapping("/query") @ResponseBody*/
    @RequestMapping(value = "/query")
    @ResponseBody
    public List<Student> query() {
        Student st = new Student();
        st.setScore(80);
        st.setId(2);
        st.setName("李勇");
        Student st2 = new Student();
        st2.setScore(88);
        st2.setId(4);
        st2.setName("李香蘭");
        List<Student> list = new ArrayList<>();
        list.add(st);
        list.add(st2);
        return list;

    }

    @PostMapping("/save")
    @ResponseBody
    public boolean save(Student tt) {
        System.out.println("insert into stu values(" + tt.getId() + ",'" + tt.getName() + "'," + tt.getScore() + ")");
        return true;
    }


}

UploadController.java

package com.zit.controller;

import org.apache.commons.io.FileUtils;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.multipart.commons.CommonsMultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Controller
public class UploadController {
    @RequestMapping("/upload")
    @ResponseBody
    public String upload(@RequestParam("name") String name, @RequestParam("file") CommonsMultipartFile file, HttpServletRequest req) {
        String path = req.getServletContext().getRealPath("/upload/user");
        File ff = new File(path);
        System.out.println(3);
        if (!ff.exists()) {
            ff.mkdirs();
        }
        /*System.out.println(path);
        System.out.println(name);
        System.out.println(file.getName());
        System.out.println(file.getSize());//大小
        System.out.println(file.getOriginalFilename());//檔名稱*/
        try {
            file.transferTo(new File(path, file.getOriginalFilename()));

        } catch (IOException e) {
            e.printStackTrace();
        }
        return "ok";
    }


    @RequestMapping("/uploads")
    public String uploads(@RequestParam("name") String name, @RequestParam("file") CommonsMultipartFile[] file, HttpServletRequest req, Model model) {
        String path = req.getServletContext().getRealPath("/upload/user");
        File ff = new File(path);
        if (!ff.exists()) {
            ff.mkdirs();
        }
        List<Map<String, Object>> list = new ArrayList<Map<String, Object>>();
        for (CommonsMultipartFile f : file) {
            System.out.println(path);
            System.out.println(name);
            System.out.println(f.getName());
            System.out.println(f.getSize());//大小
            System.out.println(f.getOriginalFilename());//檔名稱
            try {
                f.transferTo(new File(path, f.getOriginalFilename()));

            } catch (IOException e) {
                e.printStackTrace();
            }
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("name", f.getOriginalFilename());
            map.put("size", f.getSize());
            list.add(map);
        }
        model.addAttribute("files", list);

        return "/up";
    }
}

UserController.java

package com.zit.controller;


import com.zit.entity.Student;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;

@Controller
@RequestMapping("/user")
public class UserController {
    @RequestMapping("/show/{nn}/{id}")
    @ResponseBody
    public void show(@PathVariable String nn, @PathVariable int id, PrintWriter out) {

        out.print("歡迎" + nn + "hello world" + id);
    }

    @GetMapping("/save")
    @ResponseBody
    public String save() {
        // void save()
        // /WEB-INF/template/user/save.jsp

        //String save()
        // return "ok" 會使用 /WEB-INF/template/ok.jsp模板檔案渲染顯示
        // /WEB-INF/template/user/save.jsp

        // String save() 如果加上@ResponseBody,那麼return 返回的字串直接輸出到網頁上

        return "ok";
    }

    //@PostMapping("/add")
    @RequestMapping(value = "/add", method = RequestMethod.GET)
    @ResponseBody
    //@GetMapping("/add")@ResponseBody和上面性質一樣
    public void add(HttpServletRequest req, HttpServletResponse resp) {
        try {
            resp.getWriter().print(req.getParameter("id"));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

/*    @GetMapping("/myadd") @ResponseBody
    public void myadd(String name,String gender){
        System.out.println(name+","+gender);
    }*/

    @GetMapping("/myadd")
    @ResponseBody
    public void myadd(Student student, PrintWriter out) {

        out.print(student);
    }


    @GetMapping("/aaa")
    public String aaa() {
        //return "forward:aaa.jsp"; // 轉發到/user/aaa.jsp找檢視,請求地址不變
        return "forward:/aaa.jsp"; // /aaa.jsp
    }

    @GetMapping("/bbb")
    public String bbb() {
        // /user/bbb.jsp跳轉重定向,地址會改變,不傳值
        //return "redirect:bbb.jsp";

        // /bbb.jsp重定向
        //return "redirect:/bbb.jsp";

        return "redirect:t3:action";  //重定向到/user/t3.action

    }
}

controller包中的內容結束。。。。。。。

src/main/java/com.zit.entity包下的內容:

Student.java

package com.zit.entity;

import lombok.Data;

@Data
public class Student {
    private int id;
    private String name;
    private int score;
}

entity包下的內容結束。。。。

src/main/java/com.zit/interceptor包下的內容:

TestInterceptor.java

package com.zit.interceptor;


import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class TestInterceptor implements HandlerInterceptor {
    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
        System.out.println("prehandle");
        //return false; //攔住,通不過停止

        return true;
    }

    @Override
    public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
        System.out.println("postHandle");
    }

    @Override
    public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
        System.out.println("afterCompletion");
    }
}

interceptor包下的內容結束。。。。。。

src/main/java/com.zit/servlet包下的內容:

Upload.java

package com.zit.servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.MultipartConfig;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.Part;
import java.io.File;
import java.io.IOException;

@WebServlet("/myupload.do")
@MultipartConfig
public class Upload extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println(req.getParameter("name"));
        Part part = req.getPart("file");
        System.out.println(part.getSubmittedFileName());
        System.out.println(part.getName());
        System.out.println(part.getSize());
        String path = getServletContext().getRealPath("/upload");
        File f = new File(path);
        if (!f.exists()) {
            f.mkdirs();
            part.write(path + "/" + part.getSubmittedFileName());
        }
    }
}

src/main/java包下的內容完全結束。。。。

src/main/resources包下的內容:

smvc.xml   這個之前已經寫過了。。。。。。,看前面。。。

src/main/resources包下的內容已經完全結束。。。。。。

src/main/webapp包下的內容:(按著順序來)

webapp/css/index.css

h3 {
    color: red;
}

webapp/images/放置a.jpg  b.jpg  c.jpg   d.jpg  四張圖片用來使用

webapp/css/js資料夾下:

上面的自己引入jquery-3.3.1.js  jar包

my.js

alert("ok");

/upload/user是自動生成的,不用管

通過上圖可以改變輸出路徑,生成/upload/user路徑

webapp/WEB-INF目錄下classes和lib都是自動生成的,咱們不用管,只需要注意WEB-INF/template目錄下的內容就行

template/admin/index.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>後臺管理首頁...</h3>
</body>
</html>

template/login.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>管理員登入頁面...</h3>
</body>
</html>

template/user/save.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>儲存成功</h3>
</body>
</html>

template/abc.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>歡迎:${name}</h3>
<c:forEach items="${students}" var="stu">
    <h3>${stu.name}===${stu.score}</h3>

</c:forEach>
</body>
</html>

template/admin.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>歡迎:${user}</h3>
</body>
</html>

template/up.jsp

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>共上傳了${files.size()}檔案</h3>
<c:forEach items="${files}" var="f">
<h3>檔名稱:${f.name},大小:${f.size}位元組</h3>
</c:forEach>
</body>
</html>

WEB-INF/web.xml上面已經寫過了。。看上文

webapp/404.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>404</title>
</head>
<body>
<h3>404頁面找不到</h3>
</body>
</html>

webapp/add.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.js"></script>
    <script>
        $(function () {
            $('input[type=button]').click(function () {
                $.ajax({
                    type:'post',
                    url:'/save',
                    data:{id:$('input[name=id]').val(),name:$('input[name=name]').val(),score:$('input[name=score]').val()},
                    dataType:'json',
                    success:function (d) {
                        alert(d)
                    }
                })
            });


     /*       $("input[type=button]").click(function () {
                $.ajax({
                    type: "post",
                    url: "/save",
                    data: {
                        id: $("input[name=id]").val(),
                        name: $("input[name=name]").val(),
                        score: $("input[name=score]").valueOf()
                    },
                    dataType: "json",
                    success: function (d) {
                        alert(d)
                    }

                })
            })*/

        })

    </script>
</head>
<body>
學號:<input type="text" name="id"><br>
姓名"<input type="text" name="name"><br>
成績:<input type="text" name="score"><br>
<input type="button" value="儲存">

</body>
</html>

webapp/down.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>下載圖片</title>
</head>
<body>
<a href="/images/a.jpg" download>下載圖片</a> <br>
<a href="/images/images.rar" download>下載rar</a>

<h3>安全下載</h3>
<a href="/down" download >下載rar</a>
</body>
</html>

webapp/error.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>error</title>
</head>
<body>
<h3>錯誤頁面</h3>
</body>
</html>

webapp/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <script src="js/jquery-3.3.1.js"></script>
    <script>
        $(function () {
            setInterval(function () {
                $("h3:first").load("/timer")
            },1000)

        })



    </script>
</head>
<body>
<h3></h3>

</body>
</html>

webapp/mindex.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <link rel="stylesheet" href="css/index.css">
    <script src="js/my.js"></script>
</head>
<body>
<h3>hello world</h3>
<img src="images/a.jpg" alt="">
</body>
</html>

webapp/mindex.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<a href="abc">abc</a>

<br>
${3*2}
<a href="show.do">show檢視</a>
</body>
</html>

webapp/myup.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h3>servlet 3檔案上傳</h3>
<form action="/myupload.do" method="post" enctype="multipart/form-data">
    姓名:<input type="text" name="name"><br>
    檔案:<input type="file" name="file"><br>
    <input type="submit" value="提交檔案">
</form>

<h3>springmvc檔案上傳</h3>
<form action="/upload" method="post" enctype="multipart/form-data">
    姓名:<input type="text" name="name"><br>
    檔案:<input type="file" name="file"><br>
    <input type="submit" value="提交檔案">
</form>

<h3>多檔案上傳</h3>
<form action="/uploads" method="post" enctype="multipart/form-data">
    姓名:<input type="text" name="name"><br>
    檔案:<input type="file" name="file" multiple><br>
    <input type="submit" value="提交檔案">
</form>
</body>
</html>