1. 程式人生 > >JAVA程式設計122——SpringMVC返回值型別控制/跳轉方式/JSON響應

JAVA程式設計122——SpringMVC返回值型別控制/跳轉方式/JSON響應

一、目錄結構

在這裡插入圖片描述

二、SpringMVC返回值型別控制/跳轉方式/JSON響應

1.建立UserController.java

package com.mollen.controller;

import com.mollen.bean.User;
import com.sun.deploy.net.HttpResponse;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.
springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.servlet.ModelAndView; import javax.servlet.ServletException; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import
javax.servlet.http.HttpSession; import java.io.IOException; /** * @ClassName: HelloController * @Auther: Mollen * @CreateTime: 2018-11-09 14:49:58 * @Description: */ @Controller @RequestMapping(path="/user") public class UserController { /******************************【返回值型別控制】************************************** /** * * 1.返回值為字串: * 檢視解析器解析為jsp物理路徑:/WEB-INF/pages/success.jsp */
@RequestMapping("respStr1") public String respStr1(User user, HttpSession session){ session.setAttribute("login",user); return "success"; } /** * * 2.使用request轉發頁面 */ @RequestMapping("respStr2") public void respStr2(User user, HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.setAttribute("login",user); request.getRequestDispatcher("/WEB-INF/pages/success.jsp").forward(request,response); } /** * 3.使用response重定向頁面 */ @RequestMapping("/respStr3") public void respStr3(User user, HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { response.sendRedirect(request.getContextPath()+"/index.jsp"); } /** * 4.使用response響應json結果 */ @RequestMapping("/respStr4") public void respStr4(User user, HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException { //亂碼處理 response.setCharacterEncoding("utf-8"); response.setContentType("application/json;charset=utf-8"); response.getWriter().write("jsonData"); } /** * 5.返回ModelAndView */ @RequestMapping("/mv") public ModelAndView mv(User user) throws ServletException, IOException { ModelAndView mv = new ModelAndView(); //將資料儲存到Model中 mv.addObject("logined", user); //設定檢視名稱 mv.setViewName("success"); return mv; } /******************************【頁面跳轉方式控制】**************************************/ /** * 1.轉發:forward */ @RequestMapping("/forward") public String forward(User user,HttpSession session) throws ServletException, IOException { session.setAttribute("logined", user); return "forward:/WEB-INF/pages/success.jsp"; } /** * 2.重定向:redirect */ @RequestMapping("/redirect") public String redirect(User user,HttpSession session) throws ServletException, IOException { session.setAttribute("logined", user); return "redirect:/index.jsp"; } /******************************【響應JSON資料格式】**************************************/ /** * 1.接受請求/使用@RequestBody必須是post請求 * @return */ @RequestMapping(path="/json1") public @ResponseBody User json(@RequestBody User user) { System.out.println(user); return user; } }

2.建立response.jsp測試json響應

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <script src="js/jquery.min.js"></script>
    <script>
        // 頁面載入,繫結單擊事件
        $(function(){
            $("#btn").click(function(){
                // 傳送ajax請求
                $.ajax({
                    // 編寫json格式,設定屬性和值
                    url:"user/json",
                    contentType:"application/json;charset=UTF-8",
                    data:'{"username":"hehe","password":"123","age":30}',
                    dataType:"json",
                    type:"post",
                    success:function(data){
                        // data伺服器端響應的json的資料,進行解析
                        console.log(data);
                    }
                });
            });
        });
    </script>

</head>
<body>

<a href="/user/json" >testJson</a>
<br>
<button id="btn">傳送ajax的請求</button>

</body>
</html>

3.web.xml配置

<?xml version="1.0" encoding="UTF-8"?>
<web-app>
    <!--配置springmvc核心控制器-->
    <servlet>
        <servlet-name>dispatcherServlet</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

        <!-- 配置Servlet的初始化引數,讀取springmvc的配置檔案,建立spring容器 -->
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:springmvc.xml</param-value>
        </init-param>

        <!-- 配置servlet啟動時載入物件 -->
        <load-on-startup>1</load-on-startup>
    </servlet>

    <servlet-mapping>
        <servlet-name>dispatcherServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>

    <!--以下資源不攔截-->
    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.html</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.js</url-pattern>
    </servlet-mapping>

    <servlet-mapping>
        <servlet-name>default</servlet-name>
        <url-pattern>*.css</url-pattern>
    </servlet-mapping>

    <!--配置解決中文亂碼的過濾器-->
    <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>
    </filter>

    <filter-mapping>
        <filter-name>characterEncodingFilter</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

</web-app>

4.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.mollen</groupId>
    <artifactId>springmvc_exam</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <dependencies>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.0.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-web</artifactId>
            <version>5.0.3.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.0.4.RELEASE</version>
        </dependency>

        <dependency>
            <groupId>org.apache.tomcat</groupId>
            <artifactId>tomcat-api</artifactId>
            <version>9.0.10</version>
            <scope>provided</scope>
        </dependency>

        <!--json解析依賴-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.0</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.0</version>
        </dependency>

        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.0</version>
        </dependency>
        
    </dependencies>


</project>

5.springmvc.xml配置

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

    <!-- 配置spring建立容器時要掃描的包 -->
    <context:component-scan base-package="com.mollen"></context:component-scan>

    <!-- 配置檢視解析器 -->
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/"/>
        <property name="suffix" value=".jsp"></property>
    </bean>

    <!--配置檔案上傳解析器-->
    <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
        <!-- 設定上傳檔案的最大尺寸為5MB -->
        <property name="maxUploadSize">
            <value>5242880</value>
        </property>
    </bean>

    <!--配置spring開啟註解mvc的支援-->
    <mvc:annotation-driven></mvc:annotation-driven>

</beans>