SpringMVC 注解方式【重点】
第一步:配置前端控制器 以及全局编码
<filter>
<filter-name>myfillter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>myfillter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
第二步:配置注解的映射器和适配器
方案一:
观察接口HandlerMapping的实现类。
image.png
RequestMappingHandlerMapping
RequestMappingHandlerAdapter
<!-- 注解映射器 -->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean>
<!-- 注解的适配器-->
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean>
方案二:推荐
替换上面配置的第二种方式:
替代注解映射器和注解适配器,同时具备更多的能力,推荐使用。
<mvc:annotation-driven></mvc:annotation-driven>
第三步:配置视图解析器
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"></bean>
第四步:
开发注解的Controller
编写自定义的Action,使用注解不需要实现接口
@Controller声明在类上,来源于@Component
方法自定义,通过@RequestMapping指定请求的路径
@RequestMapping请求映射:
-
加在类上[可选]:给模块加跟路径
image.png
2.加在方法上:方法请求路径
image.png
\
image.png@Controller
public class FirstController {
@RequestMapping("first.do")
public ModelAndView goToFirstPage(HttpServletRequest httpServletRequest){
ModelAndView modelAndView=new ModelAndView();
modelAndView.addObject("firstInfo","这是第一个页面");
modelAndView.setViewName("/first.jsp");
return modelAndView;
}
}
第五步:配置注解扫描
开启注解扫描:
<context:component-scan 多个扫描路径可以用逗号分割
注解需要扫描
<context:component-scan base-package="com.zyh.controller"></context:component-scan>
扫描的目的就是容器帮助我们创建对象。
第六步: 编写 jsp
image.png第七步:测试:
当我们在页面输入 http://localhost:8080/first.do 页面转发到first.jsp
注解方式的优点是:
可以每个方法都加入一个url和方法对应,也就是这种注解的方式,一个模块一个类就可以了。在类中可以有多个方法。