SpringMVC-Controller配置详解(二)

1.通过控制器的实现方式

SpringMVC中,对于Controller的配置方式有很多种;

Controller是一个接口,在org.springframework.web.servlet.mvc包下,接口中只有一个方法;

我们需要一个参数 ModelAndView 模型视图解析器.来解析我们的视图并作出处理.

在springMVC-servlet.xml的配置文件中需要加入:

处理映射器

  <!--处理映射器-->
    <bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>

处理适配器

   <!--处理适配器-->
    <bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/>

视图解析器

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

controller编写

public class helloController {
    public ModelAndView hello(){

        ModelAndView mv = new ModelAndView();
        mv.addObject("msg","hello,springmvc");
        mv.setViewName("hello");

           return mv;
    }

}

2.通过注解的实现方式

我们需要在springmvc-servlet.xml的配置文件中加入:

注解扫描

Spring可以使用扫描机制来找到应用程序中所有基于注解的控制器类,为了保证Spring能找到你的控制器,需要在配置文件中声明组件扫描。

    <!--扫描指定包下的注解,让指定的类能够被IOC容器管理-->
    <context:component-scan base-package="org.west.controller"/>

静态资源过滤

    <!--静态资源过滤-->
    <mvc:default-servlet-handler/>

支持注解驱动

    <!--annotation-driven:支持MVC注解驱动 -->
    <mvc:annotation-driven/>

视图解析器

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

我们controller的实现需要经过这三层的处理(模型,视图,控制器)配置缺一不可.

controller的编写

@Controller
public class HelloWorldController {

    //请求映射("路径")
    @RequestMapping("/hello")
    public String hi(Model model){
        model.addAttribute("msg","Hello,SpringMVC");
        System.out.println("进入HELLO");
        return "hello"; //WEB-INF/jsp/hello.jsp
    }

}

注解Controller类似于声明Spring类的实例,是一个控制器.

不同的请求都可以指向一个视图,但是页面结果的结果是不一样的,视图是被复用的,而控制器与视图之间是弱偶合的关系。

3.Restful风格

Restful是一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

通俗的来讲在我的理解来说Restful风格的传参不需要在像传统的请求一样通过"?"来传参了,我们只需要"/"就可以了.

传统方式:   https://........add?p1=1&p2=2

Restful风格: https://........add/p1/p2

接下来编写一个controller看看吧!

controller编写

@Controller
public class HelloWorldController {

    //请求映射("路径")
    @RequestMapping("/hello/{p1}/{p2}")
    public String hi(@PathVariable int p1,@PathVariable int p2, Model model){
        int sum=p1+p2;
        model.addAttribute("msg",sum);
        return "hello"; //WEB-INF/jsp/hello.jsp
    }

}

注意:  我们需要一个注解PathVariable把我们的值映射上去.

我们传的传输类型要对应一致,否则访问不到对应的请求方法.

使用路径变量的好处:使路径变得更加简洁;获得参数更加方便,框架会自动进行类型转换。通过路径变量的类型可以约束访问参数,如果类型不一样,则访问不到对应的请求方法.

原文地址:https://www.cnblogs.com/xiaoqiqistudy/p/11320288.html

时间: 2024-08-05 05:08:28

SpringMVC-Controller配置详解(二)的相关文章

VMware 的网络配置详解(二)

如果你已经看完 VMware 的网络配置详解(一)  的话,现在继续来深入理解: 首先在 windows 系统下 使用cmd 程序, 通过使用 ping 命令,ping 一个 可以连接的 外网  主机名 或者 IP 地址: 然后在  fedora15 系统上 ping 同样的主机名: 应该是和网络设置的 类型有关: 我的网卡都是设置 Host-only 的方式: 所以为了使 fedora15 能够 ping 的通主机地址 ,我们来设置下张新的 网卡,但是不使用 Host-only 方式,使用 N

SpringMVC实战(三)-Controller配置详解

本篇将介绍SpringMVC中如何为Controller配置处理URL路径.请求参数等等. RequestMapping注解 作用: Spring MVC 使用 @RequestMapping 注解为控制器指定可以处理哪些 URL 请求. 在控制器的类定义及方法定义处都可标注@RequestMapping 类定义处:提供初步的请求映射信息.相对于 WEB 应用的根目录 方法处:提供进一步的细分映射信息.相对于类定义处的 URL.若类定义处未标注 @RequestMapping,则方法处标记的 U

spring+springMVC+JPA配置详解

SpringMVC是越来越火,自己也弄一个Spring+SpringMVC+JPA的简单框架. 1.搭建环境. 1)下载Spring3.1.2的发布包:Hibernate4.1.7的发布包(没有使用hibernate的API,只是使用了它对JPA的实现):下载 BoneCP 连接池框架及其依赖的jar,下载缓存框架ehcache,全部所用到的jar包如下: ? antlr-2.7.7.jar bonecp-0.7.1.RELEASE.jar bonecp-provider-0.7.1-rc2.j

Apache2 httpd.conf 配置详解 (二)

DocumentRoot "/usr/local/apache-2.2.6/htdocs" #设置WEB文档根目录的默认属性 <Directory />     Options FollowSymLinks     AllowOverride None     Order deny,allow     Deny from all </Directory> #设置DocumentRoot指定目录的属性 <Directory "/usr/local/

logback配置详解(二)

<appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的组件. <appender>有两个必要属性name和class.name指定appender名称,class指定appender的全限定名. 1.ConsoleAppender:(默认输出到System.out) 把日志添加到控制台,有以下子节点: <encoder>:对日志进行格式化.(具体参数稍后讲解 ) &l

logback -- 配置详解 -- 三 -- &lt;encoder&gt;

附: logback.xml实例 logback -- 配置详解 -- 一 -- <configuration>及子节点 logback -- 配置详解 -- 二 -- <appender> logback -- 配置详解 -- 三 -- <encoder> logback -- 配置详解 -- 四 -- <filter> -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --

PHP100-第二讲 PHP5.4 Apache Mysql 搭配与多站点配置详解

PHP5.4环境搭配基本流程 关于新版的PHP环境的一个搭配过程,与之前的 php5.3.x 没有太大差异, 这次使用的环境搭配组建包括: httpd-2.2.21-win32-x86 mysql-5.5.18-win32 php-5.4.0RC4-Win32-VC9-x86 //================= LoadModule php5_module "c:/www/php54/php5apache2_2.dll" AddType application/x-httpd-ph

logback logback.xml常用配置详解(二)&lt;appender&gt;

logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的组件. <appender>有两个必要属性name和class.name指定appender名称,class指定appender的全限定名. 1.ConsoleAppender: 把日志添加到控制台,有以下子节点: <encoder>:对日志进行格式化.(具体参数稍后讲解 ) &

logback 常用配置详解(二) &lt;appender&gt;

logback 常用配置详解(二) <appender> <appender>: <appender>是<configuration>的子节点,是负责写日志的组件. <appender>有两个必要属性name和class.name指定appender名称,class指定appender的全限定名. 1.ConsoleAppender: 把日志添加到控制台,有以下子节点: <encoder>:对日志进行格式化.(具体参数稍后讲解 ) &