标签:
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类型, GET、POST、PUT、DELETE等;
2. consumes,produces;
consumes: 指定处理请求的提交内容类型(Content-Type),例如application/json, text/html;
produces: 指定返回的内容类型,仅当request请求头中的(Accept)类型中包含该指定类型才返回;
3. params,headers;
params: 指定request中必须包含某些参数值是,才让该方法处理。
headers: 指定request中必须包含某些指定的header值,才能让该方法处理请求。
${userbean.userId}表示取出userbean中的userId。
<form action="init" method="POST"> <input name="jsd" type="text"/> <button name="submit" type="submit">login</button> </form>
通过这段代码。我知道了XML文件中有很多组建和控件可以使用,例如这儿就用到了文本框和提交按钮。
在这样的项目里,涉及的页面比较多,应注意名称的规范性与一致性,以避免低级的错误。
标签:
原文地址:http://my.oschina.net/u/2411774/blog/478106