一 :
===================================================================================================================================================== (一) 框架搭建 第一步: 导入依赖 第二步: 书写主配置文件 web.xml springmvc.xml 第三步: 启动Tomcat测试 -------------------------------------------------------- mvc层 专注控制层 规范在java先建立 controller 包 -------------------------------------------------------- 1/ 建立jsp 测试 题外话: 虚拟路径--为什么可以找到对应的页面?-->过滤器:DispatcherServlet --->核心控制器(负责派发到相应的数据处理器) ==Servlet 2/ 配置web.xml a/--------------------------------------------------- --> 这里配置完成了springmvc的核心类配置 :springmvc还需配置 核心配置文件 --> DispatcherServlet 有三个参数 这里主要是 contextConfigLocation 用来指定上下文配置 --> 如果控制跳转的xml的配置文件在WEB-INF下,并且命名规范遵循 [servletName]-servlet.xml ,则可以不用配置contextConfigLocation属性 --------配置contextConfigLocation及其.xml文件 保证容器启动时加载; ____________________________________________________________________________________________________________________________________________ <servlet> <servlet-name>spr_mvc</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:spr_mvc-servlet.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spr_mvc</servlet-name> <url-pattern>/</url-pattern> ------------>这里不要写/*,这是一种错误的url写法 </servlet-mapping> ______________________________________________________________________________________________________________________________________ 3/ 配置spr_mvc-servlet.xml springMVC上下文核心配置文件 (通俗的将就是控制跳转的文件 ,即 我们所提到的Servlet ) a/---------------------------------------------------- --->导入所需要的头文件 包括mvc context 等 所需要的 --->开启注解扫描 指定到需要扫描的包 ----| <context:component-scan base-package="cn.xsh.controller"></context:component-scan> --->开启springMVC特有的注解驱动 ----| <mvc:annotation-driven/> 4/视图解析器 ---将url分成前缀和后缀 ____________________________________________________________________________________________________ <!--视图解析器 视图解析器只对转发有用,对重定向无效.--> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/"></property> <property name="suffix" value=".jsp"></property> </bean> ____________________________________________________________________________________________________ 至此完成简单的springMVC的基础建设 !!!!!!!!!! ===================================================================================================================================================== (二) 主要注解笔记 1/ @Controller 标注在类的上边后,该类转化为Servlet的实现类, 这个注解的优势在于 标注后不需要再像Servlet那样去继承父类 ,同时不需要再web.xml中配置相关的参数等 2/@RequestMapping ------ (注意: 如果在传入对象的时候,前端的标签命名应遵守和实体类属性命名一直,保证顺利传值)------ 参数--------------值:及其作用 value ---------> 虚拟路径的值,如果用{}包起来后,其值可以是多个,值和值之间用逗号隔开,值用双引号包起来 -->这个位置最好是不带任何尾缀,这样当修改web.xml的Servlet中pattern时 可以是*.任意, 这样访问的时候可以通过拼接..便于日后修改程序 method ---------> 提交的方式:有get和post 3/@Scope 默认是singleton 这个注解是用来修饰类的 但是项目是发布到Tomcat上,一般会创建一个多例的模式 @Scope("prototype") 因为如果是单例的话,当涉及到两个以上的多用户访问的时候,只有等第一个用户访问完毕后后续用户才可使用,影响用户体验和工作,而多 例的时候多用户访问创建多个对象,用户之间使用互不干扰,当然涉及到的高并发此处未做相关查询..... 4/@RequestParam(name="",defaultValue = "" ,required = true) 当前台属性和类属性不一致的时候 做处理 空值的时候可以获取默认值 参数 值:及其作用 name 前台传过来的数据的Key defaulValue 默认值 required true/false true的时候是该参数必须传入,未传入则返回异常 ==================================================================================================================================================== ( 三 ) 视图的重定向和转发 1/ 在方法return的地方 ---> return "forward : 视图名 "; 转发 适用于处理业务逻辑 前端url不变 2/ 在方法return的地方 ---> return "redirect: 视图名 "; 重定向 适用于表单提交 防止重复提交 url会改变 相对应传统的Servlet重定向需要加工程名,在springmvc中直接省略 =================================================================================================================================================== ( 四 ) 中文乱码解决 1/配置一个过滤器 2/在web.xml中引用已经写好的类,通过spring的ioc/di依赖注入编码类型 === 其优点是软编码 可以动态更改编码类型 <filter> <filter-name>encodingFilter</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> </filter> <filter-mapping> <filter-name>encodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> ================================================================================================================================================ ( 五 ) 数据的传输 如何传输到页面 这里记录三种方式 1/通过Request 方法参数里引入HttpServletRequest 2/通过Model addAttribute(key,value) 放入值 默认存储在Request域中 3/通过Map spring将map这种形式的数据放到了Request的域中 ================================================================================================================================================ ( 六 ) 统一异常处理 ( public class Exception extends Throwable 源码显示 异常的祖宗是 Throwable 其两个子类[error,exception]) [题外话:对于异常,从接触java异常开始,一般遇到项目第一想法便是抛出,那么如下: dao --->抛出到service层 [注:如果这里不处理,500错误,有些异常捕获后,404错误] service调用dao,有异常抛出 ====> 到了controller层 异常的终点 ,这里必须对异常进行处理] 通过注解 : @ExceptionHandler(Exception.class) 对于全局异常的处理我们也可以提取出来放在一个公共的包里 对各种异常进行处理,从而达到代码更加干净简洁,便于管理.使用下面这个注解 @ControllerAdvice // 标注在类的上面 public class Ex { @ExceptionHandler(Exception.class) public String test1(){ return "error"; } } 对于异常的处理,全局的异常处理里面,精确的异常要优先于更大范围的异常处理方式,通过精确度的大小,jvm会自动进行选择,做出对异常的处理方式. ===============================================================================================================================================