spring_Mvc总结

入门案例的执行过程分析

  1. 入门案例的执行

     1. 当启动Tomcat服务器的时候,因为配置了load-on-startup标签,所以会创建DispatcherServlet对象,
     	就会加载springmvc.xml配置文件
     2. 开启了注解扫描,那么HelloController对象就会被创建
     3. 从index.jsp发送请求,请求会先到达DispatcherServlet核心控制器,根据配置@RequestMapping注解
     找到执行的具体方法
     4. 根据执行方法的返回值,再根据配置的视图解析器,去指定的目录下查找指定名称的JSP文件
     5. Tomcat服务器渲染页面,做出响应
    
  2. 入门案例中的组件

     1. 前端控制器(DispatcherServlet)
     2. 处理器映射器(HandlerMapping)
     3. 处理器(Handler)
     4.  处理器适配器(HandlAdapter)
     5.  视图解析器(View Resolver)
     6.  视图(View)
    
  3. RequestMapping注解

SpringMVC框架提供的转发和重定向

1、 forward请求转发

	使用forward关键字进行请求转发*
	· "forward:转发的JSP路径",不走视图解析器了,所以需要编写完整的路径* 
		@RequestMapping("/delete")
		 public String delete() throws Exception {
		 	System.out.println("delete方法执行了...");
		 	// return "forward:/WEB-INF/pages/success.jsp";
		 	return "forward:/user/findAll";

2、 redirect重定向

return “redirect:/add.jsp”;
// return "redirect:/user/findAll

ResponseBody响应json数据

 DispatcherServlet会拦截到所有的资源,导致一个问题就是静态资源(img、css、js)也会被拦截到,从而不能被使			用。解决问题就是需要配置静态资源不进行拦截,在springmvc.xml配置文件添加如下配置:
 1. location元素表示webapp目录下的包下的所有文件
 2.  mapping元素表示以/static开头的所有请求路径,如/static/a 或者/static/a/b
 	<!-- 设置静态资源不过滤 -->
 	<mvc:resources location="/css/" mapping="/css/**"/> <!-- 样式 -->

使用@RequestBody获取请求体

1、 使用@RequestBody注解把json的字符串转换成JavaBean的对象
 2、使用@ResponseBody注解把JavaBean对象转换成json字符串,直接响应
 3、 json字符串和JavaBean对象互相转换的过程中,需要使用jackson的jar包

当上传文件是需要配置文件解析器对象

	<!-- 配置文件解析器对象,要求id名称必须是multipartResolver -->
		<bean id="multipartResolver"class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
		<property name="maxUploadSize" value="10485760"/></bean>

springMvc拦截器

##拦截器概述
1. SpringMVC框架中的拦截器用于对处理器进行预处理和后处理的技术。
2. 可以定义拦截器链,连接器链就是将拦截器按着一定的顺序结成一条链,在访问被拦截的方法时,拦截器链
中的拦截器会按着定义的顺序执行。
3.拦截器和过滤器的功能比较类似,有区别
		· 过滤器是Servlet规范的一部分,任何框架都可以使用过滤器技术。
		· 拦截器是SpringMVC框架独有的
		 过滤器配置了/*,可以拦截任何资源。
		 拦截器只会对控制器中的方法进行拦截。
3. 拦截器也是AOP思想的一种实现方式
4.  想要自定义拦截器,需要实现HandlerInterceptor接口.

在springMvc.xml中配置拦截器

<mvc:interceptors>
	<mvc:interceptor>
		<!-- 哪些方法进行拦截 -->
		<mvc:mapping path="/user/*"/>
		<!-- 哪些方法不进行拦截
		<mvc:exclude-mapping path=""/>--><!-- 注册拦截器对象 -->
		<bean class="cn.itcast.demo1.MyInterceptor1"/>
		</mvc:interceptor>
	</mvc:interceptors>
根据引用、[2]和的内容,"Artifact spring_mvc_helloworld:war exploded: Error during artifact deployment. See server log for details."是在启动Tomcat之后出现的错误。"war exploded"表示部署的是一个war包,"Error during artifact deployment"表示在部署该war包时发生了错误。具体的错误信息可以在服务器日志中查看。 解决这个问题的方法有以下几步: 1. 首先,打开服务器日志,查看具体的错误信息。根据引用中的描述,服务器日志中应该有关于错误的详细信息。 2. 根据错误信息,定位问题所在。可能的原因包括:缺少依赖、配置错误、冲突的版本或其他部署相关的问题。 3. 检查项目的配置文件,确保相关的依赖项正确配置,并且没有冲突的版本。 4. 确保部署环境的配置正确,并且与项目的配置相匹配。 5. 如果找不到具体的错误信息,可以尝试重新构建和部署项目,以确保项目的正确性。 6. 如果问题仍然存在,可以尝试在相关的开发社区或论坛上寻求帮助,向其他开发者咨询他们是否遇到过类似的问题,并获取他们的解决方案。 总结:"Artifact spring_mvc_helloworld:war exploded: Error during artifact deployment. See server log for details."是在部署war包时出现的错误,具体的解决方法包括查看服务器日志、定位问题、检查项目和环境的配置、重新构建和部署项目,并寻求帮助。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [Artifact 项目:war exploded: Error during artifact deployment. See server log for details.解决办法...](https://blog.csdn.net/AbbyZzzzz/article/details/127274092)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [InteliJ IDEA artifact的作用Artifact -war exploded- Error during artifact deployment_artifact吧](https://download.csdn.net/download/lj_70596/14044317)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值