Spring mvc的配置

合集下载

SpringMVC使用MultipartFile文件上传配置,多文件上传

SpringMVC使用MultipartFile文件上传配置,多文件上传

SpringMVC使用MultipartFile文件上传配置,多文件上传,.基本的SpringMVC的搭建在我的上一篇文章里已经写过了,这篇文章主要说明一下如何使用SpringMVC进行表单上的文件上传以及多个文件同时上传的步骤一、配置文件:SpringMVC 用的是的MultipartFile来进行文件上传所以我们首先要配置MultipartResolver:用于处理表单中的file1.<!-- 配置MultipartResolver 用于文件上传使用spring的CommosMultipartResolver -->2.<beans:bean id="multipartResolver"class="org.springframework.web.multipmonsMultipartResolver"3.p:defaultEncoding="UTF-8"4.p:maxUploadSize="5400000"5.p:uploadTempDir="fileUpload/temp"6.>7.</beans:bean>其中属性详解:defaultEncoding="UTF-8"是请求的编码格式,默认为iso-8859-1maxUploadSize="5400000"是上传文件的大小,单位为字节uploadTempDir="fileUpload/temp"为上传文件的临时路径二、创建一个简单的上传表单:1.<body>2.<h2>文件上传实例</h2>3.4.5.<form action="fileUpload.html"method="post"enctype="multipart/form-data">6.选择文件:<input type="file"name="file">7.<input type="submit"value="提交">8.</form>9.10.11.</body>注意要在form标签中加上enctype="multipart/form-data"表示该表单是要处理文件的,这是最基本的东西,很多人会忘记然而当上传出错后则去找程序的错误,却忘了这一点三、编写上传控制类1、创建一个控制类: FileUploadController和一个返回结果的页面list.jsp2、编写提交表单的action:1.//通过Spring的autowired注解获取spring默认配置的request2.@Autowired3.private HttpServletRequest request;4.5./***6. * 上传文件用@RequestParam注解来指定表单上的file为MultipartFile7. *8. * @param file9. * @return10. */11.@RequestMapping("fileUpload")12.public String fileUpload(@RequestParam("file") MultipartFile file) {13.// 判断文件是否为空14.if (!file.isEmpty()) {15.try {16.// 文件保存路径17. String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/"18. + file.getOriginalFilename();19.// 转存文件20. file.transferTo(new File(filePath));21. } catch (Exception e) {22. e.printStackTrace();23. }24. }25.// 重定向26.return"redirect:/list.html";27. }28.29./***30. * 读取上传文件中得所有文件并返回31. *32. * @return33. */34.@RequestMapping("list")35.public ModelAndView list() {36. String filePath = request.getSession().getServletContext().getRealPath("/") + "upload/";37. ModelAndView mav = new ModelAndView("list");38. File uploadDest = new File(filePath);39. String[] fileNames = uploadDest.list();40.for (int i = 0; i < fileNames.length; i++) {41.//打印出文件名42. System.out.println(fileNames[i]);43. }44.return mav;45. }3、使用SpringMVC注解RequestParam来指定表单中的file参数;4、指定一个用于保存文件的web项目路径5、通过MultipartFile的transferTo(File dest)这个方法来转存文件到指定的路径。

基于spring-mvc.xml和application-context.xml的配置与深入理解

基于spring-mvc.xml和application-context.xml的配置与深入理解

基于spring-mvc.xml和application-context.xml的配置与深⼊理解⽬录前沿1、application-context.xml是全局的2、spring-mvc.xml 是spring mvc的配置(1)application-context.xml配置1、⾸先介绍⼀下启动⼀个项⽬的整体流程:2、现在开始正式讲解applicationContext.xml中的配置内容⾸先准备db.properties 配置⽂件SqlSessionTemplate介绍:applicationContext.xml配置:Spring和Mybatis整合有两种⽅式事务管理的两种⽅式:(2)sping-mvc.xml的配置1.⾃动扫描2.注解驱动3.静态资源处理4.避免IE执⾏AJAX时,返回JSON出现下载⽂件5.启动SpringMVC的注解功能,完成请求和注解POJO的映射6.配置⽂件上传7.配置viewResolver视图解析8.定义跳转的⽂件的前后缀,视图模式配置前沿1、application-context.xml是全局的应⽤于多个serverlet,配合listener⼀起使⽤,web.xml中配置如下:<!-- 配置监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param>2、spring-mvc.xml 是spring mvc的配置web.xml中配置如下:<!--配置springmvc DispatcherServlet--><servlet><servlet-name>springMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:config/spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup><async-supported>true</async-supported></servlet>application-context.xml这个⼀般是采⽤⾮spring mvc架构,⽤来加载Application Context。

spring MVC原理及配置

spring MVC原理及配置

spring MVC原理及配置springmvc原理及配置springmvc原理及配置1.springmvc详述:springmvc就是spring提供更多的一个强悍而有效率的web框架。

借助注释,springmvc提供更多了几乎就是pojo的研发模式,使控制器的研发和测试更加直观。

这些控制器通常不轻易处置命令,而是将其委托给spring上下文中的其他bean,通过spring的倚赖转化成功能,这些bean被转化成至控制器中。

springmvc主要由dispatcherservlet、处理器映射、处理器(控制器)、视图解析器、视图组成。

他的两个核心是两个核心:处理器映射:选择使用哪个控制器来处理请求视图解析器:选择结果应该如何渲染通过以上两点,springmvc确保了如何挑选掌控处置命令和如何挑选视图展现出输入之间的松耦合。

2.springmvc运行原理这里写图片描述(2)找寻处理器:由dispatcherservlet控制器查阅一个或多个handlermapping,找出处置命令的controller。

(3)调用处理器:dispatcherservlet将请求提交到controller。

(4)(5)调用业务处置和回到结果:controller调用业务逻辑处置后,回到modelandview。

3.springmvc接口解释(1)dispatcherservlet接口:spring提供的前端控制器,所有的请求都有经过它来统一分发。

在dispatcherservlet将请求分发给springcontroller 之前,需要借助于spring提供的handlermapping定位到具体的controller。

(2)handlermappingUSB:能够完成客户请求到controller映射。

(3)controller接口:须要为mammalian用户处置上述命令,因此同时实现controllerUSB时,必须确保线程安全并且可以器重。

Spring Boot和Spring MVC的对比

Spring Boot和Spring MVC的对比

Spring MVC和Spring Boot都是基于Spring框架的Web应用开发框架。

它们有很多相似之处,但也有一些明显的不同点。

以下是它们的对比:
●构建方式:Spring MVC是一个模板引擎,需要手动编写HTML和
JSP页面,并使用注解来将页面和控制器连接起来。

而Spring Boot 是一个基于Spring框架的应用程序框架,它提供了许多自动配置和starter包,可以更加快速地构建应用程序。

●开发方式:Spring MVC需要更多的手动配置和代码,包括页面布
局、模板引擎、控制器、注解等。

而Spring Boot提供了更多的自动配置和API,可以更加快速地开发应用程序。

●启动方式:Spring MVC需要在类中手动配置DispatcherServlet,
并将其注册到Web应用程序上下文中。

而Spring Boot提供了一个方便的命令行工具,可以自动创建和启动应用程序。

●应用程序大小:Spring MVC的应用程序通常比Spring Boot的应
用程序大,因为它需要更多的库和配置文件。

这也意味着Spring MVC的应用程序可能需要更多的时间来编译和部署。

●社区支持:Spring MVC是一个成熟的框架,已经有很多年的历史,
并且有着广泛的社区支持和文档。

Spring Boot是一个相对较新的框架,但是由于它基于Spring框架,因此也有着良好的社区支持和文档。

