Back to Javatutorial

SpringMVC基本介绍与快速入门

docs/Spring全家桶/SpringMVC/SpringMVC基本介绍与快速入门.md

1.0.019.2 KB
Original Source

MVC Ƹ

Java Web ĿУͳһʾ㡢Ʋ㡢ݲIJȫ JSP JavaBean дdz֮Ϊ Model1

  • ֵı׶ˣ
  • JSP Java Bean ֮ϣJava HTML Ҳһ
  • Ҫ󿪷߲Ҫ Java Ҫи߳ǰˮƽ
  • ǰ˺ͺ໥ǰҪȴɣҲǰɣܽЧIJ
  • Ը

Ϊֱ׶ˣԺַܿʽͱ Servlet + JSP + Java Bean ˣڵ MVC ģModel2ͼ

ûᵽ ServletȻӦ Java Beanеʾ JSP ȥɣģʽǾͳΪ MVC ģʽ

  • M ģͣModel ģʲôأ ģ;ݣ dao,bean
  • V ͼView ͼʲôأ ҳ, JSPչʾģе
  • C controller) ʲô þǰѲͬ(Model)ʾڲͬͼ(View)ϣServlet ݵľĽɫ

չĶWebģʽ

Spring MVC ļܹ

Ϊ־òһֱδõݿı̣Ϊӭ NoSQL ǿSpring MVC ˷

ͳģͲ㱻Ϊҵ(Service)ݷʲ㣨DAO,Data Access Object Service ¿ͨ Spring ʽݷʲ㣬ҵϻǷ NoSQL ܹͻ NoSQL ʹˣԴ߻ϵͳܡ

  • ص㣺 ṹɢ Spring MVC ʹøͼ ϣģ Spring ޷켯

Hello Spring MVC

дһǵĵһ Spring MVC

һ IDEA ½ Spring MVC Ŀ

ȡΪ HelloSpringMVCFinish

IDEA ԶغñҪ jar ΪǴһЩĬϵĿ¼ļԺĿṹ£

ڶ޸ web.xml

Ǵ web.xml ͼ޸ģ

<url-pattern>ԪصֵΪ / ʾҪе󣬲Spring MVCĺ̨֮

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

༭ dispatcher-servlet.xml

ļĿͷ dispatcher web.xml е <servlet-name> Ԫõ dispatcher Ӧ Spring MVC ӳļxxx-servlet.xmlDZ༭£

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       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">

    <bean id="simpleUrlHandlerMapping"
          class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <!-- /hello ·󽻸 id Ϊ helloController Ŀ-->
                <prop key="/hello">helloController</prop>
            </props>
        </property>
    </bean>
    <bean id="helloController" class="controller.HelloController"></bean>
</beans>

IJд HelloController

Packagecontroller´ HelloController࣬ʵ org.springframework.web.servlet.mvc.Controller ӿڣ

package controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class HelloController implements Controller{
    @Override
    public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
        return null;
    }
}

  • javax.servlet Ҳ
  • **** Tomcat Ŀ¼¡libļµ servlet-api.jar ̡libļ£

Spring MVC ͨ ModelAndView ģͺͼһ

ModelAndView mav = new ModelAndView("index.jsp");
mav.addObject("message", "Hello Spring MVC");

ʾͼindex.jsp ģݵ message Hello Spring MVC

package controller;

import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;

public class HelloController implements Controller {

    public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView mav = new ModelAndView("index.jsp");
        mav.addObject("message", "Hello Spring MVC");
        return mav;
    }
}

岽׼ index.jsp

index.jsp ޸Ϊ

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>

<h1>${message}</h1>

ݺܼ򵥣Elʽʾ message ݡ

Tomcat ػ

ڡRun˵ҵEdit Configurations

Tomcat

ѡñص Tomcat ĺ֣

Deployment ǩҳ²

OK ͺˣǵϽǵν Tomcat

  • ֵ⣺ Tomcat ޷
  • ԭ Tomcat Ҳص jar
  • **** libļWEB-INF£½

߲

