啥是SpringMVC 程序?SpringMVC框架又有什么优势?
1.基于 MVC 架构
基于 MVC 架构,功能分工明确。解耦合,
2.容易理解,上手快;使用简单。
就可以开发一个注解的 SpringMVC 项目,SpringMVC 也是轻量级的,jar 很小。不依赖的
特定的接口和类。
3. 作 为 Spring 框 架 一 部 分 , 能 够 使 用 Spring 的 IoC 和 Aop 。 方 便 整 合
Strtus,MyBatis,Hiberate,JPA 等其他框架。
4.SpringMVC 强化注解的使用,在控制器,Service,Dao 都可以使用注解。方便灵活。
使用@Controller 创建处理器对象,@Service 创建业务对象,@Autowired 或者@Resource
在控制器类中注入 Service, Service 类中注入 Dao。
5. 第一个注解的 SpringMVC 程序
所谓 SpringMVC 的注解式开发是指,在代码中通过对类与方法的注解,便可完成处理器
在 springmvc 容器的注册。注解式开发是重点
图为SpringMVC的一个较完整的流程图,实线表示SpringMVC框架提供的技术,不需要开发者实现,虚线表示需要开发者实现。
简要分析执行流程
DispatcherServlet表示前置控制器,是整个SpringMVC的控制中心。用户发出请求,DispatcherServlet接收请求并拦截请求。
我们假设请求的url为 :
如上url拆分成三部分:
http://localhost:8080服务器域名
SpringMVC部署在服务器上的web站点
hello表示控制器
通过分析,如上url表示为:请求位于服务器localhost:8080上的SpringMVC站点的hello控制器。
HandlerMapping为处理器映射。DispatcherServlet调用HandlerMapping,HandlerMapping根据请求url查找Handler。
HandlerExecution表示具体的Handler,其主要作用是根据url查找控制器,如上url被查找控制器为:hello。
HandlerExecution将解析后的信息传递给DispatcherServlet,如解析控制器映射等。
HandlerAdapter表示处理器适配器,其按照特定的规则去执行Handler。
Handler让具体的Controller执行。
Controller将具体的执行信息返回给HandlerAdapter,如ModelAndView。
HandlerAdapter将视图逻辑名或模型传递给DispatcherServlet。
DispatcherServlet调用视图解析器(ViewResolver)来解析HandlerAdapter传递的逻辑视图名。
视图解析器将解析的逻辑视图名传给DispatcherServlet。
DispatcherServlet根据视图解析器解析的视图结果,调用具体的视图。
最终视图呈现给用户。
在这里先听一遍原理,不理解没有关系,我们马上来写一个对应的代码实现大家就明白了,如果不明白,那就写10遍,没有笨人,只有懒人!
SpringMVC是一个Java Web应用程序框架,它是基于Spring框架的一个模块,是一个MVC框架。它使用了面向接口编程和依赖注入的思想,使得开发人员不用关心底层的实现,只需关注业务逻辑的实现。SpringMVC采用了前端控制器模式,将请求转发给不同的控制器来处理。在开发速度、可维护性和安全性方面,SpringMVC具有以下优点:
1.开发速度:SpringMVC框架提供了许多现成的组件和接口,使得开发人员可以快速地开发Web应用程序。同时,SpringMVC采用了注解方式配置控制器和视图,使得代码更加简洁易懂,开发速度更快。
2.可维护性:SpringMVC框架采用了依赖注入和面向接口编程,使得代码解耦合,易于维护和扩展。同时,SpringMVC提供了许多AOP(面向切面编程)的功能,使得开发人员可以将一些通用的业务逻辑抽象出来,使得代码更加简洁易懂。
3.安全性:SpringMVC框架提供了许多安全性方面的功能,例如防止CSRF攻击、防止SQL注入攻击等。同时,SpringMVC采用了多种认证和授权方式,使得应用更加安全可靠。
以下是如何在SpringMVC项目中配置扫描器和视图解析器的步骤:
1.在SpringMVC配置文件(通常为springMvc.xml)中添加以下配置:
<!-- 配置扫描器:配置的是控制器的包名 -->
<context:component-scan base-package="com.qfedu.controller"></context:component-scan>
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"
id="internalResourceViewResolver">
<!-- 前缀 -->
<property name="prefix" value="/WEB-INF/jsp/"></property>
<!--后缀 -->
<property name="suffix" value=".jsp"></property>
</bean>
2.在上述配置中,base-package属性指定了需要扫描的控制器包名,视图解析器配置了JSP页面的位置和后缀。
3.在控制器中,使用@Controller注解来标注一个类作为控制器,并使用@RequestMapping注解来指定控制器的访问路径。例如:
@Controller
@RequestMapping("/user")
public class UserController {
@RequestMapping("/login")
public String login() {
return "login"; // 返回login.jsp页面
}
}
4.在上述代码中,@RequestMapping("/user")指定了控制器的根路径为/user,@RequestMapping("/login")指定了login方法的路径为/user/login,login方法返回login.jsp页面。
5.最后,在Web应用程序的Web.xml中配置DispatcherServlet,并指定SpringMVC配置文件的位置和映射路径。例如:
<servlet>
<servlet-name>springMvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/springMvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springMvc</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
6.在上述代码中,DispatcherServlet是SpringMVC的核心组件,它会将所有的请求转发给对应的控制器处理。其中,contextConfigLocation参数指定了SpringMVC配置文件的位置,url-pattern指定了DispatcherServlet的映射路径。
现在您已经知道了什么是SpringMVC框架和它的优点,也知道了如何配置和使用SpringMVC框架。祝您在使用SpringMVC框架开发Web应用程序时,能够更加得心应手。