总的来说,Spring Boot更加方便快捷,适合快速开发和部署应用程
序,而Spring MVC更加灵活和可定制,适合对于复杂应用程序的需求。

Spring-MVC基本pom依赖及配置文件

Spring-MVC基本pom依赖及配置文件

Spring-MVC基本pom依赖及配置⽂件Spring MVC 基本pom依赖<dependencies><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.19.RELEASE</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>servlet-api</artifactId><version>2.2</version></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.18</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.11.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.11.0</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.11.0</version></dependency></dependencies>application.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans.xsd/schema/contexthttps:///schema/context/spring-context.xsd/schema/mvchttps:///schema/mvc/spring-mvc.xsd"><!-- ⾃动扫描指定的包,下⾯所有注解类交给IOC容器管理 --><context:component-scan base-package="controller"/><!--静态资源过滤--><mvc:default-servlet-handler /><!--JSON乱码问题配置--><mvc:annotation-driven><mvc:message-converters register-defaults="true"><bean class="org.springframework.http.converter.StringHttpMessageConverter"><constructor-arg value="UTF-8"/></bean><bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter"><property name="objectMapper"><bean class="org.springframework.http.converter.json.Jackson2ObjectMapperFactoryBean"><property name="failOnEmptyBeans" value="false"/></bean></property></bean></mvc:message-converters></mvc:annotation-driven><!-- 视图解析器 --><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"id="internalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/WEB-INF/jsp/" /><!-- 后缀 --><property name="suffix" value=".jsp" /></bean></beans>web.xml<?xml version="1.0" encoding="UTF-8"?><web-app xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee /xml/ns/javaee/web-app_4_0.xsd" version="4.0"><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:application.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><!-- 乱码过滤器--><filter><filter-name>encoding</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>encoding</filter-name><url-pattern>/*</url-pattern></filter-mapping></web-app>。

springmvc框架搭建之xml配置说明(spring4+hibernate4)

springmvc框架搭建之xml配置说明(spring4+hibernate4)

SpringMVC框架搭建说明Spring4.1.4 + hibernate4.3.81、web.xml配置程序运行时从web.xml开始,加载顺序为:context-param -> listener -> filter ->structs (如果使用structs的话)-> servlet如下为web.xml的配置说明<?xml version="1.0" encoding="UTF-8"?><web-app xmlns:xsi="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee"xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5"><!—-显示项目名称--><display-name>bmymis2</display-name><!-- 指定配置文件位置,contextConfigLocation是ContextLoaderListener中的一个参数,通过该参数在ContextLoaderListener中加载applicationContext-*.xml,并装配ApplicationContext --> <context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext-*.xml</param-value></context-param><!-- 定义SPRING监听器,启动Web容器时,自动装配ApplicationContext的配置信息--><listener><listener-class>org.springframework.web.context.ContextLoaderListener </listener-class></listener><!—-字符编码过滤器,解决中文乱码问题--><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><init-param><param-name>forceEncoding</param-name><param-value>true</param-value></init-param></filter><!—- springmvc配置--><servlet><servlet-name>springServlet</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><servlet-mapping><servlet-name>springServlet</servlet-name><url-pattern>/</url-pattern> //表示所有页面都由springmvc处理</servlet-mapping><!—-浏览器输入到项目名,默认打开如下配置页面--><welcome-file-list><welcome-file>/web/login.jsp</welcome-file></welcome-file-list><!—-错误跳转页面--><error-page><error-code>404</error-code><location>/404.html</location></error-page></web-app>2、applicationContext-common.xml配置:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:context="/schema/context"xmlns:xsi="/2001/XMLSchema-instance"xmlns:tx="/schema/tx"xmlns:aop="/schema/aop"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-4.0.xsd/schema/context/schema/context/spring-context-4.0.xsd/schema/aop/schema/aop/spring-aop-4.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsd"><!-- 加载资源文件其中包含变量信息,必须在Spring配置文件的最前面加载,即第一个加载--><context:property-placeholder location="classpath:application.properties"/><!—-扫描包路径选项,使用annotation 自动注册bean,并保证@Required,@Autowired的属性被注入,有了该配置,那么<context:annotation-config/>这个配置就可以省略(以下配置包含了<context:annotation-config/>配置)--><context:component-scan base-package="xxx.xxx.xxx"/><!-- 数据源配置,使用应用内的DBCP数据库连接池 --><bean id="dataSource" class="mons.dbcp.BasicDataSource"destroy-method="close"><!-- 定义数据库连接池数据源bean destroy-method="close"的作用是当数据库连接不使用的时候,就把该连接重新放到数据池中,方便下次使用调用--><property name="driverClassName" value="${jdbc.driverClassName}"/><property name="url" value="${jdbc.url}"/><property name="username" value="${ername}"/><property name="password" value="${jdbc.password}"/></bean><!—Hibernate的注解配置 --><bean id="sessionFactory"class="org.springframework.orm.hibernate4.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="hibernateProperties"><props><prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop><prop key="hibernate.dialect">${hibernate.dialect}</prop><prop key="hibernate.show_sql">${hibernate.show_sql}</prop></props></property><property name="packagesToScan" value="xxx.xxx.xxx.model" /></bean><!-- 配置Hibernate事务管理器 --><bean id="transactionManager"class="org.springframework.orm.hibernate4.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"/></bean><!-- 配置事务异常封装 --><bean id="persistenceExceptionTranslationPostProcessor"class="org.springframework.dao.annotation.PersistenceExceptionTranslationPost Processor"/><!-- 声明式容器事务管理 ,transaction-manager指定事务管理器为transactionManager --> <tx:advice id="txAdvice" transaction-manager="transactionManager"><tx:attributes><tx:method name="add*" propagation="REQUIRED"/><tx:method name="get*" propagation="REQUIRED"/><tx:method name="*" read-only="true"/></tx:attributes></tx:advice><aop:config expose-proxy="true"><!-- 只对业务逻辑层实施事务 --><aop:pointcut id="txPointcut"expression="execution(*xxx.xxx.xxx.service..*.*(..))"/><!-- Advisor定义,切入点和通知分别为txPointcut、txAdvice --><aop:advisor pointcut-ref="txPointcut" advice-ref="txAdvice"/> </aop:config></beans>3、application.properties配置jdbc.driverClassName=org.postgresql.Driverjdbc.url=jdbc:postgresql://ip:5432/数据库名ername=postgresjdbc.password=123hibernate.dialect=org.hibernate.dialect.PostgreSQLDialecthibernate.show_sql=truehibernate.format_sql=false4、spring-mvc.xml配置<?xml version="1.0"encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xmlns:p="/schema/p"xmlns:xsi="/2001/XMLSchema-instance"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.0.xsd/schema/context/schema/context/spring-context-3.0.xsd/schema/mvc/schema/mvc/spring-mvc-3.0.xsd/schema/tx/schema/tx/spring-tx-4.0.xsd"><!-- 启用spring mvc 注解 --><mvc:annotation-driven><!-- 自动扫描且只扫描@Controller --><context:component-scan base-package="xxx.xxx.xxx "use-default-filters="false"></context:component-scan><!-- 定义JSP文件的位置 --><beanclass="org.springframework.web.servlet.view.InternalResourceView Resolver"><property name="prefix"value="/jsp/"/><property name="suffix"value=".jsp"/></bean><!-- 容器默认的DefaultServletHandler处理所有静态内容与无RequestMapping处理的URL--> <mvc:default-servlet-handler/><!-- 定义无需Controller的url<->view直接映射 --><mvc:view-controller path="/"view-name="login"/></beans>。

SpringMVC框架搭建流程(完整详细版)