ַlocalhost/hello

οϣSpring MVC ̳(how2j.cn)


Spring MVC

ÿû Web еӻύʱͿʼˣʵԱһ뿪ʼȡӦأᾭܶվ㣬ÿһվ㶼һЩϢͬʱҲϢͼΪ Spring MVC ̣

һվDispatcherServlet

뿪Ժ󣬵һվľ DispatcherServletһ Servletͨ J2EE ѧϰ֪ Servlet ز HTTP DispatcherServlet е󣬲ҽЩ͸ Spring MVC

<servlet>
    <servlet-name>dispatcher</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
    <servlet-name>dispatcher</servlet-name>
    <!-- е -->
    <url-pattern>/</url-pattern>
</servlet-mapping>

  • **DispatcherServlet ͸ Spring MVC **

ڶվӳ䣨HandlerMapping

  • ͵ӦóпܻжЩ󵽵Ӧ÷һأ

DispatcherServlet ѯһӳȷһվӳЯ URL ϢоУͨ simpleUrlHandlerMapping /hello ַ helloController

<bean id="simpleUrlHandlerMapping"
      class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <!-- /hello ·󽻸 id Ϊ helloController Ŀ-->
            <prop key="/hello">helloController</prop>
        </props>
    </property>
</bean>
<bean id="helloController" class="controller.HelloController"></bean>

վ

һѡ˺ʵĿ DispatcherServlet Ὣ͸ѡеĿ˿ж为أûύ󣩵ȴЩϢ

public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
    // ߼
    ....
}

վ DispatcherServlet

߼ͨһЩϢЩϢҪظûʾϢDZΪģͣModelԭʼϢʱġЩϢҪûѺõķʽиʽһ HTMLԣϢҪ͸һͼviewͨ JSP

һ¾ǽģݴұʾȾͼ߼ͼὫͬģͺͼͻ DispatcherServlet

public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
    // ߼
    ....
    // ظ DispatcherServlet
    return mav;
}

վͼ

Ͳضͼϣݸ DispatcherServlet ͼֱӱʾijض JSPʵϣȷͼ JSP෴ݵĽһ߼ƣƽҲͼ

DispatcherServlet ʹͼview resolver߼ͼƥΪһضͼʵ֣Ҳܲ JSP

ֱӰ󶨵 index.jsp ͼ

վͼ

Ȼ DispatcherServlet Ѿ֪ĸͼȾˣҲˡ

һվͼʵ֣ģݣҲˡͼʹģȾͨӦ󴫵ݸͻˡ

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" isELIgnored="false"%>

<h1>${message}</h1>


ʹע Spring MVC

Ѿ Spring MVC һ˽⣬ͨ XML õķʽ˵һ Spring MVC עӦôã

һΪ HelloController ע

package controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class HelloController{

    @RequestMapping("/hello")
    public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView mav = new ModelAndView("index.jsp");
        mav.addObject("message", "Hello Spring MVC");
        return mav;
    }
}

ʵֵĽӿҲȥ

  • 򵥽һ£
  • @Controller ע⣺ ԣעģʵע Spring MVC Ӱ첢󡣣Spring ʵս˵Ǹʵɨ裬 @Component ע棬Լһ²УΪû JSP ͼһԼһûгɹ...
  • @RequestMapping ע⣺ Ȼͱʾ· /hello ӳ䵽÷

ڶȡ֮ǰ XML ע

dispatcher-servlet.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"
       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">

    <!--<bean id="simpleUrlHandlerMapping"-->
                                        <!-->-->
    <!--<property name="mappings">-->
            <!--<props>-->
                <!--&lt;!&ndash; /hello ·󽻸 id Ϊ helloController Ŀ&ndash;&gt;-->
                <!--<prop key="/hello">helloController</prop>-->
            <!--</props>-->
        <!--</property>-->
    <!--</bean>-->
    <!--<bean id="helloController" ></bean>-->

    <!-- ɨcontrollerµ -->
    <context:component-scan base-package="controller"/>
</beans>

