基于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>