SpringMVC框架搭建流程(完整详细版)

SpringMVC框架搭建流程(完整详细版)SpringMVC框架搭建流程开发过程1)配置DispatcherServlet前端控制器2)开发处理具体业务逻辑的Handler(@Controller、 @RequestMapping)3) xml配置⽂件配置controller扫描,配置springmvc三⼤件4)将xml⽂件路径告诉springmvc(DispatcherServlet)详细流程:创建⽬录新建maven项⽬,注意选择webapp⾻架。

创建成功之后会发现没有src等⽬录,这些需要我们⼿动创建:在src下⾯新建main,main下⾯新建java⽬录,选择java⽬录,右键,在main下⾯继续新建resource⽬录,选择resource⽬录,右键,pom.xmlpom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="/POM/4.0.0"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/POM/4.0.0 /xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion><groupId></groupId><artifactId>springmvc-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><piler.source>11</piler.source><piler.target>11</piler.target></properties><dependencies><!--引⼊spring webmvc的依赖--><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>5.1.12.RELEASE</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.tomcat.maven</groupId><artifactId>tomcat7-maven-plugin</artifactId><version>2.2</version><configuration><port>8080</port><path>/</path></configuration></plugin></plugins></build></project>注意Tomcat7插件是⽤来运⾏项⽬的,右侧运⾏:springmvc相关配置main⽂件夹下⾯新建webapp⽂件夹,webapp下⾯新建WEB-INF,下⾯新建web.xml<!DOCTYPE web-app PUBLIC"-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN""/dtd/web-app_2_3.dtd" ><web-app><display-name>Archetype Created Web Application</display-name><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><!--⽅式⼀:带后缀,⽐如*.action *.do *.aaa该种⽅式⽐较精确、⽅便,在以前和现在企业中都有很⼤的使⽤⽐例⽅式⼆:/ 不会拦截 .jsp,但是会拦截.html等静态资源(静态资源:除了servlet和jsp之外的js、css、png等)为什么配置为/ 会拦截静态资源因为tomcat容器中有⼀个web.xml(⽗),你的项⽬中也有⼀个web.xml(⼦),是⼀个继承关系⽗web.xml中有⼀个DefaultServlet, url-pattern 是⼀个 /此时我们⾃⼰的web.xml中也配置了⼀个 / ,覆写了⽗web.xml的配置为什么不拦截.jsp呢?因为⽗web.xml中有⼀个JspServlet,这个servlet拦截.jsp⽂件,⽽我们并没有覆写这个配置,所以springmvc此时不拦截jsp,jsp的处理交给了tomcat如何解决/拦截静态资源这件事?⽅式三:/* 拦截所有,包括.jsp--><!--拦截匹配规则的url请求,进⼊springmvc框架处理--><url-pattern>/</url-pattern></servlet-mapping></web-app>⾥⾯配置了springmvc相关的配置,引⼊了springmvc.xml:在resource⽬录下新建springmvc.xml:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beanshttps:///schema/beans/spring-beans.xsd/schema/contexthttps:///schema/context/spring-context.xsd/schema/mvchttps:///schema/mvc/spring-mvc.xsd"><!--开启controller扫描--><context:component-scan base-package=".controller"/><!--配置springmvc的视图解析器--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/"/><property name="suffix" value=".jsp"/></bean><!--⾃动注册最合适的处理器映射器,处理器适配器(调⽤handler⽅法)--><mvc:annotation-driven/></beans>在java⽬录下新建包.controller,下⾯新建DemoController:package .controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.servlet.ModelAndView;import java.util.Date;/*** @author lyj* @Title: DemoController* @ProjectName springmvc-demo* @Description: TODO* @date 2020/6/9 21:21*/@Controller@RequestMapping("/demo")public class DemoController {/*** http://localhost:8080/demo/handle01*/@RequestMapping("/handle01")public ModelAndView handle01(){Date date=new Date();ModelAndView modelAndView=new ModelAndView();modelAndView.addObject("date",date);modelAndView.setViewName("success");return modelAndView;}}在WEB-INF下⾯新建jsp⽂件夹,下⾯新建success.jsp:<%@ page language="java" isELIgnored="false" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%> <html lang="en"><head><meta charset="UTF-8"><title>Title</title></head><body>当前时间 ${date}</body></html>完毕后整个项⽬结构如下:测试:浏览器访问:。

SpringMVC目录结构配置

SpringMVC目录结构配置

SpringMVC目录结构配置SpringMVC是一种常见的Java Web框架,它遵循MVC(Model-View-Controller)设计模式,用于构建灵活可扩展的Web应用程序。

SpringMVC的目录结构对于项目的开发和维护非常重要,下面会详细介绍SpringMVC的标准目录结构以及配置方式。

1.标准目录结构1.1 src/main/java:主要用于存放Java源代码。

1.2 src/main/resources:主要用于存放配置文件和资源文件。

1.3 src/main/webapp:主要用于存放Web应用的静态资源。

1.4 src/test/java:主要用于存放测试用例的Java源代码。

1.5 src/test/resources:主要用于存放测试用例的配置文件和资源文件。

2.详细解析2.1 src/main/java目录src/main/java目录是存放Java源代码的默认目录,它包括以下几个子目录:- config:用于存放Spring配置类,如配置数据库连接、配置事务管理等。

- interceptor:用于存放SpringMVC的拦截器。

- model:用于存放数据模型相关的实体类。

- util:用于存放工具类。

- web:用于存放SpringMVC的控制器。

2.2 src/main/resources目录src/main/resources目录是存放配置文件和资源文件的默认目录,它包括以下几个子目录:- static:用于存放静态资源文件,如CSS、JavaScript、图片等。

- templates:用于存放模板文件,如HTML、Thymeleaf模板等。

- application.properties:存放项目的配置信息,如数据库配置、端口配置等。

- logback.xml:存放日志配置,如日志级别、输出路径等。

- mapper:存放MyBatis的Mapper.xml文件。

SpringMVC+Spring+Mybatis框架配置详细步骤(eclipse普通版)

SpringMVC+Spring+Mybatis框架配置详细步骤(eclipse普通版)

SSI框架搭建SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6编号:SSI-SMVC3-S3-I3版本:V1.0级别:公开编写时间:2016-02-17目录1 导言 (1)1.1 目的 (1)1.2 范围 (1)1.3 说明 (1)2 搭建SpringMVC (2)2.1 搭建所需jar包 (2)2.2 其他依赖包 (3)2.3 搭建步骤 (4)2.3.1 创建项目 (4)2.3.2 导入jar包 (6)2.3.3 配置web.xml (7)2.3.4 配置spring-servlet.xml (9)2.3.5 配置applicationContext.xml (10)2.3.6 配置log4j.properties (10)3 整合mybatis (11)3.1 整合所需jar包 (11)3.2 其他依赖包 (11)3.3 整合步骤 (11)3.3.1 导入jar包 (11)3.3.2 配置config.properties (12)3.3.3 配置spring-dataSource.xml (12)3.3.4 配置applicationContext.xml (15)3.3.5 配置mybatis-config.xml (16)3.3.6 创建实体model (17)3.3.7 创建实例化dao (19)3.3.8 创建业务服务service (21)3.3.9 创建控制层controller (23)3.3.10 页面代码 (28)3.3.11 启动项目 (37)1导言1.1 目的本文档是根据个人的工作经验搭建的轻量级SSI框架,也是实际应用中比较全面的基础框架,用于指导SSI框架初学者学习搭建SSI框架,希望能给各位使用者提供帮助,同时也希望朋友们尽量去帮助其他人。