ɣ localhost/hello ַȻܿЧ

@RequestMapping עϸ

@RequestMapping ϣô൱Ǹõӳַǰһַ磺

@Controller
@RequestMapping("/wmyskxz")
public class HelloController {
    @RequestMapping("/hello")
    public ModelAndView handleRequest(....) throws Exception {
        ....
    }
}

  • ʵַ localhost/wmyskxz/hello

ͼ

ǵ Spring MVC ͼλͼһ DispaterServlet ݹ߼ͼƥһضͼ

  • **** һЩҳDzϣûûֱӷʵҪݵҳ棬ģ֧ŵҳ档
  • ɵ⣺ ǿڡwebĿ¼·һtest.jspģһҪݵҳ棬ʲôҳ localhost/test.jsp ֱܹӷʵˣй¶... ǿֱ localhost/index.jsp ԣijһհ׵ҳ棬Ϊûлȡ ${message} ֱӷˣӰû

ǽǵ JSP ļڡWEB-INFļеġpageļ£WEB-INF Java Web ĬϵİȫĿ¼Dzûֱӷʵ_Ҳ˵ͨ localhost/WEB-INF/ ķʽԶʲģ_

Ҫ߸ͼ dispatcher-servlet.xml ļã

<bean id="viewResolver"
      class="org.springframework.web.servlet.view.InternalResourceViewResolver">
    <property name="prefix" value="/WEB-INF/page/" />
    <property name="suffix" value=".jsp" />
</bean>

һ Spring MVC õһͼýѭһԼͼǰ׺ͺ׺ȷһ Web ӦͼԴ·ġʵЧ

һ޸ HelloController

ǽ޸һ£

ڶͼ

ãɣ

<?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"
       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">

    <!--<bean id="simpleUrlHandlerMapping"-->
                                        <!-->-->
    <!--<property name="mappings">-->
            <!--<props>-->
                <!--&lt;!&ndash; /hello ·󽻸 id Ϊ helloController Ŀ&ndash;&gt;-->
                <!--<prop key="/hello">helloController</prop>-->
            <!--</props>-->
        <!--</property>-->
    <!--</bean>-->
    <!--<bean id="helloController" ></bean>-->

    <!-- ɨcontrollerµ -->
    <context:component-scan base-package="controller"/>
    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/page/" />
        <property name="suffix" value=".jsp" />
    </bean>
</beans>

index.jsp ļ

ڡWEB-INFļ½һpageļУindex.jspļ棺

IJԴ

localhost/hello ·ȷЧ

  • ԭ

Ǵ߼ͼΪ index ټ /WEB-INF/page/ ǰ׺ .jsp ׺ȷͼ·ˣԺͿԽеͼ롾pageļˣ

  • **ע⣺**ʱý dispatcher-servlet.xml µ

ʹÿղ Spring MVC ҵ߼ĵһΪ̽ Spring MVC ĴηʽΪһ򵥵ıύݣ

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" import="java.util.*" isELIgnored="false"%>
<html>
<head>
    <meta charset="utf-8">
    <title>Spring MVC ηʽ</title>
</head>
<body>
<form action="/param" role="form">
    û

    룺

    
</form>
</body>
</html>

ͳɣǾһ£

ʹ Servlet ԭ API ʵ֣

Ǻ֪ύ /param Ŀ¼ʹ Servlet ԭ API ܻܲȡݣ

@RequestMapping("/param")
public ModelAndView getParam(HttpServletRequest request,
                         HttpServletResponse response) {
    String userName = request.getParameter("userName");
    String password = request.getParameter("password");

    System.out.println(userName);
    System.out.println(password);
    return null;
}

Գɹ

ʹͬƥ

ǿ԰ѷβóɺǰ̨һķȡݣͬƥ򣩣

@RequestMapping("/param")
public ModelAndView getParam(String userName,
                             String password) {
    System.out.println(userName);
    System.out.println(password);
    return null;
}

