同步操作将从 Java精选/Ebooks 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
注解本质是一个继承了Annotation的特殊接口,其具体实现类是JDK动态代理生成的代理类。
通过反射获取注解时,返回的也是Java运行时生成的动态代理对象。
通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法,该方法会从memberValues这个Map中查询出对应的值,而memberValues的来源是Java常量池。
有两种写法,一种是实现HandlerInterceptor接口,另外一种是继承适配器类,接着在接口方法当中,实现处理逻辑;然后在SpringMvc的配置文件中配置拦截器即可。
<!-- 配置SpringMvc的拦截器 -->
<mvc:interceptors>
<!-- 配置一个拦截器的Bean就可以了 默认是对所有请求都拦截 -->
<bean id="myInterceptor" class="com.yoodb.action.MyHandlerInterceptor"></bean>
<!-- 只针对部分请求拦截 -->
<mvc:interceptor>
<mvc:mapping path="/jingxuan.do" />
<bean class="com.yoodb.action.MyHandlerInterceptorAdapter" />
</mvc:interceptor>
</mvc:interceptors>
RESTful一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件。
RESTful主要用于客户端和服务器交互类的软件。
REST指的是一组架构约束条件和原则。
满足这些约束条件和原则的应用程序或设计就是RESTful。
RESTful结构清晰、符合标准、易于理解、扩展方便,所以正得到越来越多网站的采用。
Spring MVC的入口是一个servlet即前端控制器(DispatchServlet),而Struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)。
Spring MVC是基于方法开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或多例(建议单例),Struts2是基于类开发,传递参数是通过类的属性,只能设计为多例。
Struts采用值栈存储请求和响应的数据,通过OGNL存取数据,而Spring MVC通过参数解析器将request请求内容解析,并给方法形参赋值,将数据和视图封装成ModelAndView对象,最后将ModelAndView中的模型数据通过reques域传输到页面。其中Jsp视图解析器默认使用jstl。
@RequestMapping注解是一个用来处理请求地址映射的注解,可用于类或方法上。
用于类上,则表示类中的所有响应请求的方法都是以该地址作为父路径。
比如
@Controller
@RequestMapping("/test/")
public class TestController{
}
启动的是本地服务,默认端口是8080,通过浏览器访问的路径就是如下地址:
http://localhost:8080/test/
Spring MVC属于Spring FrameWork的后续产品,已经融合在Spring Web Flow中。
Spring框架提供了构建Web应用程序的全功能MVC模块。
使用Spring可插入MVC架构,从而在使用Spring进行WEB开发时,可以选择使用Spring中的Spring MVC框架或集成其他MVC开发框架,如Struts1(已基本淘汰),Struts2(老项目还在使用或已重构)等。
通过策略接口,Spring框架是高度可配置的且包含多种视图技术,如JavaServer Pages(JSP)技术、Velocity、Tiles、iText和POI等。
Spring MVC 框架并不清楚或限制使用哪种视图,所以不会强迫开发者只使用JSP技术。
Spring MVC分离了控制器、模型对象、过滤器以及处理程序对象的角色,这种分离让它们更容易进行定制。
请求转发是浏览器发出一次请求,获取一次响应,而重定向是浏览器发出2次请求,获取2次请求。
请求转发是浏览器地址栏未发生变化,是第1次发出的请求,而重定向是浏览器地址栏发生变化,是第2次发出的请求。
请求转发称为服务器内跳转,重定向称为服务器外跳转。
请求转发是可以获取到用户提交请求中的数据,而重定向是不可以获取到用户提交请求中的数据,但可以获取到第2次由浏览器自动发出的请求中携带的数据。
请求转发是可以将请求转发到WEB-INF目录下的(内部)资源,而重定向是不可以将请求转发到WEB-INF目录下的资源。
@RequestMapping注解中加上method=RequestMethod.GET参数就可以实现拦截get方式请求。
@RequestMapping("jingxuan/login")
public String login(){
}
在返回值前面加“forward:”参数,可以实现转发。
"forward:getName.do?name=Java精选"
在返回值前面加“redirect:”参数,可以实现重定向。
"redirect:https://blog.yoodb.com"
### 题10:[如何开启注解处理器和适配器?](/docs/Spring%20MVC/2022年最全Spring%20MVC面试题附答案解析大汇总.md#题10如何开启注解处理器和适配器)<br/>
在配置文件中(一般命名为springmvc.xml 文件)通过开启配置:
```xml
<mvc:annotation-driven>
来实现注解处理器和适配器的开启。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。