《SpringMVC从入门到放肆》八、SpringMVC注解式开发(基本配置)

上一篇我们结束了配置式开发,配置式开发目前在企业中用的并不是很多,大部分企业都在使用注解式开发,所以今天我们就来学习注解式开发。所谓SpringMVC注解式开发是指,处理器是基于注解的类的开发方式。对于每一个定义的处理器,无需在配置文件中逐个注册,只需在代码中通过对类与方法的注解,便可完成注册。

一、注册组件扫描器

这里说的组件即处理器,需要指定处理器所在的基本包。

 1<?xml version="1.0" encoding="UTF-8"?>
2<beans xmlns="http://www.springframework.org/schema/beans"
3    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4    xmlns:context="http://www.springframework.org/schema/context"
5    xmlns:aop="http://www.springframework.org/schema/aop"
6    xmlns:tx="http://www.springframework.org/schema/tx"
7    xmlns:mvc="http://www.springframework.org/schema/mvc"
8    xsi:schemaLocation="http://www.springframework.org/schema/beans
9        http://www.springframework.org/schema/beans/spring-beans.xsd
10        http://www.springframework.org/schema/context
11        http://www.springframework.org/schema/context/spring-context.xsd
12        http://www.springframework.org/schema/aop
13        http://www.springframework.org/schema/aop/spring-aop.xsd
14        http://www.springframework.org/schema/tx
15        http://www.springframework.org/schema/tx/spring-tx.xsd
16        http://www.springframework.org/schema/mvc
17        http://www.springframework.org/schema/mvc/spring-mvc.xsd"
>

18
19    <!-- 注册组件扫描器 -->
20    <context:component-scan base-package="cn.wechatbao.controller"></context:component-scan>
21
22</beans>

二、第一个注解式Demo

1:Controller

 1package cn.wechatbao.controller;
2
3import javax.servlet.http.HttpServletRequest;
4import javax.servlet.http.HttpServletResponse;
5
6import org.springframework.stereotype.Controller;
7import org.springframework.web.bind.annotation.RequestMapping;
8import org.springframework.web.servlet.ModelAndView;
9
10@Controller
11public class MyController {
12
13    @RequestMapping("/my.do")
14    public ModelAndView first(HttpServletRequest request,
15            HttpServletResponse response)
 throws Exception 
{
16        ModelAndView mv = new ModelAndView();
17        mv.addObject("message""第一个注解式开发程序");
18        mv.setViewName("/WEB-INF/jsp/welcome.jsp");
19        return new ModelAndView("");
20    }
21
22}

2:JSP页面(welcome.jsp)

 1<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
2<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
3<html>
4  <head>
5    <title>SpringMVC1</title>
6  </head>
7
8  <body>
9    ${message }
10  </body>
11</html>

3:完整的项目结构

441889-20190313113732529-1580736680.png

三、命名空间的配置

一般情况下,我们开发时,一个Controller类就是一个模块,而里面的所有处理器方法就是该模块的不同业务功能。这个时候,我们Controller与Controller之间就要用路径来区分开来。以表示不同的业务模块。这个时候,只需要在类上再加上@RequestMapping("/test")注解就OK了。

完整的类如下:

 1package cn.wechatbao.controller;
2
3import javax.servlet.http.HttpServletRequest;
4import javax.servlet.http.HttpServletResponse;
5
6import org.springframework.stereotype.Controller;
7import org.springframework.web.bind.annotation.RequestMapping;
8import org.springframework.web.servlet.ModelAndView;
9
10@Controller
11@RequestMapping("/test")
12public class MyController {
13
14    @RequestMapping("/first.do")
15    public ModelAndView first(HttpServletRequest request,
16            HttpServletResponse response)
 throws Exception 
{
17        ModelAndView mv = new ModelAndView();
18        mv.addObject("message""第一个注解式开发程序方法一");
19        mv.setViewName("/WEB-INF/jsp/welcome.jsp");
20        return mv;
21    }
22
23    @RequestMapping("/second.do")
24    public ModelAndView second(HttpServletRequest request,
25            HttpServletResponse response)
 throws Exception 
{
26        ModelAndView mv = new ModelAndView();
27        mv.addObject("message""第一个注解式开发程序方法二");
28        mv.setViewName("/WEB-INF/jsp/welcome.jsp");
29        return mv;
30    }
31
32}

四、请求中通配符的使用

在实际开发的过程中,我们可能会遇到请求中的方法开头或结尾是固定的,其它字符是可变的,比如:

1http://localhost:8080/SpringMVC/usermanager/user-add.do
2
3http://localhost:8080/SpringMVC/usermanager/user-edit.do

假设上面URL中usermanager是模块名(也就是我们说的命名空间),user-add.do和user-edit.do是具体的请求。但是添加和修改我们完全可以用一个处理器方法来解决。这个时候用通配符就简单多了。其实配置起来也特别简单,只需要在处理器方法上面的注解里加*就可以了。如下

1@RequestMapping("/user-*.do")
2public ModelAndView userAddOrUpdate(HttpServletRequest request,
3        HttpServletResponse response)
 throws Exception 
{
4    ModelAndView mv = new ModelAndView();
5    mv.addObject("message""用户的添加或修改功能");
6    mv.setViewName("/WEB-INF/jsp/welcome.jsp");
7    return mv;
8}


关于作者: 王俊南(Jonas)

昨夜寒蛩不住鸣。惊回千里梦,已三更。起来独自绕阶行。人悄悄,帘外月胧明。 白首为功名。旧山松竹老,阻归程。欲将心事付瑶琴。知音少,弦断有谁听。

热门文章