Գɹ

  • ֻǰ̨ǿϣDzϣ
  • **** ʹ @RequestParam("ǰ̨") ע룺

  • @RequestParam עϸڣ עvalue``required``defaultvalue
  • value ָ name Եʲôvalue ԶĬϲд
  • required ǷҪиòΪtrueߡfalse
  • defaultvalue Ĭֵ

ʹģʹ

  • Ҫ ǰֱ̨ģеֶһ

Ϊǵıһ User ģͣ

package pojo;

public class User {

    String userName;
    String password;

    /* getter and setter */
}

ȻȻɹ

  • ע⣺ Servlet еһ÷ֻ POST ЧΪֱӴ request

ǿͨ Spring MVC ַɣ web.xml ӣ

<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>


ͨ棬֪ôݣܽ POST ⣬ôôأΪڡpage´һtest2.jsp

<!DOCTYPE html>
<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" import="java.util.*" isELIgnored="false" %>
<html>
<head>
    <title>Spring MVC ݻ</title>
</head>
<body>
<h1>ݣ${message}</h1>
</body>
</html>

ʹ Servlet ԭ API ʵ

һ Servlet ԭ API Ƿ

@RequestMapping("/value")
public ModelAndView handleRequest(HttpServletRequest request,
                                  HttpServletResponse response) {
    request.setAttribute("message","ɹ");
    return new ModelAndView("test1");
}

ַ룺localhost/value

ʹ Spring MVC ṩ ModelAndView

ʹ Model

Spring MVC Уͨʹķʽݣ

  • ʹ @ModelAttribute ע⣺
@ModelAttribute
public void model(Model model) {
    model.addAttribute("message", "עɹ");
}

@RequestMapping("/value")
public String handleRequest() {
    return "test1";
}

дͻڷʿ handleRequest() ʱȵ model() message ӽҳȥͼпֱӵãдᵼ¸ÿеķȵ model() ͬҲܷ㣬ΪԼָݡ


ͻת

ǰ治ǵַ /hello ת index.jsp /test ת test.jspЩǷ˵תҲ request.getRequestDispatcher("ַ").forward(request, response);

νпͻתأǼ HelloController бд

@RequestMapping("/hello")
public ModelAndView handleRequest(javax.servlet.http.HttpServletRequest httpServletRequest, javax.servlet.http.HttpServletResponse httpServletResponse) throws Exception {
    ModelAndView mav = new ModelAndView("index");
    mav.addObject("message", "Hello Spring MVC");
    return mav;
}

@RequestMapping("/jump")
public ModelAndView jump() {
    ModelAndView mav = new ModelAndView("redirect:/hello");
    return mav;
}

ʹ redirect:/hello ͱʾҪת /hello ·ڵַ룺localhost/jump Զת /hello ·£

Ҳã

@RequestMapping("/jump")
public String jump() {
    return "redirect: ./hello";
}


ļϴ

عһ´ͳļϴأ

һ Spring MVC ʵļϴ

  • ע⣺ Ҫȵ commons-io-1.3.2.jar commons-fileupload-1.2.1.jar

һϴ

dispatcher-servlet.xml һ䣺

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"/>

ϴ֧ܵ

ڶд JSP

ļΪ upload.jspԴڡpage£

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>ļϴ</title>
</head>
<body>
<form action="/upload" method="post" enctype="multipart/form-data">
    
    
</form>
</body>
</html>

д

Packagecontroller½UploadControllerࣺ

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class UploadController {

    @RequestMapping("/upload")
    public void upload(@RequestParam("picture") MultipartFile picture) throws Exception {
        System.out.println(picture.getOriginalFilename());
    }

    @RequestMapping("/test2")
    public ModelAndView upload() {
        return new ModelAndView("upload");
    }

}

IJ

ַ룺localhost/test2 ѡļϴԳɹ


οϣ


ӭתأתע ID githubwmyskxz ӭע΢źţwmyskxz Լѧϰ & ѧϰ & ҪҲԼqqȺ3382693

ߣû ӣhttps://www.jianshu.com/p/91a2d0a1e45a Դ ȨСҵתϵ߻Ȩҵתע