关于spring MVC机制,示例解读

spring MVC分离了控制器、模型对象。工作过程如下:

1.Spring mvc请所有的请求都提交给DispatcherServlet,它会委托应用系统的其他模块负责负责对请求进行真正的处理工作。 
2.DispatcherServlet查询一个或多个HandlerMapping,找到处理请求的Controller 。
3.DispatcherServlet请请求提交到目标Controller 。
4.Controller进行业务逻辑处理后,会返回一个ModelAndView 。
5.Dispathcher查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象。 
6.视图对象负责渲染返回给客户端。 

springMVC例子解读:

HelloWorldController代码注释如下:

package cn.training.controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import cn.training.UserBean.UserBean;
import cn.training.service.*;
//找到名为HelloWorldController这个类
@Controller("HelloWorldController")
//访问路径
@RequestMapping("/")
//HelloWorldController类
public class HelloWorldController {
   //自动注入标签
    @Autowired
    //声明一个Helloservice变量
    Helloservice helloservice;
    //以GET方式请求访问路径
    @RequestMapping(value = "/", method = RequestMethod.GET)
    //带一个参数的initLogin( )方法
    public String initLogin(Model model) {
     //转到helloWorld。jsp页面
        return "helloWorld";
    }
    //以POST方式访问路径
    @RequestMapping(value="/init",  method=RequestMethod.POST)
    //带两个参数的initLogin2( )方法
    public String initLogin2(UserBean userbean,Model model) {
      //声明一个UserBean变量,并调用Helloservice类中的searchservice()方法,将得到的值赋给userbean1
      UserBean userbean1= helloservice.searchservice(userbean);
      //将userbean更改设置为userbean1
       model.addAttribute("userbean",userbean1);
       //跳转到login,jsp页面
       return "login";
        
    }
}

Helloservice页面注释如下:

package cn.training.service;
import org.springframework.stereotype.Service;
import cn.training.UserBean.UserBean;
//@Service用于标注业务层组件
@Service
//Helloservice类
public class Helloservice {
 public UserBean searchservice(UserBean fim){
 //将fim的userid设置为test
 fim.setUserId("test");
 
 return fim;
}
}

UserBean.java、helloWorld.jsp、login.jsp、web.xml、springMVC-servlet.xml等页面内容省略。

注意事项:

当创建一个 Controller ,需直接或间接地实现 org.springframework.web.servlet.mvc.Controller 接口。

@Autowired 注释,它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。

@RequestMapping     RequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。RequestMapping注解有六个属性,下面我们把它分成三类进行说明。

1. value method

value     指定请求的实际地址,指定的地址可以是URI Template 模式;

method  指定请求的method类型, GETPOSTPUTDELETE等; 

2. consumesproduces

consumes 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;

produces:    指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;

3. paramsheaders

params 指定request中必须包含某些参数值是,才让该方法处理。

headers 指定request中必须包含某些指定的header值,才能让该方法处理请求。

在这样的项目里,涉及的页面比较多,应注意名称的规范性与一致性,以避免低级的错误。

完整代码地址:https://git.oschina.net/lcxx/springMVC01.git

    

你可能感兴趣的:(关于spring MVC机制,示例解读)