首先我们的界面在返回的时候回根据我们的配置信息进行路径的查找 然后会识别我们的控制器返回的字符串(其实就是界面的名字)而找到界面的信息,eg:如果我们返回的是success那么就会去找我们的WEB-INF下的对应的success.jsp或者success.html界面
控制层:
/** * 请求参数绑定 */ @Controller @RequestMapping(value = "/param") public class paramController { @RequestMapping("/testParams") public String testParam(){ System.out.println("执行了....."); return "success"; } }
然后请求返回的就是我们的success界面
注解:
要在类上加@Controller 注解是等于把类交给ioc容器进行管理 并且让我们的配置可以通过这个@Controller注解识别到这个类
java的注解长得类似于python的装饰器但是作用是不同的,因为java的注解只是为了声明这个方法或者类具有这个功能,功能是提前定义好的或者自带的,但是要手动加上,而python的装饰器的作用是自己定义那些不改变函数的方法的形式而增加的功能
请求注解:RequestMapping
建立请求url和处理方法之间的对应关系
当我们的请求进来的时候要进行url的定义就是通过RequestMapping,并且RequestMapping 可以多级分发,java的url是一级一级的去找 而不是直接定义完整的url
像上面的完整的url就是/params/testParams
RequestMapping 的参数:
path 接受定义的url
value 和path的作用相同,都是接受url两者用哪个都可以
1. path 指定请求路径的url 2. value 和path属性一样 3. mthod 指定该方法的请求方式 4. params 指定限制请求参数的条件 5. headers 发送的请求中必须包含的请求头
path/value属性
如果RequestMapping中只有这一个属性可以省略不写
@RequestMapping("/testParams") //可以省略path/value不写 public String testParam(){ System.out.println("执行了....."); return "success"; }
method属性
声明请求方式
@RequestMapping(value = "/param",method = RequestMethod.GET)
上面是声明请求方式只能为GET方法 其余方法不可以使用
如果想要定义多个请求方式可以如下:
metgod = {请求方式}
@RequestMapping(value = "/param",method = {RequestMethod.GET,RequestMethod.POST})
上面就是定义/params这个url使用的时候可以是GET也可以是POST
params:请求参数
如果定义了params那么请求的时候必须携带这个参数
@Controller
@RequestMapping(value = "/param",method = {RequestMethod.GET,RequestMethod.POST}, params={"username"})
上面是规定请求的时候必须携带params中的username的参数 否则就不允许
默认参数:
@RequestMapping(path = "/hell",method={RequestMethod.GET, RequestMethod.POST},params={"username=hehe"}) // params可以规定死的参数
规定请求参数必须是hehe否则就报错
headers:
规定请求头,
@RequestMapping(path = "/hell",method={RequestMethod.GET, RequestMethod.POST},params={"username=hehe"},headers = {"Accept"})
规定我们的请求必须要携带这个请求头