1.2 范围本次框架搭建的版本是SpringMVC3.1.2+Spring3.1.2+Mybatis3.2.6,数据库采用的是mysql,在eclipse开发工具下搭建直接搭建的web项目,页面采用的是h5,ajax实现数据访问,如果页面为jsp等,则修改controller的返回类型即可。

springmvc课程设计

springmvc课程设计

springmvc课程设计一、教学目标本课程旨在通过Spring MVC的学习,让学生掌握基于Java的企业级Web应用开发技术,理解Spring MVC的工作原理和框架结构,培养学生运用Spring MVC解决实际问题的能力。

1.理解Spring MVC的框架结构和工作原理。

2.掌握Spring MVC的配置和使用方法。

3.熟悉Spring MVC中的主要组件,如Controller、View、Model等。

4.能够使用Spring MVC框架进行简单的Web应用开发。

5.能够根据需求设计合适的Spring MVC架构,解决实际问题。

情感态度价值观目标:1.培养学生的团队合作意识和问题解决能力。

2.培养学生对Java技术和Spring MVC框架的兴趣和热情。

二、教学内容本课程的教学内容主要包括Spring MVC的框架结构、工作原理、配置和使用方法等方面的知识。

1.Spring MVC框架结构:介绍Spring MVC的主要组件,如Controller、View、Model等,以及它们之间的关系。

2.Spring MVC工作原理:讲解Spring MVC的请求处理流程,包括请求的接收、参数的绑定、视图的渲染等。

3.Spring MVC配置和使用:讲解如何在项目中配置Spring MVC,以及如何使用Spring MVC进行Web应用开发。

4.Spring MVC高级特性:介绍Spring MVC的一些高级特性,如数据验证、异常处理、文件上传等。

三、教学方法为了提高学生的学习兴趣和主动性,本课程将采用多种教学方法,如讲授法、讨论法、案例分析法、实验法等。

1.讲授法:用于讲解Spring MVC的基本概念和原理。

2.讨论法:鼓励学生参与课堂讨论,加深对Spring MVC的理解。

3.案例分析法:通过分析实际案例,让学生掌握Spring MVC的应用技巧。

4.实验法:安排实验课,让学生亲自动手实践,巩固所学知识。

springMVC配置(XML配置详解)

springMVC配置(XML配置详解)

