1.DispatcherServlet
按照上面的分析,有了web框架后,浏览器给服务器的请求,服务器会交给框架。从语法来讲,可以接收服务器请求的组件有Servlet、Filter,总的来说,框架需要一个请求入口
2.请求映射的配置
暂时有两种规范:
①在xml文件中配置映射关系
在web.xml中配置DispatcherServlet时,通过设置Servlet的参数指定框架的配置文件名称(默认要求配置文件必须放在src目录下)
我们规定xml中的映射关系配置如下(举例)
②在注解中配置映射关系
框架自定义@RequestMapping
该注解作用在controller的方法上,表示请求与方法的映射关系
例如是等同的
package web.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
//配置请求映射关系,指定哪个请求对应哪个controller的方法,作用在哪个方法上,就表示映射哪个方法
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface RequestMapping {
public String value();
}
之前可以从xml文件中获得请求映射关系,现在需要从注解中获得映射关系,要想找到注解,就需要找到方法,需要找到controller类。
为了更方便地找到controller类
①在web.xml文件中,指定寻找controller的基本包位置
②找到的controller(包中)或许有一些类不做请求响应工作,为了更好地找到我们需要的类,框架自定义一个@Controller,该注解作用于controller类上,具有该注解的controller类才会通过反射寻找RequestMapping。
package web.annotation;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
/**
* 作用在controller类上,表示这个类中有方法可以实现请求,可以扫描
*/
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Controller {
}
**