- 
            
            web-INF 目录下为私有文件 查看全部
- 
            
            视图层:为用户提供UI,重点关注业务的呈现。 模型层,业务数据的信息表示,关注支撑业务的信息构成,通常是多个业务实体的组合。 Controller 调用业务逻辑产生合适的数据。 查看全部
- 
            
            Spring MVC基本概念 查看全部
- 
            
            pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>imcc-zyh</groupId> <artifactId>spring-mvc-demo</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>spring-mvc-demo Maven Webapp</name> <url>http://maven.apache.org</url> <properties> <commons-lang.version>2.6</commons-lang.version> <slf4j.version>1.7.6</slf4j.version> <spring.version>4.1.3.RELEASE</spring.version> </properties> <!-- 依赖管理, 管理传递依赖, 比如两个工程依赖的spring 包版本不一致, 可以通过依赖管理来指定 --> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-framework-bom</artifactId> <version>${spring.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>${commons-lang.version}</version> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> <version>${slf4j.version}</version> <exclusions> <exclusion> <artifactId>slf4j-api</artifactId> <groupId>org.slf4j</groupId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.eclipse.jetty</groupId> <artifactId>jetty-maven-plugin</artifactId> <version>9.2.2.v20140723</version> </plugin> </plugins> </build> </project> 查看全部
- 
            
            SpringMVC中启动对JSON的支持: 步骤1:SpringMVC的上下文环境mvc-dispatcher-serlver.xml中配置ContentNegotiatingViewResolver,具体参数不做详细讲解,只需要知道它可以将SpringMVC相同的数据呈现不同的数据表现形式,由于这里主要讲解JSON数据格式,这里使用MappingJackson2JsonView工具类库,将模型数据转化称JSON格式。如下图配置,其中JsonView类的作用是将模型数据转化成JSON格式。  步骤2:Maven的pom文件引入依赖,使用jackson提供工程的javaBean的JSON的转换。   
 案例:Controller中编写支持JSON的方法,其它同之前课程一样,只不过方法的返回参数Course前添加了@ResponseBody注解(并不是唯一的方式,它是简洁的方式,不需要其他配置),返回的数据将以JSON格式进行呈现,可以把数据复制到具有JSON功能的文本编辑器,并使用JSON的视图进行展示。数据转换为JSON的格式2:方法返回值前使用@ResponseEntity注解(该注解是SpringMVC抽象的实体,它用泛型包裹了实体类),只需要返回这个类的实例。如下图(了解)  查看全部 查看全部
- 
            
            SpringMVC协同JSON工作 JSON(JavaScript Object Notation)定义:轻量级的数据交换格式,SpringMVC协同JSON使得模型数据在前端具有不同的表现形式。JSON在Restful Web Service中发挥重要作用,也使得Restful Web Service 称为Web Service的一种标准。 SpringMVC处理JSON的方式:使用ContentNegotiatingViewResolver的机制处理相同数据不同呈现方式要求的应用场景,使用ViewResolver处理数据的不同呈现格式,如果需要HTML的数据呈现格式,它就会把数据代理给JSPView,如果需要JSON数据格式,它就把数据代理给JsonView。 SpringMVC看待JSON方式:数据格式没有改变,改变的只是数据的呈现方式。 查看全部
- 
            
            repository:.容器;仓库 查看全部
- 
            
            maven 中的坐标包含 groupId,artifactId,version,packaging。这四个方面可以唯一确定我们需要的产品以及包 查看全部
- 
            
            SpringMVC中启动对JSON的支持: 步骤1:SpringMVC的上下文环境mvc-dispatcher-serlver.xml中配置ContentNegotiatingViewResolver,具体参数不做详细讲解,只需要知道它可以将SpringMVC相同的数据呈现不同的数据表现形式,其中JsonView类的作用是将模型数据转化成JSON格式。   步骤2:Maven的pom文件引入依赖,提供工程JSON的转换。   
 案例:Controller中编写支持JSON的方法,其它同之前课程一样,只不过方法的返回参数Course前添加了@ResponseBody注解(并不是唯一的方式,它是简洁的方式,不需要其他配置),返回的数据将以JSON格式进行呈现,可以把数据复制到具有JSON功能的文本编辑器,并使用JSON的视图进行展示。 数据转换为JSON的格式2:方法返回值前使用@ResponseEntity注解,并添加泛型,只需要返回这个类的实例。如下图(了解) 数据转换为JSON的格式2:方法返回值前使用@ResponseEntity注解,并添加泛型,只需要返回这个类的实例。如下图(了解) 查看全部 查看全部
