Spring MVC 示例-注解; RESTful 风格

时间:2022-12-10 21:40:17

基于url模板参数变量获取方式!

 

 http://localhost:8080/item/start.do?name=zhangsan

--》(RESTful 风格:把请求参数变成请求路径的一种风格。)

http://localhost:8080/item/start/zhangsan.do

 

method:

RequestMapping("/start/{name}") //定义模板

public String start(@PathVaribale String name){

// (为了支持release模式编译,做如右改变) -->public String start(@PathVaribale("name") String name){ 

//因为release模式编译 变量名name将不可见。(也就是name变量被改变了。?)

      System.out.println(name);

return “start”;

}

 

示例控制器:

a

package test.controller;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
@RequestMapping("/test")
public class TestController {
 /**
  * @param request
  * @return
  */
 @RequestMapping("/start")
 public String start(HttpServletRequest request){
  String name = request.getParameter("name");
  System.out.println("\n\n"+name);
  return "start";
 }
 
 /**
  * restful风格
  *
  * java文件编译有两种模式,debug,release。使用javac编译时是以release模式编译的。
  * debug模式:相对于release模式,debug有更多的调试。变量名会被保留。而release模式变量名会被其他字符代替,所以变量名是不可见的。
  *
  * @param name
  * @return
  */
 @RequestMapping("/start/{name}")
 /**
  * @PathVariable的变量名name必须与@RequestMapping里面的{name}名称一样,
  * 如:@RequestMapping("/start/{name}");public String start2(@PathVariable String name){return null}。
  * 当访问本方法时,会将{name}的值赋给name。
  *
  * 所以我们做一点更改:将@PathVariable("name") String name,也就是把{name}的值赋给"name",
  * 这时@PathVariable的变量名叫什么就无所谓了。
  */
 public String start2(@PathVariable("name") String name1){
  System.out.println("\n"+name1);
  return "start";
 }
}

 

访问方式变化:

原先的带参数的访问url:http://localhost:8080/@springMVC/test/start.do?name=zhangsan

restful方式访问         url:http://localhost:8080/@springMVC/test/start/tzhangsan.do



web.xml配置与Spring MVC 示例-非注解一样。

Spring上下文配置与 Spring MVC 示例-非注解 不一样的是增加了注解组件扫描:

如下:<!-- 组件扫描:
            当我加载配置文件时,到我们指定的包下扫描(读取)java文件,寻找标注注解的地方(接口,类,方法或者其他),进行完成初始化。
            -->
           <context:component-scan base-package="test.controller"></context:component-scan>