spring篇(二)
接上一篇spring集成web:集成Tomcat 写底层业务逻辑 配置这里学了一遍大致懂了先跳过
springMVC 配置流程1.导入坐标spring-webmvc 2.spring.xml开启组件扫描 3.配置web加载
<!--告诉springmvc .xml的配置文件位置-->
<servlet>
<servlet-name>DispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>DispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
编写modelandview 让浏览器访问写了注解的类
springmvc数据响应方式:1.页面跳转可以调回指定返回的页面 在modelandview和HttpServletRequest request域中可以储存数据 2.回写数据(字符串,对象,集合)字符串:可以传递HttpservletResponse response 调用 response.getWriter().print(“hello springmvc”);就可以在页面看到回写的字符串;也可以在方法上@ResponseBody注解告诉springmvc框架回写(对象可以导入jackson-core jackson-databind jackson-annotations jar坐标 用objectmapper.writevalueasString(对象)返回json数据…对象转json)
返回对象和集合:配置
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list><bean class="org.springframework.http.converter.cbor.MappingJackson2HttpMessageConverter"></bean></list>
</property>
</bean>
### 修改jar包的类,让视图帮忙转换配置见上配上这个就可以自动配置不用上面的代码 这里一直报500 日乐购 跳过先发育
获取请求数据 会根据方法中的传递的参数自动匹配 1.基本数据 2.pojo参数: 会根据方法中的传递的参数自动匹配 3.数组:传参传递数组 4.集合:写一个类封装集合和集合的泛型,在传递参数时带上会根据set后面自动匹配
@RequestParam value=请求映射值 required=请求报错开关 defaultvalue=不写请求默认值
自定义类型转换器
springMVC获取请求参数 获取请求头
用DispatcherServlet来加载spring.xml时 修改spring配置文件时容易出错重新配置Tomcat就可以解决 现在还搞不懂为什么 跳过 先发育后期来杠
浏览器传来的文件接收封装成对象并存起来
@RequestMapping(value = “/hello13”)
@ResponseBody
public void save13(MultipartFile upload) throws IOException {
System.out.println(upload);
//获得上传文件名称
String uploadOriginalFilename = upload.getOriginalFilename();
upload.transferTo(new File(“D:\uuuu\”+uploadOriginalFilename));
}
springMVC拦截器:interceptor 步骤:1.写HandlerInterceptor的实现接口覆写三个方法 2.配置springMVC核心文件 3.然后测试
<mvc:interceptors>
<mvc:interceptor>
<!--对那些目标方法执行拦截操作-->
<mvc:mapping path="/**"/>
<bean class="com.zhou.interceptor.Myinerceptor1"></bean>
</mvc:interceptor>
</mvc:interceptors>
接口覆写
public class Myinerceptor1 implements HandlerInterceptor {
//在拦截方法之前执行
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
System.out.println(“pre…”);
return true;
}
//在拦截方法执行之后,视图返回之前
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
System.out.println(“post…”);
}
//在流程执行完后执行
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
System.out.println(“after…”);
}
}
springmvc异常处理机制1.简单映射处理器,直接调用springmvc里面有de简单映射处理器
<bean class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<!--<property name="defaultErrorView" value="error"></property>-->
<property name="exceptionMappings">
<map>
<entry key="ClassCastException" value="error1"></entry>
<entry key="MyException" value="error2"></entry>
</map>
</property>
</bean>