springMVC配置(XML配置详解)原⽂出⾃:web.xml配置:servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><description>加载/WEB-INF/spring-mvc/⽬录下的所有XML作为Spring MVC的配置⽂件</description><param-name>contextConfigLocation</param-name><param-value>/WEB-INF/spring-mvc/*.xml</param-value></init-param><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>*.htm</url-pattern></servlet-mapping>这样,所有的.htm的请求,都会被DispatcherServlet处理;初始化 DispatcherServlet 时,该框架在 web 应⽤程序WEB-INF ⽬录中寻找⼀个名为[servlet-名称]-servlet.xml的⽂件,并在那⾥定义相关的Beans,重写在全局中定义的任何Beans,像上⾯的web.xml中的代码,对应的是dispatcher-servlet.xml;当然也可以使⽤<init-param>元素,⼿动指定配置⽂件的路径;dispatcher-servlet.xml 配置:<?xml version="1.0" encoding="UTF-8"?><beans xmlns="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance"xmlns:mvc="/schema/mvc"xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:aop="/schema/aop"xmlns:tx="/schema/tx"xsi:schemaLocation="/schema/beans/schema/beans/spring-beans-3.0.xsd/schema/context/schema/context/spring-context-3.0.xsd/schema/aop/schema/aop/spring-aop-3.0.xsd/schema/tx/schema/tx/spring-tx-3.0.xsd/schema/mvc/schema/mvc/spring-mvc-3.0.xsd/schema/context/schema/context/spring-context-3.0.xsd"><!--使Spring⽀持⾃动检测组件,如注解的Controller--><context:component-scan base-package="com.minx.crm.web.controller"/><bean id="viewResolver"class="org.springframework.web.servlet.view.InternalResourceViewResolver"p:prefix="/WEB-INF/jsp/"p:suffix=".jsp" /></beans>第⼀个Controller:package com.minx.crm.web.controller;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;@Controllerpublic class IndexController {@RequestMapping("/index")public String index() {return "index";}}@Controller注解标识⼀个控制器,@RequestMapping注解标记⼀个访问的路径(/index.htm),return "index"标记返回视图(index.jsp);注:如果@RequestMapping注解在类级别上,则表⽰⼀相对路径,在⽅法级别上,则标记访问的路径;从@RequestMapping注解标记的访问路径中获取参数:Spring MVC ⽀持RESTful风格的URL参数,如:@Controllerpublic class IndexController {@RequestMapping("/index/{username}")public String index(@PathVariable("username") String username) {System.out.print(username);return "index";}}在@RequestMapping中定义访问页⾯的URL模版,使⽤{}传⼊页⾯参数,使⽤@PathVariable 获取传⼊参数,即可通过地址:http://localhost:8080/crm/index/tanqimin.htm 访问;根据不同的Web请求⽅法,映射到不同的处理⽅法:使⽤登陆页⾯作⽰例,定义两个⽅法分辨对使⽤GET请求和使⽤POST请求访问login.htm时的响应。

SpringMVC+Mybatis+extjs4项目配置

SpringMVC+Mybatis+extjs4项目配置

SpringMVC+Mybatis+extjs4项目配置1)软件准备:1.Jdk6:这个需要统一一下,如果用高于jdk6得版本开发,到发布到tomcat服务器后可能运行不正常,在ide上的高版本到低版本的话,也可能出现编译错误的问题,这个要跟生产环境统一起来;2.Tomcat6(7):这个好像关系不太大,主要看生产环境,但如果页面使用了el表达式的话,则需要用高一点的tomcat服务器,低版本的tomcat对el表达式不支持;3.springsource-tool-suite:开发的ide,推荐使用zip安装包,版本2.9的吧,现在的3.1不是很稳定,占用内存很高,经常不响应2)springMVC相关库(jar)配置1.jar的引用主要配置在maven的pom.xml文件了,整个项目都是用pom.xml文件来组织的,如下图:实际项目的结果如:有点不同,所有的代码是放在src文件夹里的,main/webapp文件夹则对应于发布到tomcat 应用的文件夹,所有如果要提交svn,则只需要提交src里的代码,如果改动了非*.java代码,也只要更新webapp目录里改动文件至tomcat相应目录就行了;2.配置pom.xml可能用到的jar包:1)Mybatis:数据库持续层;<dependency><groupId>org.mybatis</groupId><version>1.1.1</version></dependency>2)Mysql:数据库的jdbc的jar包;<dependency><version>5.1.21</version></dependency>3)其他可能用得到的jar包:zip(org.apache.ant),json转换(com.alibaba),文件上传组件(commons-fileupload,commons-io)<dependency><groupId>com.alibaba</groupId><version>1.1.22</version></dependency><dependency></dependency><!-- File Upload --><dependency><version>1.2.2</version></dependency><dependency><version>2.0.1</version></dependency><dependency><groupId>org.codehaus.jackson</groupId><version>1.4.2</version></dependency>4)当改动pom.xml文件后,maven会自动更新项目的jar包,并更新至项目里的引用,如下图:3.项目里配置当把需要用到的jar包引用之后,spring框架里可以使用jar包里面的类,但有些jar包时需要spring的运行时自动加载到mvc运行环境中的,比如数据库持续层mybatis1)Mybatis配置:<bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"> <property name="driverClassName" value="com.mysql.jdbc.Driver" />rEncoding=UTF-8&amp;useUnicode=true" /><property name="password" value="123456" /></bean><!-- 配置SqlSessionFactoryBean --><bean id="sqlSessionFactory"class="org.mybatis.spring.SqlSessionFactoryB ean"><property name="dataSource"ref="dataSource"/><property name="configLocation"value="classpath:mybatis.xml"/> </bean><!-- 配置事务管理器 --><bean id="transactionManager"class="org.springframework.jdbc.datasource. DataSourceTransactionManager"><property name="dataSource"ref="dataSource"/></bean><!-- 配置事务的传播特性 --><bean id="baseTransactionProxy"class="org.springframework.transaction.in terceptor.TransactionProxyFactoryBean"abstract="true"><property name="transactionManager"ref="transactionManager"/><property name="transactionAttributes"><props><prop key="add*">PROPAGATION_REQUIRED</prop><prop key="edit*">PROPAGATION_REQUIRED</prop><prop key="remove*">PROPAGATION_REQUIRED</prop><prop key="insert*">PROPAGATION_REQUIRED</prop><prop key="update*">PROPAGATION_REQUIRED</prop><prop key="del*">PROPAGATION_REQUIRED</prop><prop key="*">readOnly</prop></props></property></bean><!-- 通过扫描的模式,扫描目录 --><bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage"value="com.spring.wlanmis.data.mapper"/></bean>上面的配置主要是:数据库连接,mybatis.xml,MapperScannerConfigurer(数据库Mapping扫描目录,项目的包结构如下:可以这样看,entity里的类一般要配置在mybatis.xml里,mapper里的文件是成对的,一个是xxx.xml文件,另一个是xxx.java(接口)文件,并mapper必须在配置root-content.xml 里的org.mybatis.spring.mapper.MapperScannerConfigurer中,不然mybatis组件就不能实例化2)其他的配置配置文件上传,详细代码可以查看FileUploadController.java<bean id="multipartResolver"class="monsMultipartResolv er"><property name="maxUploadSize"value="8000000"/></bean>剩下的就只是一些普通的javabean配置了,只是为了配置项目的全局参数,类似于ftpScanRunner3)前端extjs的配置:前端比较简单,只是在页面里设置引用,修改后也不用编译代码,发布时可以直接更新到服务器里相应目录进行覆盖,一般引用如下图项目里文件目录结构如下:具体的extjs4的前端mvc框架,还是参照官网/deploy/ext-4.1.0-gpl/examples/,可以先了解一下它的运行机制,项目的所有视图切换都在menu.json文件里。

springMVC配置文件详解

springMVC配置文件详解

web.xml的配置web.xml应该是整个项目最重要的配置文件了,不过servlet3.0中已经支持注解配置方式了。

在servlet3.0以前每个servlet必须要在web.xml中配置servlet及其映射关系。

但是在spring框架中就不用了,因为Spring中是依赖注入(Dependency Injection)的也叫控制反转(Inversion of Control)。

但是也要配置一个重要的servlet,就是前端控制器(DispatcherServlet)。

配置方式与普通的servlet基本相似。

配置内容如下:<!-- 配置前端控制器--><servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><!-- ContextconfigLocation配置springmvc加载的配置文件适配器、处理映射器等--><param-name>contextConfigLocation</param-name><param-value>WEB-INF/classes/spring/springmvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>spring</servlet-name><!-- 1、.action访问以.action结尾的由DispatcherServlet进行解析2、/,所有访问都由DispatcherServlet进行解析--><url-pattern>/</url-pattern></servlet-mapping>这里需要注意,springmvc.xml是spring配置文件,将在后面讨论。

springmvc拦截器(定义、配置以及执行流程)

springmvc拦截器(定义、配置以及执行流程)

springmvc拦截器(定义、配置以及执⾏流程)⼀、拦截器概念springmvc中的拦截器(interceptor)类似于Servlet中的过滤器(Filter),它主要⽤于拦截⽤户请求并做相应的处理。

在实际项⽬中会经常使⽤到拦截器,例如在购物⽹站中通过拦截器可以拦截未登录的⽤户,禁⽌其购买商品,或者使⽤它来验证已登录⽤户是否有相应的操作权限(即权限验证),记录请求信息的⽇志等应⽤。

所谓拦截器,就是能够在进⾏某个操作之前拦截请求,如果请求符合条件就允许在往下执⾏。

⽐如说,海关就是⼀个拦截器,他拦截进出⼝的货物,如果货物满⾜进出⼝条件,则放⾏,否则就拦截,退回处理。

⼆、拦截器定义和配置使⽤在springmvc中要使⽤拦截器,就需要对拦截器类进⾏定义和配置,通常拦截器类可以通过两种⽅式来定义。

第⼀种通过实现HandleInterceptor接⼝,或者继承HandleInterceptor接⼝的实现类HandleInterceptorAdapter来定义;第⼆种通过实现WebRequestInterceptor接⼝,或继承WebRequestInterceptor接⼝的实现类来定义。

1、拦截器的定义:以实现HandleInterceptor接⼝为例public class LoginInterceptor implements HandlerInterceptor {@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {//做⼀些操作⽅法返回类型为布尔值return false;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {//做⼀些操作}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {//做⼀些操作}}从以上可以看出,⾃定义的拦截器类实现了HandlerInterceptor接⼝,并且实现了接⼝中的三个⽅法。

SpringMVC集成LogBack,相关配置

SpringMVC集成LogBack,相关配置

SpringMVC集成LogBack,相关配置最近在做项⽬中需要⽤到⽇志,本来选取的是Log4j,最后经过对⽐之后还是发现LogBack在性能上⽐Log4j有优势。

⾄于有什么好处,请参考下⾯这篇⽂章。

下⾯废话不多说了,就看⼀下,如何来把LogBack集成到我们的web项⽬中吧。

本⼈前台⽤的是SpringMVC。

jar包配置如果要使⽤LogBack做为⽇志的插件的话,需要的jar包有如下,直接看⼀下Maven依赖1. <span style="font-family:Comic Sans MS;font-size:18px;"><dependency>2. <groupId>org.slf4j</groupId>3. <artifactId>slf4j-api</artifactId>4. <version>1.7.12</version>5. </dependency>6. <dependency>7. <groupId>ch.qos.logback</groupId>8. <artifactId>logback-classic</artifactId>9. <version>1.1.3</version>10. <scope>compile</scope>11. <exclusions>12. <exclusion>13. <artifactId>slf4j-api</artifactId>14. <groupId>org.slf4j</groupId>15. </exclusion>16. </exclusions>17. </dependency>18.19. <dependency>20. <groupId>ch.qos.logback</groupId>21. <artifactId>logback-core</artifactId>22. <version>1.1.3</version>23. <exclusions>24. <exclusion>25. <groupId>org.slf4j</groupId>26. <artifactId>slf4j-api</artifactId>27. </exclusion>28. </exclusions>29. <scope>compile</scope>30. </dependency>31.32. <dependency>33. <groupId>ch.qos.logback</groupId>34. <artifactId>logback-access</artifactId>35. <version>1.1.3</version>36. <exclusions>37. <exclusion>38. <groupId>org.slf4j</groupId>39. <artifactId>slf4j-api</artifactId>40. </exclusion>41. </exclusions>42. <scope>compile</scope>43. </dependency></span>Web.xml在web项⽬中需要通过web.xml来加载我们所需要的LogBack.xml具体如下1. <span style="font-family:Comic Sans MS;font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>2. <web-app version="2.5" xmlns="/xml/ns/javaee"3. xmlns:xsi="/2001/XMLSchema-instance"4. xsi:schemaLocation="/xml/ns/javaee5. /xml/ns/javaee/web-app_2_5.xsd">6.7.8.9.10. <!-- logback-begin -->11. <context-param>12. <param-name>logbackConfigLocation</param-name>13. <param-value> classpath:logback.xml</param-value>14. </context-param>15. <listener>16. <listener-class>com.util.LogbackConfigListener</listener-class>17. </listener>18. <!-- logback-end -->19.20.21. <filter>22. <filter-name>encodingFilter</filter-name>23. <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>24. <init-param>25. <param-name>encoding</param-name>26. <param-value>UTF-8</param-value>27. </init-param>28. <init-param>29. <param-name>forceEncoding</param-name>30. <param-value>true</param-value>31. </init-param>32. </filter>33. <filter-mapping>34. <filter-name>encodingFilter</filter-name>35. <url-pattern>/*</url-pattern>36. </filter-mapping>37.38. <servlet>39. <servlet-name>springMVC</servlet-name>40. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>41. <init-param>42. <param-name>contextConfigLocation</param-name>43. <param-value> classpath:springMVC-servlet.xml</param-value>44. </init-param>45. <load-on-startup>1</load-on-startup>46. </servlet>47. <!-- 这⾥⼀定要是/根据Servlet规范来的 -->48. <servlet-mapping>49. <servlet-name>springMVC</servlet-name>50. <url-pattern>/</url-pattern>51. </servlet-mapping>52.53. </web-app></span>上⾯的XML中⽤到了⾃定义的监听器,分别是三个类,如下所⽰LogbackConfigListener类1. <span style="font-family:Comic Sans MS;font-size:18px;">package com.util;2.3. import javax.servlet.ServletContextEvent;4. import javax.servlet.ServletContextListener;5.6. public class LogbackConfigListener implements ServletContextListener {7.8. public void contextInitialized(ServletContextEvent event) {9. LogbackWebConfigurer.initLogging(event.getServletContext());10. }11.12. public void contextDestroyed(ServletContextEvent event) {13. LogbackWebConfigurer.shutdownLogging(event.getServletContext());14. }15. }16. </span>LogbackConfigurer类1. <span style="font-family:Comic Sans MS;font-size:18px;">package com.util;2.3. import java.io.File;4. import java.io.FileNotFoundException;5. import .URL;6.7. import org.slf4j.LoggerFactory;8. import org.springframework.util.ResourceUtils;9. import org.springframework.util.SystemPropertyUtils;10.11. import ch.qos.logback.classic.LoggerContext;12. import ch.qos.logback.classic.joran.JoranConfigurator;13. import ch.qos.logback.core.joran.spi.JoranException;14.15. public abstract class LogbackConfigurer {16.17. /** Pseudo URL prefix for loading from the class path: "classpath:" */18. public static final String CLASSPATH_URL_PREFIX = "classpath:";19.20. /** Extension that indicates a logback XML config file: ".xml" */21. public static final String XML_FILE_EXTENSION = ".xml";22.23. private static LoggerContext lc = (LoggerContext) LoggerFactory24. .getILoggerFactory();25. private static JoranConfigurator configurator = new JoranConfigurator();26.27. /**28. * Initialize logback from the given file location, with no config file29. * refreshing. Assumes an XML file in case of a ".xml" file extension, and a30. * properties file otherwise.31. *32. * @param location33. * the location of the config file: either a "classpath:"34. * location (e.g. "classpath:mylogback.properties"), an absolute35. * file URL (e.g.36. * "file:C:/logback.properties), or a plain absolute path in the file system (e.g. "37. * C:/logback.properties")38. * @throws FileNotFoundException39. * if the location specifies an invalid file path40. */41. public static void initLogging(String location)42. throws FileNotFoundException {43. String resolvedLocation = SystemPropertyUtils44. .resolvePlaceholders(location);45. URL url = ResourceUtils.getURL(resolvedLocation);46. if (resolvedLocation.toLowerCase().endsWith(XML_FILE_EXTENSION)) {47. // DOMConfigurator.configure(url);48. configurator.setContext(lc);49. lc.reset();50. try {51. configurator.doConfigure(url);52. } catch (JoranException ex) {53. throw new FileNotFoundException(url.getPath());54. }55. lc.start();56. }57. // else {58. // PropertyConfigurator.configure(url);59. // }60. }61.62. /**63. * Shut down logback, properly releasing all file locks.64. * <p>65. * This isn't strictly necessary, but recommended for shutting down logback66. * in a scenario where the host VM stays alive (for example, when shutting67. * down an application in a J2EE environment).68. */69. public static void shutdownLogging() {70. lc.stop();71. }72.73. /**74. * Set the specified system property to the current working directory.75. * <p>76. * This can be used e.g. for test environments, for applications that77. * leverage logbackWebConfigurer's "webAppRootKey" support in a web78. * environment.79. *80. * @param key81. * system property key to use, as expected in logback82. * configuration (for example: "demo.root", used as83. * "${demo.root}/WEB-INF/demo.log")84. * @see org.springframework.web.util.logbackWebConfigurer85. */86. public static void setWorkingDirSystemProperty(String key) {87. System.setProperty(key, new File("").getAbsolutePath());88. }89.90. }91. </span>LogbackWebConfigurer类1. <span style="font-family:Comic Sans MS;font-size:18px;">package com.util;2.3. import java.io.FileNotFoundException;4.5. import javax.servlet.ServletContext;6.7. import org.springframework.util.ResourceUtils;8. import org.springframework.util.SystemPropertyUtils;9. import org.springframework.web.util.WebUtils;10.11. public abstract class LogbackWebConfigurer {12.13. /** Parameter specifying the location of the logback config file */14. public static final String CONFIG_LOCATION_PARAM = "logbackConfigLocation";15.16. /**17. * Parameter specifying the refresh interval for checking the logback config18. * file19. */20. public static final String REFRESH_INTERVAL_PARAM = "logbackRefreshInterval";21.22. /** Parameter specifying whether to expose the web app root system property */23. public static final String EXPOSE_WEB_APP_ROOT_PARAM = "logbackExposeWebAppRoot";24.25. /**26. * Initialize logback, including setting the web app root system property.27. *28. * @param servletContext29. * the current ServletContext30. * @see WebUtils#setWebAppRootSystemProperty31. */32. public static void initLogging(ServletContext servletContext) {33. // Expose the web app root system property.34. if (exposeWebAppRoot(servletContext)) {35. WebUtils.setWebAppRootSystemProperty(servletContext);36. }37.38. // Only perform custom logback initialization in case of a config file.39. String location = servletContext40. .getInitParameter(CONFIG_LOCATION_PARAM);41. if (location != null) {42. // Perform actual logback initialization; else rely on logback's43. // default initialization.44. try {45. // Return a URL (e.g. "classpath:" or "file:") as-is;46. // consider a plain file path as relative to the web application47. // root directory.48. if (!ResourceUtils.isUrl(location)) {49. // Resolve system property placeholders before resolving50. // real path.51. location = SystemPropertyUtils52. .resolvePlaceholders(location);53. location = WebUtils.getRealPath(servletContext, location);54. }55.56. // Write log message to server log.57. servletContext.log("Initializing logback from [" + location58. + "]");59.60. // Initialize without refresh check, i.e. without logback's61. // watchdog thread.62. LogbackConfigurer.initLogging(location);63.64. } catch (FileNotFoundException ex) {65. throw new IllegalArgumentException(66. "Invalid 'logbackConfigLocation' parameter: "67. + ex.getMessage());68. }69. }70. }71.72. /**73. * Shut down logback, properly releasing all file locks and resetting the74. * web app root system property.75. *76. * @param servletContext77. * the current ServletContext78. * @see WebUtils#removeWebAppRootSystemProperty79. */80. public static void shutdownLogging(ServletContext servletContext) {81. servletContext.log("Shutting down logback");82. try {83. LogbackConfigurer.shutdownLogging();84. } finally {85. // Remove the web app root system property.86. if (exposeWebAppRoot(servletContext)) {87. WebUtils.removeWebAppRootSystemProperty(servletContext);88. }89. }90. }91.92. /**93. * Return whether to expose the web app root system property, checking the94. * corresponding ServletContext init parameter.95. *96. * @see #EXPOSE_WEB_APP_ROOT_PARAM97. */98. private static boolean exposeWebAppRoot(ServletContext servletContext) {99. String exposeWebAppRootParam = servletContext100. .getInitParameter(EXPOSE_WEB_APP_ROOT_PARAM);101. return (exposeWebAppRootParam == null || Boolean102. .valueOf(exposeWebAppRootParam));103. }104.105. }106. </span>logback.XML配置下⾯来看⼀下这个xml是如何配置的1. <span style="font-family:Comic Sans MS;font-size:18px;"><?xml version="1.0" encoding="UTF-8"?>2. <!-- ROOT 节点 -->3. <!-- 属性描述 scan:性设置为true时,配置⽂件如果发⽣改变,将会被重新加载,默认值为true scanPeriod:设置监测配置⽂件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。

springmvc总结(配置传递参数去除前后空格、参数绑定时处理日期)

springmvc总结(配置传递参数去除前后空格、参数绑定时处理日期)

springmvc总结(配置传递参数去除前后空格、参数绑定时处理⽇期)1.属性为Integer时,前台表单不填,默认为null;属性为String,前台表单不填,默认为"";2.属性为Integer时,前台表单填空格,model封装为null;属性为String,前台表单填空格,model封装为" ";3.属性为Integer,后台model封装时【去除】前后空格;属性为String,后台model封装时【不去除】前后空格;4.属性为Integer,表单填⾮数字,报错http400(Bad Request)⽬录:⼀、⼆、三、四、五、⼀、springmvc配置传递参数去除前后空格来⾃:1. 创建⾃定义转换器类package com.java1234.test;import org.springframework.core.convert.converter.Converter;/*** ⾃定义转换器去掉前后空格 <S, T> : S 页⾯上类型 T :转换后的类型*/public class CustomConverter implements Converter<String, String> {// 去掉前后空格@Overridepublic String convert(String source) {// TODO Auto-generated method stubtry {if (null != source) {source = source.trim();if (!"".equals(source)) {return source;}}} catch (Exception e) {// TODO: handle exception } return null; } }}return null;}}2. 在springmvc⽂件中进⾏配置<!-- 处理器映射器适配器 --><mvc:annotation-driven conversion-service="conversionService"/><!-- Converter转换器⼯⼚注:需要在适配器中进⾏配置 --><bean id="conversionService" class="org.springframework.format.support.FormattingConversionServiceFactoryBean"><!-- ⽇期 --><!-- 去掉前后空格 --><property name="converters"><list><bean class="mon.conversion.CustomConverter"></bean></list></property></bean>⼆、使⽤filter拦截参数去掉两端的空格(资料+亲测解决)三、springmvc+jackson处理date参考资料:MappingJacksonHttpMessageConverter主要通过ObjectMapper来实现返回json字符串。

SpringMVC的配置文件

SpringMVC的配置文件

SpringMVC的配置⽂件⼀、root标签跟spring配置⼀样,root标签是beans,毕竟springmvc是spring的⼀个模块在springmvc⾥,⾃动扫描主要是配置controller:⼆、⾃动扫描:⼆、⾃动扫描:在<context:component-scan base-package="com.xxx.controller"/>三、解析器Resolver:解析器有很多种,⽐较重要的是ViewResolverViewResolver也有很多种,其中⽐较重要和常⽤的是InternalResourceViewResolver(内部资源视图解析器)代码:<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><property name="prefix" value="/WEB-INF/jsp/" /><property name="suffix" value=".jsp" /></bean>如果没有视图解析器,我们在controller⾥⾯的代码是这样的:@Controllerpublic class LoginActionController {@RequestMapping("/index")public String toIndex(HttpServletRequest request, ModelMap map, HttpSession session) {return "/WEB-INF/jsp/index.jsp";}⽽使⽤了视图解析器,我们的代码是这样的:@Controllerpublic class LoginActionController {@RequestMapping("/index")public String toIndex(HttpServletRequest request, ModelMap map, HttpSession session) {return "index";}区别在最后⼀句,我们不需要给出⽬标视图的全路径了。

springmvc+druid+dataSource配置的两种方式

springmvc+druid+dataSource配置的两种方式

springmvc+druid+dataSource配置的两种⽅式⼀、⼀般的配置⽅式数据库连接配置在jdbc.properties⽂件中,这种⽅式有⼀个最⼤的缺点,数据库的配置信息对开发⼈员是完全可见的,⼗分⽅便程序员删库跑路。

spring配置具体如下:1、jdbc.properties⽂件:driver=com.mysql.jdbc.Driverurl=jdbc:mysql://127.0.0.1:3306/test_table?useUnicode=true&amp;characterEncoding=UTF-8&amp;zeroDateTimeBehavior=convertToNull&amp;allowMultiQueries=true&amp; username=rootpassword=root2、spring和druid配置:<!-- 引⼊配置⽂件 --><bean id="propertyConfigurer"class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"><property name="location" value="classpath:jdbc.properties"/></bean><!-- JDBC Data Source. It is assumed you have MySQL running on localhostport 3306 with username root and blank password. Change below if it's notthe case --><bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close"><property name="driverClassName" value="${driver}"/><!-- 基本属性 url、user、password --><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/><!-- 配置初始化⼤⼩、最⼩、最⼤ --><property name="initialSize" value="1"/><property name="minIdle" value="1"/><property name="maxActive" value="20"/><!-- 配置获取连接等待超时的时间 --><property name="maxWait" value="60000"/><!-- 配置间隔多久才进⾏⼀次检测,检测需要关闭的空闲连接,单位是毫秒 --><property name="timeBetweenEvictionRunsMillis" value="60000"/><!-- 配置⼀个连接在池中最⼩⽣存的时间,单位是毫秒 --><property name="minEvictableIdleTimeMillis" value="300000"/><property name="validationQuery" value="SELECT 'x'"/><property name="testWhileIdle" value="true"/><property name="testOnBorrow" value="false"/><property name="testOnReturn" value="false"/><!-- 打开PSCache,并且指定每个连接上PSCache的⼤⼩ --><property name="poolPreparedStatements" value="false"/><property name="maxPoolPreparedStatementPerConnectionSize" value="20"/><!-- 配置监控统计拦截的filters --><property name="filters" value="stat"/></bean>以上简单的配置就好了。

使用Maven搭建SpringMVC项目的步骤(图文教程)

使用Maven搭建SpringMVC项目的步骤(图文教程)

使⽤Maven搭建SpringMVC项⽬的步骤(图⽂教程)约定电脑都安装了eclipse,且已配置好Maven以及eclipse插件。

1.Eclipse 2.maven1、新建⼀个Maven Project2、选择⼯作空间3、搭建Web⼯程,我们选择maven-archetype-webapp类型4、填写项⽬参数,如图5、以上步骤完成时的⼯程结构⽬录6、可以查看或修改发布⽬录7、确保勾选上Dynamic Web Module和Java8、完成以上步骤,我们的⼯程就是⼀个Web项⽬了,接着我们赋予⼯程的springmvc特性,配置web.xml,使其具有springmvc 特性,主要配置两处,⼀个是ContextLoaderListener,⼀个是DispatcherServlet。

代码如下:<?xml version="1.0" encoding="UTF-8"?><web-app version="2.5" xmlns="/xml/ns/javaee"xmlns:xsi="/2001/XMLSchema-instance"xsi:schemaLocation="/xml/ns/javaee/xml/ns/javaee/web-app_2_5.xsd"><!-- 配置web.xml,使其具有springmvc特性,主要配置两处,⼀个是ContextLoaderListener,⼀个是DispatcherServlet --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath*:applicationContext.xml</param-value></context-param><!-- 配置ContextLoaderListener表⽰,该⼯程要以spring的⽅式启动。

SpringMVC如何在生产环境禁用Swagger的方法

SpringMVC如何在生产环境禁用Swagger的方法

SpringMVC如何在⽣产环境禁⽤Swagger的⽅法Swagger 是⼀个规范和完整的框架,⽤于⽣成、描述、调⽤和可视化 RESTful 风格的 Web 服务。

总体⽬标是使客户端和⽂件系统作为服务器以同样的速度来更新。

⽂件的⽅法,参数和模型紧密集成到服务器端的代码,允许API来始终保持同步。

Swagger 让部署管理和使⽤功能强⼤的API从未如此简单。

好吧,以上是官⽅的说法,我直接复制的,在我看来swagger就是⼀个接⼝⽂档管理器,以前我们写接⼝⼀般都是world编写,但是有⼀个问题就是测试的时候需要依赖第三⽅⼯具,GET的接⼝还好,直接浏览器打开,POST的只能依赖另外的⼯具了,⽽Swagger呢,可以直接通过代码中的注解⽣成接⼝⽂档(JavaEE),⼀般⼈都⽤这种⽅式,⽽且直接集成在项⽬中,⽅便成员查看,同时还能直接测试,另外Swagger的界⾯也不错,也许这就是我选择⽤Swagger的原因吧,直接官⽅说的RESTful 风格那个不⽤管,不是RESTful 风格的接⼝也能⽤,当然Swagger还有⼀种⽅式就是⼿动写接⼝说明了,这样的好处就是代码只有代码,因为⼀旦代码中添加了Swagger的接⼝注解后,代码量还是增加了不少,当然坏处就是你改完了代码,还要去改接⼝⽂档SpringMVC集成springfox-swagger2和springfox-swagger-ui很简单,只需要两步:(1)pom中添加依赖<dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger-ui</artifactId><version>${springfox-swagger.version}</version></dependency><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${springfox-swagger.version}</version></dependency>(2)添加Swagger的配置类:@Configuration@EnableSwagger2@EnableWebMvc@ComponentScan("com.XXX.controller")public class SwaggerConfig{}但是,如何在⽣产环境禁⽤这些api⽂档呢?试了很多种⽅式,最终找到⼀个简单实⽤的办法:@Configuration@EnableSwagger2@EnableWebMvc@ComponentScan("com.XXX.controller")public class SwaggerConfig{@AutowiredConfigService configService;@Beanpublic Docket customDocket() {if(configService.getServerEnv() == ServerEnvEnum.ONLINE) {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfoOnline()).select().paths(PathSelectors.none())//如果是线上环境,添加路径过滤,设置为全部都不符合.build();}else {return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo());}}private ApiInfo apiInfo() {return new ApiInfoBuilder().title("XXX系统").description("XXX系统接⼝").license("").licenseUrl("").termsOfServiceUrl("").version("1.0.0").contact(new Contact("","", "")).build();}private ApiInfo apiInfoOnline() {return new ApiInfoBuilder().title("").description("").license("").licenseUrl("").termsOfServiceUrl("").version("").contact(new Contact("","", "")).build();}}应该还有更好的办法!swagger必须要跟springmvc在同⼀个context才⾏,springmvc只是spring的⼀个⼦context。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<!-- classpath*: 指定编译后的class目录 在ide中 与src根目录相同 -->
classpath*:hibernateContext.xml
</param-value>
</context-param>
二,配置映射响应器(HandlerMapping)
当选用了 SimpleUrlHandlerMapping 映射响应器时 各个处理控制器应保证 <bean> 的 id
属性与 SimpleUrlHandlerMapping 中的 mappings 对应 例如:
<bean id="homeAction" class="<!-- 包名 -->.HomeController" />
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/>
org.springframework.web.context.ContextLoaderServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
配置文件读取器 注册成功后 需要设定配置文件列表
class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping" />
SimpleUrlHandlerMapping Spring 中最常用的映射响应器 通过对其 mappings 进行设置 从而获得更为灵活的
默认的配置文件位于 web.xml 相同的路径下 文件名与注册的 Servlet
名有关 Servlet注册名跟上 -servlet.xml
例如:上面的 Servlet 注册名为 dispatcherContext 那么 默认的
配置文件名位:dispatcherContext-servlet.xml
需要注册配置文件读取器
对于 Servlet 2.3 以上标准 且 web 容器支持监听器
可以 在 web.xml 中注册监听
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="mappings"<prop key="/hello.do">homeAction</prop>
*/
public class HelloController
extends AbstractCommandController {
...
}
四,配置试图解析器(ViewResolver)
<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
当 DispatcherServlet 接到请求后 会向 HandlerMapping 询问
请求所对应的控制器
BeanNameUrlHandlerMapping Spring 默认的映射响应器 根据 <bean> 的 name 属性查找控制器处理请求
<bean id="urlMapping"
</bean>
</servlet-mapping>
这样 请求 .do 的处理 就全部交由 Spring 处理了
当程序越来越大 配置文件中的 <bean> 越来越多 而且变得关系错综复杂
难于维护 此时应该考虑 将配置文件拆分成多个
为了让 Spring 能够读到这些配置文件 并察觉到他们的变化
设置全局参数 contextConfigLocation
置为 配置文件列表 以逗号分隔 注意路径
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/dispatcherContext-servlet.xml,
<bean id="urlMapping"
class="monsPathMapHandlerMapping" />
三,配置控制器(Controller)
当 DispatcherServlet 接到请求后 通过 HandlerMapping 询问请求所对应的处理控制器后
</props>
</property>
</bean>
当选用了 CommonsPathMapHandlerMapping 映射响应器时
/**
* @@org.springframework.web.servlet.handler.
commonsattributes.PathMap("/hello.do")
</listener-class>
</listener>
对于 Servlet 2.3 以下版本 由于不支持监听器 所以需要注册 Servlet
<servlet>
<servlet-name>contextLoader</servlet-name>
<servlet-class>
一,配置分发器
DispatcherServlet 是Spring MVC 的入口
所有进入Spring Web 的 Request 都经过 DispatcherServlet
需要在 web.xml 中注册 DispatcherServlet
<servlet>
<servlet-name>dispatherContext</servlet-name>
当然 也可以明确配置文件 需要在注册 servlet 时 设定初始化参数
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>
<!-- 配置文件名 -->
</param-value>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
加载 DispatcherServlet 时 Spring 会尝试读取配置文件
</props>
</property>
</bean>
CommonsPathMapHandlerMapping 应用了 jdk1.5 后的新特性 通过 Controller 中的注释 进行映射
在类的主是中加入 @@monsattributes.PathMap("/path.do")
</init-param>
注册 DispatcherServlet 后 还应指定有 Spring 处理的 url 模板
<servlet-mapping>
<servlet-name>dispatherContextServlet</servlet-name>
<url-pattern>*.do</url-pattern>
在 dispatcherContext-servlet.xml 中 查找相对应得 <bean> 处理请求
当选用了 BeanNameUrlHandlerMapping 映射响应器时 各个处理控制器应保证 <bean> 的 name
属性即为请求的 url 模板 例如:
<bean name="/home.do" class="<!-- 包名 -->.HomeController" />
控制器查找机制
<bean id="urlMapping"
class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
相关文档
最新文档