- 
            
            FileUpload——单文件上传(SpirngMVC提供了文件上传的支持,通过配置,就可以使用SpringMVC提供的接口来完成文件的上传) 配置:在SpringMVC的上下文环境mvc-dispatcher-servlet.xml中添加一个<bean>如下图,其中CommonsMultpartResolver是解析上传文件的类,它其中的属性maxUploadSize,是用来限制上传文件的大小,并设置大小为200兆的字节(209715200),默认编码属性defaultEncoding选用UTF-8,属性resolveLazily为是否使用延迟加载,这里值为true,使用延迟加载提高性能,在需要时才进行文件上传的解析,并在依赖管理中引入这个commons-fileupload的jar包,并且该jar包依赖commons-io的jar包(隐性的引入了该jar包),正好编码中也是用到了这个io包,这里就不用显示的引入它了。   书写Controller:提供一个名为showUploadPage()方法,该方法用于跳转到下载文件的界面,跳转的JSP界面提供了一个form表单,表单包含input的类型为file的标签和input的类型为submit的标签,表单form中加入一个enctype属性,值为multipart/form-data,该属性是文件上传必须要显示指明的一个属性,如果没有该属性无法完成文件上传,form表单的action属性值为/courses/doUpload,所以要在CourseController中提供一个方法,并且文件上传通常指明它是通过POST方式传递过来,RequestMapping(value="doUpload",method=RequestMethod.POST),在方法的参数里使用到了SpringMVC提供的支持文件上传的类(MultipartIFile),可以查看该类的源代码(可以上网查阅如何查看Maven下的源代码),MuilipartFile提供了一些方法来访问文件,比如,获取文件名、获取文件的最初文件名(也就是本地文件名)、获取文件类型、查看该文件是否是空文件、文件大小以及文件二进制、还可以获取它的流进行读取操作,如下图二,并且这里使用@RequestParam("file")使表单的file的input标签与该方法参数相关联,这样SpringMVC就会将input的name为file的元素值绑定到Controller的参数上,并且类型会转换成MultipartFile,接下就需要把服务器传过来的文件存储在某个地方,以提供其他应用所使用,这里把它拷贝到C盘的目录(C:\temp\imooc),如果文件不为空,输出日志信息和本地文件名字,FileUtils是Commons-io的一个文件类,可以用它的copyInputStreamToFile做文件的拷贝和文件流的操作,该方法有两个参数,第一参数是源文件所代表的流(InputStream类型,这里使用MultipartFile的getInputStream()获取该流),第二个参数是File类型,并且File的第一个参数是目标地,第二个是文件名,这里必须+文件的原始名称,否则报错。    查看全部 查看全部
- 
            
            Binding:将请求中的字段按照名字匹配的原则填入对象模型(模型对象和页面数据的绑定)。 案例:课程添加及保存的维护界面。 描述:创建增加课程的方法,并跳转课程增加的界面,设定访问该方法的路径为admin,请求限定为request,限制有一个请求参数add(意思是浏览器访问时候路径后+?add),注意:edit.jsp中标签的name属性应当和模型对象中的Course属性名称一致, 随后Controller中添加增加课程的方法,该方法通过在方法里设置Course对象来获取前端form表单提交的数据,这里通过返回"redirect:view2/"+course.getCourseId();就可以重定向到viewCourse2的方法并进行添加课程的展示,添加日志信息确定是否拦截到了表单的数据信息,并把它绑定到了模型对象中log.debug("Info of Course:");log.debug(ReflectionToStringBuilder.toString(course)),ReflectionToStringBuilder是apache.lang包中Builder的一个类,进行日志输出进行程序的调试很常见,将课程的内容以键值对的形式,输出在日志当中,这样就可以查看是否映射到了Course对象中。 映射多目录结构JSP:相对路径即可。  @ModelAttribute:放在方法参数的注解,也可以完成数据绑定的功能,当@ModelAttribute放在方法参数上时,和使用这个标签没有区别。当将@ModelAttribute放在方法上标识的时候,表示执行这个controller类中的@RequestMapping标注的方法前都要先执行标有@ModelAttribute的方法。 查看全部
