springMVC学习笔记之Controller控制器

Posted 谦谦均

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了springMVC学习笔记之Controller控制器相关的知识,希望对你有一定的参考价值。

这里默认你使用的编辑器是idea,并且电脑上安装了Java以及tomcat,并且在idea里面初步配置了tomcat,电脑里面下载了spring。
首先简单介绍一下controller控制器:

  • 控制器复杂提供访问应用程序的行为,通常通过接口定义或注解定义两种方法实现。
  • 控制器负责解析用户的请求并将其转换为一个模型。
  • 在Spring MVC中一个控制器类可以包含多个方法
  • 在Spring MVC中,对于Controller的配置方式有很多种
    那么怎样实现Controller接口呢,Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方法;
//实现该接口的类获得控制器功能
public interface Controller {
   //处理请求且返回一个模型与视图对象
   ModelAndView handleRequest(HttpServletRequest var1, HttpServletResponsevar2) throws Exception;
}

接下来用代码来展示一下具体效果
首先在idea里面新建一个module,随便选择一个文件夹,我这里在springMVC文件夹下面新建的。

在这里插入图片描述
然后选择Maven项目,然后Next。项目名字叫做wb_springmvc_controller,项目名字自己随便起。然后点击Finish
在这里插入图片描述
完成之后可以在idea左上角目录区看到新建的项目文件夹,文件夹左下角有个蓝色方块。
在这里插入图片描述
接下来给项目添加一些web支持。鼠标选中项目文件夹,然后右键
在这里插入图片描述
进去后选择Web Application。默认是最新版本的web,不需要更改,直接点OK

在这里插入图片描述
然后打开项目文件夹,可以看到有个web的文件夹,文件夹中间有个蓝色的点。
在这里插入图片描述
接下来首先在src/main/java目录下面新建一个包,我这里新建一个名叫wb/controller的包
在这里插入图片描述
打开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">

<!--    配置DispatchServlet-->
    <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:springmvc-servlet.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>

</web-app>

因为我们还没有springmvc-servlet.xml这个文件,这里配置好了会报红色错误,接下来在java目录下的resources文件夹下面新建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"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
    <!--    添加视图解析器-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
          id="internalResourceViewResolver">
        <!--        配置前缀-->
        <property name="prefix" value="/WEB-INF/jsp/"/>
        <!--        配置后缀-->
        <property name="suffix" value=".jsp"/>
    </bean>
    <bean name="/t2" class="wb.controller.ControllerTest1"/>
</beans>

这里有个要注意的地方,最后一个bean标签里面class是你自己的包目录。因为还没在该包下面创建ControllerTest1,接下来就创建一

package wb.controller;

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

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

public class ControllerTest1 implements Controller {

    public ModelAndView handleRequest(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse) throws Exception {
        ModelAndView mv = new ModelAndView();

        mv.addObject("msg","ControllerTest1");
        mv.setViewName("test");//跳转到哪里
        return mv;
    }
}

这时候项目目录结构如下图所示:
在这里插入图片描述
ControllerTest1.java这个文件里面,定义了一个变量叫做msg,他的值是ControllerTest1,并且定义了跳转的页面是test,接下来新建一下test.jsp文件。在web目录下面的WEB-INF目录下面新建一个jsp目录,然后在这个目录下面新建一个test.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>test</title>
</head>
<body>
${msg}
</body>
</html>

这里的msg就是刚才定义的变量名称。title标签里面随便填什么,默认的也可以。
完成上述操作后,需要去spring配置文件中注册请求的bean;其中name对应的请求路径,class对应处理请求的类。
接下来打开spring-servlet.xml文件,在里面加入如下代码

<bean name="/t2" class="wb.controller.ControllerTest1"/>

如图所示:
在这里插入图片描述
接下来可以配置一下首页【可以不配置,默认即可】
点开index.jsp文件

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>首页</title>
  </head>
  <body>
  这是首页!
  </body>
</html>

代码这一块就写完了,接下来需要检查一下项目的配置,idea的配置在导入新的包的时候会自动恢复初始状态。
配置过程参考下面的连接

springMVC项目配置以及tomcat配置【idea】
配置好了之后,点击idea右上角绿色的箭头
在这里插入图片描述
稍等一会儿,控制台没有报错的话会自动打开默认浏览器
在这里插入图片描述
接下来在后面加上/t2,如下图所示
在这里插入图片描述
配置Tomcat运行测试,因为之前配置的时候项目发布名设置为 / ,所以请求不用加项目名,OK

说明一下:
实现接口Controller定义控制器是较老的办法
缺点:一个控制器中只有一个方法,如果要多个方法则需要定义多个Controller;定义的方式比较麻烦;

以上是关于springMVC学习笔记之Controller控制器的主要内容,如果未能解决你的问题,请参考以下文章

springmvc学习笔记之简介

JavaWeb学习笔记之图解Struts和SpringMVC区别

SpringMVC框架学习笔记——controller配置汇总

SpringMVC学习笔记

SpringMVC学习笔记3:Controller和RestFul

学习SpringMVC之mvc:view-controller标签