zoukankan      html  css  js  c++  java
  • SpringMVC初探-HelloWorld

    MVC的概念

    MVC是一种设计模式,即Model--View-Controller,模型--视图--控制器

    • Model(模型)表示应用程序核心(比如数据库记录列表)。
    • View(视图)显示数据(数据库记录)。
    • Controller(控制器)处理输入(写入数据库记录)

    Model常常是向数据库中存取数据

    View一般根据Model的数据来创建

    Controller一般负责从视图读取数据,将数据发给模型

    SpringMVC

    在CSDN的专栏里看到一张图,很好的讲到了SpringMVC的结构

    首先是DispatcherServlet,即前端控制器,它不要我们自己来创建,而是SpringMVC框架内置的,但需要在Bean.xml

    中配置它,之后它根据web.xml中的配置,得到URL的相关信息,再根据HandlerMapping找到一个合适Handler即(Controller)

    ,随后,再交由HandlerAdapter来执行这个Handler,handler执行后,向HandlerAdapter返回一个ModelAndView对象,

    HandlerAdapter再向前端控制器返回这个ModelAndView对象,之后,前端控制器再找到一个解析器,即ViewResolver,

    处理ModelAndView对象,返回一个真正的视图(jsp).然后前端控制器从ModelAn的View中解析出参数得到数据,组成

    View返回给浏览器或者客户端

    HelloWorld实战

    第一步在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">
        <servlet>
            <servlet-name>springmvc</servlet-name>
            <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
            <load-on-startup>1</load-on-startup>
        </servlet>
        <servlet-mapping>
            <servlet-name>springmvc</servlet-name>
            <url-pattern>/</url-pattern>
        </servlet-mapping>
    </web-app>

    前端配置器的名字不能随便乱取,接下来的SpringMVC的配置文件的名字和他有联系

    接下来创建[前端控制器名字]-servlet,xml文件,即springmvc-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"
           xmlns:mvc="http://www.springframework.org/schema/mvc"
           xsi:schemaLocation="http://www.springframework.org/schema/beans
        http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
        http://www.springframework.org/schema/context
        http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
    
        <context:component-scan base-package="controller" />
        <bean id="irViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/page/"/>
            <property name="suffix" value=".jsp"/>
        </bean>
    </beans>
    

     

    <context>标签是用来查找使用构造型(stereotype)注解所标注的类,如@Component(组件),@Service(服务),

    @Controller(控制器),@Repository(数据仓库),这里当然就是查找控制器的了

    下面bean的两个属性是表示视图文件所在的相对路径,prefix表示前缀,suffix表示后缀,这里则表示/WEB-INF/page文件夹

    下面的jsp文件

    package controller;
    
    import org.springframework.stereotype.Controller;
    import org.springframework.ui.ModelMap;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RequestMethod;
    import org.springframework.web.servlet.ModelAndView;
    
    @Controller
    @RequestMapping(value = "/hello")
    public class HelloController {
        @RequestMapping(method = RequestMethod.GET)
        public String hello(ModelMap modelMap){
            modelMap.addAttribute("message","Hello world");
            return "hello";
        }
    }

    然后在WEB-INF新建一个page文件夹存放我们的视图,即jsp文件,对应上面解析器的配置

    新建hello.jsp

    <%--
      Created by IntelliJ IDEA.
      User: 31786
      Date: 2018/10/16
      Time: 11:35
      To change this template use File | Settings | File Templates.
    --%>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>Title</title>
    </head>
    <body>
    <h1>${message}</h1>
    </body>
    </html>
    

      

    这里message和HelloController里面的modelMap对象中的message对应,hello.jsp的名字和HelloController中hello方法中

    返回的字符串对应

    之后启动项目,大功告成

    
    
  • 相关阅读:
    软件产品案例分析(团队)
    Beta 冲刺 (2/7)
    Beta 冲刺 (1/7)
    机器学习笔记
    第一次作业
    机器学习第一个次个人作业
    软工实践个人总结
    第10组 Beta版本演示
    第10组 Beta冲刺(5/5)
    第10组 Beta冲刺(4/5)
  • 原文地址:https://www.cnblogs.com/Yintianhao/p/9797212.html
Copyright © 2011-2022 走看看