- 
            
            Controller——传统方式 Controller中使用HttpServletRequest对象(方法中使用HttpServletRequest对象) 【步骤1】pom文件中引入Servlet的API  【步骤2】通过request把逻辑数据放入域对象request对象中  课程总结: 1、通过@Controller的annotation声明了一个Controller 2、通过@RequestMapping的annotation映射了URL和方法,通常出现在类级别和方法级别,二者共同组合完成了对一个URL映射请求的拦截。 3、通过URL template结合使用(@Requestparam and @PathVariable)两个标记可以将URL路径之中的参数绑定到方法参数中 4、可以通过使用HttpServletRequest或者HttpSession之类的对象来获取想要的结果。 查看全部
- 
            
            Controller——现代方式 通过注解SpringMVC可以识别Controller,并且将请求映射到正确的方 法。 【步骤1】:通知SpringMVC的DispatcherServlet这是一个Controller,所以在类上添加@Controller,这样它就会被DispatcherServlet上下文环境管理,并且完成它的依赖注入。 【步骤2】:指明该Controller负责处理哪一个URL,通过添加@RequestMapping("/courses"),它处理Controller负责处理根URL,也就是courses下的路径都会被它拦截到。 【步骤3】:指明映射到哪一个方法,所以在相应方法上添加注解@RequestMapping(value="/view",method=RequestMethod.GET),同时可以限制从get方法过来的请求。 【步骤4】处理前端传过来的参数,第一种方式:也就是get请求带了一个参数courseId=123,它需要被方法所识别,这里在方法的参数上绑定annotation,属性就是前端传过来的key(courseId)的名,通过在方法参数前使用@RequestParam("courseId"),这里可以通过日志查看绑定数据的行为(log.debug("In viewCourse,courseId={}",courseId)  解决不能再JSP页面引入JSTL的原因? <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> 第二种方式:绑定路径参数,这里使用@PathVariable("course"),要在URL路径中显示声明这个路径,也就是在@RequestMapping注解的value属性中,在路径后使用/{courseId}花括号括起来表示一个路径变量。 例如访问路径:http://localhost:8080/view2/courseId=123  查看全部 查看全部
- 
            
            Controller——基础代码 根据课程的ID查询某一个课程的详情 创建名称为CourceController,首先有个依赖CourseService来完成课程查询的业务逻辑功能,并且通过@Autowired对其进行自动注入,之后可以添加日志,在pom中添加日志的依赖,private static Logger log=LoggerFactory.getLogger(CourseController.class),调用业务逻辑方法完成ID的查询,所以提供一个方法,传入课程ID和SpringMVC提供特有的类型Model,然后再向Model中添加模型对象,调用CourseService的逻辑方法,并把返回的对象通过Model的addAttribute(course),前端页面EL表达式的对象名就是course,就可以通过该对象进行取属性,由于使用了SpringMVC的InternalResourceViewResolver,所以返回的时候只需要给定jsp的名字即可如下图。    查看全部 查看全部
- 
            
            用Spring MVC开发一个课程管理模块 配置文件: 【配置1】——web应用的部署描述文件web.xml,当前的web.xml是由maven自动生成的,它用到web-app_2_3的版本,这个标准之下,JSP页面会默认将EL表达式语言关闭,所以要将它替换掉,使用web_app_2_4以上版本,如下图,这样Web应用就可以使用EL表达式。  【配置2】——web.xml中加入Spring和SpringMVC的声明,以及所需Spring配置文件和SpirngMVC所需路径,如下图,所以现在有两个上下文环境一个是SpringMVC的上下文环境,一个是Spring的上下文环境(提供了所有应用公共使用的一些组件、一些服务,有service层、dao层等等,这些服务是被整个应用所共享的,没有局限在某一个DispatcherServlet上下文环境之中),另外一个则是与DispatcherServlet上下文相关的WebApplicationContext上下文,该上下文包含Controllers、HandlerMapping、ViewResolver,这里通常指的是配置文件,可以有多个DispatcherServlet,多个DispatcherServlet可以使用公共的WebApplicationContext,可以使用不同的DispathcerServlet进行不同的分发,更好进行不同类型的请求。   【配置3】——DispatcherServlet配置文件的配置。   【配置4】——Spring配置文件的配置。  查看全部 查看全部
举报
 
             
         
                 
                 
                 
                