前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >一篇文章解决SpingMVC的创建和简单配置

一篇文章解决SpingMVC的创建和简单配置

作者头像
青衫染红尘
发布2021-01-19 11:25:46
6080
发布2021-01-19 11:25:46
举报
文章被收录于专栏:Surpass' Blog

图解SpringMVC执行流程:

SpringMVC执行流程:

  1. 用户发送请求至前端控制器DispatcherServlet
  2. DispatcherServlet收到请求调用处理器映射器HandlerMapping。
  3. 处理器映射器根据请求url找到具体的处理器,生成处理器执行链HandlerExecutionChain(包括处理器对象和处理器拦截器)一并返回给DispatcherServlet。
  4. DispatcherServlet根据处理器Handler获取处理器适配器HandlerAdapter执行HandlerAdapter处理一系列的操作,如:参数封装,数据格式转换,数据验证等操作
  5. 执行处理器Handler(Controller,也叫页面控制器)。
  6. Handler执行完成返回ModelAndView
  7. HandlerAdapter将Handler执行结果ModelAndView返回到DispatcherServlet
  8. DispatcherServlet将ModelAndView传给ViewReslover视图解析器
  9. ViewReslover解析后返回具体View
  10. DispatcherServlet对View进行渲染视图(即将模型数据model填充至视图中)。
  11. DispatcherServlet响应用户。

摘自: 作者:CoderZS 链接:https://www.jianshu.com/p/8a20c547e245

SpringMVC项目创建

使用maven模板webapp

创建后补充项目结构

Java包结构:

com.springmvc.surpass.controller

添加pom坐标

代码语言:javascript
复制
<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc -->
   <dependency>
     <groupId>org.springframework</groupId>
     <artifactId>spring-webmvc</artifactId>
     <version>5.2.2.RELEASE</version>
   </dependency>
   <!-- https://mvnrepository.com/artifact/javax.servlet/servlet-api -->
   <dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>servlet-api</artifactId>
     <version>2.5</version>
   </dependency>

SpringMVC配置

配置类

创建IndexController

代码语言:javascript
复制
public class IndexController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView mv = new ModelAndView("index.jsp");
        mv.addObject("message","跳转成功");
        return mv;
    }
}

配置web.xml

代码语言:javascript
复制
<!--springmvc配置-->
<servlet>
  <servlet-name>springmvc</servlet-name>
  <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  <!--加载springmvc-servlet.xml控制器映射,如果不添加此配置,也会默认加载名为springmvc-servlet.xml  -->
  <init-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>WEB-INF/springmvc-servlet.xml</param-value>
  </init-param>
  <!--应用启动是初始化servlet-->
  <load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
  <servlet-name>springmvc</servlet-name>
  <url-pattern>/</url-pattern>
</servlet-mapping>

​ 配置springmvc-servlet.xml , web.xml默认记载此名称的配置文件,如果不是这个名字就需要在web.xml中默认加载

代码语言:javascript
复制
<!--spring-servlet这个名字是因为上面web.xml中<servlet-name>标签配的值为spring(<servlet-name>spring</servlet-name>),再加上“-servlet”后缀而形成的spring-servlet.xml文件名,如果改为springMVC,对应的文件名则为springMVC-servlet.xml。-->
<bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" id="simpleUrlHandlerMapping">
    <property name="mappings">
        <props>
            <prop key="/index">indexController</prop>
        </props>
    </property>
</bean>
<bean id="indexController" class="com.springmvc.surpass.controller.IndexController"></bean>

​ 以上的工作流程是用户通过浏览器请求 127.0.0.1:8080/indexservlet拦截当前所有的请求,然后交给SpringMVC控制器(C),控制器根据请求后缀(这里指/index)指向其对应的bean,然后执行handlerequest方法逻辑代码(M),执行后返回视图jsp页面(V),跳转页面后显示ModelAndView中携带的信息。

如何在控制器中跳转到另一个控制器呢?这里看

根据需要再创建一个控制器UserController

代码语言:javascript
复制
public class UserController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView mv = new ModelAndView("user.jsp");
        mv.addObject("message","跳转成功");
        return mv;
    }
}

修改IndexController

代码语言:javascript
复制
public class IndexController implements Controller {
    @Override
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView mv = new ModelAndView("redirect:/user");
        return mv;
    }
}

修改springmvc-servlet.xml

代码语言:javascript
复制
<!--spring-servlet这个名字是因为上面web.xml中<servlet-name>标签配的值为spring(<servlet-name>spring</servlet-name>),再加上“-servlet”后缀而形成的spring-servlet.xml文件名,如果改为springMVC,对应的文件名则为springMVC-servlet.xml。-->
    <bean class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping" id="simpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/index">indexController</prop>
                <prop key="/user">userController</prop>
            </props>
        </property>
    </bean>
    <bean id="indexController" class="com.springmvc.surpass.controller.IndexController"></bean>
    <bean class="com.springmvc.surpass.controller.UserController" id="userController"></bean>

​ ·用户通过浏览器请求 127.0.0.1:8080/index,页面显示将显示 “跳转成功”!

注解类

修改springmvc-servlet.xml

代码语言:javascript
复制
<!--开启注解扫描-->
<mvc:annotation-driven/>
<!--指定需要扫描的包-->
<context:component-scan base-package="controller"></context:component-scan>
    
<!-- 配置视图解析器 如何把handler 方法返回值解析为实际的物理视图  根据控制器返回的字符串拼接成jsp路径:xx.jsp -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
	<property name="prefix" value="/"></property><!-- 前缀 -->
	<property name="suffix" value=".jsp"></property><!-- 后缀 -->
</bean>

修改IndexController

代码语言:javascript
复制
@Controller
public class IndexController {

    @RequestMapping("/index")
    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        //视图解析器回根据model中的视图名进行解析即 /index.jsp
        ModelAndView mv = new ModelAndView("index");
        mv.addObject("message","this is a main");
        return mv;
    }
}

@Controller 注解: 很明显,这个注解是用来声明控制器的,可以用 @Component 注解代替。相当于bean配置

@RequestMapping 注解: 表示路径 /hello 会映射到该方法上,根据后面的/index来判断请求哪一个方法。

重启tomcat

访问 localhost/index 路径,能够看到message的信息

结束

这里只说了SpringMVC最简单的配置,但它本身并不限于这些,适合刚接触框架的同学了解。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 图解SpringMVC执行流程:
  • SpringMVC执行流程:
  • SpringMVC项目创建
    • 使用maven模板webapp
      • 创建后补充项目结构
        • Java包结构:
          • 添加pom坐标
          • SpringMVC配置
            • 配置类
              • 创建IndexController
              • 配置web.xml
              • 如何在控制器中跳转到另一个控制器呢?这里看
            • 注解类
              • 修改springmvc-servlet.xml
              • 修改IndexController
              • 重启tomcat
          • 结束
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档