文章目录

  • 1 场景
    • 1.1 版本说明
    • 1.2 代码地址
    • 1.3 项目结构
  • 2 搭建步骤
    • 2.1 配置maven依赖
    • 2.2 配置程序入口
    • 2.3 spring配置
    • 2.4 springmvc配置
  • 3 代码示例
    • 3.1 controller定义
    • 3.1 加载页面
    • 3.2 执行业务操作
    • 3.3 接收json
    • 3.4 上传文件
    • 3.5 下载文件
  • 4 其他代码
    • 4.1 jquery发送ajax请求
    • 4.2 文件上传

1 场景

本文主要用来搭建ssm环境中的spring、springMvc的部分。

1.1 版本说明

**jdk版本:**1.8

spring版本:5.2.2.RELEASE

1.2 代码地址

https://github.com/yjhcpdd/mymvc

1.3 项目结构

--java
--resources--conf-spring.xml*********[1]-spring-mvc.xml*****[2]--properties-system.properties**[3]
--webapp--css--img--js--jsp--WEB-INF-web.xml************[4]

**java外层包路径为:**com.demo.cs

2 搭建步骤

2.1 配置maven依赖

pom.xml中配置相关依赖包:

<properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><spring.version>5.2.2.RELEASE</spring.version><jackson.databind.version>2.11.0</jackson.databind.version>
</properties><dependencies><!-- ==========【Web相关】========== --><dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>3.1.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jsp-api</artifactId><version>2.0</version><scope>provided</scope></dependency><dependency><groupId>javax.servlet</groupId><artifactId>jstl</artifactId><version>1.2</version></dependency><!-- ==========【spring、springMvc相关】========== --><dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-tx</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-web</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>${spring.version}</version></dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-jdbc</artifactId><version>${spring.version}</version></dependency><!-- SpringMVC会自动添加Jackson的转换器,支持@ResponseBody将对象转换成json,jackson的版本需与springMvc的版本进行对应 --><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>${jackson.databind.version}</version></dependency><!-- ascpectJ支持aop --><dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.9.6</version></dependency><!-- ==========【单元测试】========== --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13</version><scope>test</scope></dependency><!-- ==========【文件上传】========== --><dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.4</version></dependency><!-- ==========【工具类】========== --><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.10</version></dependency><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.12</version><scope>provided</scope></dependency>
</dependencies>

2.2 配置程序入口

web.xml[4]配置spring和springMVC的程序入口。

<!-- ============【spring配置】============ -->
<context-param><param-name>contextConfigLocation</param-name><param-value>classpath:conf/spring.xml</param-value>
</context-param>
<listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener><!-- ============【springMvc配置】============ -->
<!-- spring编码过滤器(防止“post提交”、“上传文件文件名”中文乱码) -->
<filter><filter-name>characterEncodingFilter</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>characterEncodingFilter</filter-name><url-pattern>/*</url-pattern>
</filter-mapping>
<!-- springMVC核心servlet -->
<servlet><servlet-name>spring</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:conf/spring-mvc.xml</param-value></init-param><load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping><servlet-name>spring</servlet-name><url-pattern>/</url-pattern>
</servlet-mapping>

2.3 spring配置

spring.xml[1]用来配置spring。

<!-- 通过扫描器实现bean的自动载入(只扫描非Controller注解,防止ContextLoaderListener扫描的事务失效) -->
<context:component-scan base-package="com.demo.cs"><context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan><!-- 引入配置文件 -->
<context:property-placeholder location="classpath:properties/system.properties" /><!-- 使用cglib动态代理(默认为JDK动态代理,只可代理接口实现) -->
<aop:aspectj-autoproxy proxy-target-class="true" />

2.4 springmvc配置

spring-mvc.xml[2]用来配置springMVC。

<!-- 通过扫描器实现bean的自动载入(只扫描Controller注解,防止ContextLoaderListener扫描的事务失效)use-default-filters="false"需和include-filter配合使用,否则默认仍然会扫描所有注解-->
<context:component-scan base-package="com.demo.cs" use-default-filters="false"><context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
</context:component-scan><!-- 开启注解驱动模式。默认注册RequestMappingHandlerMapping,RequestMappingHandlerAdapter,ExceptionHandlerExceptionResolver以支持@RequestMapping,@ExceptionHandler以及其他注解的控制器方法的请求处理。-->
<mvc:annotation-driven/><!--当一个请求找不到处理器时将会把它交给容器本身处理(tomcat)-->
<mvc:default-servlet-handler/><!--配置静态资源访问路径。 -->
<mvc:resources mapping="/css/**" location="/css/" />
<mvc:resources mapping="/img/**" location="/img/" />
<mvc:resources mapping="/js/**" location="/js/" /><!-- 视图解析器 -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"><!-- 前缀 --><property name="prefix" value="/jsp/"/><!-- 后缀 --><property name="suffix" value=".jsp"/>
</bean><!-- 支持文件上传(bean的id需配置成"multipartResolver") -->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" ><!--上传文件的最大大小,单位为字节 --><property name="maxUploadSize" value="1073741824"></property><!-- 上传文件的编码 --><property name="defaultEncoding" value="UTF-8"></property>
</bean>

3 代码示例

实体类:

@Data
public class TempUser {private String userName;private Integer age;
}

3.1 controller定义

@Controller
@RequestMapping("tempUser")
public class TempUserController {......
}

3.1 加载页面

@RequestMapping("init")
public ModelAndView init(TempUser form){ModelAndView modelAndView=new ModelAndView("template/user/user_list");modelAndView.addObject("xxx",xxx);return modelAndView;
}

3.2 执行业务操作

@ResponseBody
@RequestMapping("doBusniess")
public Object doBusiness(TempUser form){//doBusiness......Map<String,Object> resultMap=new HashMap<>();resultMap.put("success",true);resultMap.put("xxx",xxx);return resultMap;
}

3.3 接收json

@ResponseBody
@RequestMapping("doJsonBusiness")
public Object doJsonBusiness(@RequestBody TempUser tempUser){//doBusiness......Map<String,Object> resultMap=new HashMap<>();resultMap.put("success",true);resultMap.put("xxx",xxx);return resultMap;
}

3.4 上传文件

@ResponseBody
@RequestMapping("doUploadFile")
public Object doUploadFile(HttpServletRequest request,TempUser form) throws IOException {MultipartHttpServletRequest multipartHttpServletRequest = (MultipartHttpServletRequest) request;//获取文件信息MultipartFile multipartFile = multipartHttpServletRequest.getFile("file");//文件名:multipartFile.getOriginalFilename()//文件是否存在:multipartFile.isEmpty()//文件字节大小:multipartFile.getSize()//获取文件字节数组:multipartFile.getBytes()//获取文件输入流:multipartFile.getInputStream()//拷贝文件:multipartFile.transferTo(...);Map<String,Object> resultMap=new HashMap<>();resultMap.put("success",true);resultMap.put("xxx",xxx);return resultMap;
}

3.5 下载文件

@ResponseBody
@RequestMapping("doDownloadFile")
public void doDownloadFile(HttpServletRequest request,HttpServletResponse response){File file=new File("D:\\Elasticsearch权威指南(中文版).pdf");String fileName=file.getName();//-----------------开始下载文件-------------try(ServletOutputStream out=response.getOutputStream();FileInputStream input=new FileInputStream(file);) {response.reset();response.setContentType("application/octet-stream; charset=utf-8");//防止文件名中文乱码fileName=URLEncoder.encode(fileName,"UTF-8");String agent=request.getHeader("User-Agent");if(StringUtils.isNotEmpty(agent)&&agent.toUpperCase().indexOf("MSIE")<0){///其他浏览器response.setHeader("Content-Disposition","attachment; filename*=utf-8'zh_cn'"+fileName);}else{///IE浏览器(6,7,8,9)response.setHeader("Content-Disposition","attachment; filename="+fileName);}//全部拷贝//out.write(FileUtils.readFileToByteArray(file));//缓存拷贝IOUtils.copyLarge(input,out,new byte[1024]);out.flush();}catch (Exception e){e.printStackTrace();}
}

4 其他代码

4.1 jquery发送ajax请求

发送json形式的请求

$.ajax({type: "POST",url:"<%=basePath%>/tempUser/doJsonBusiness",//将JavaScript值转换为JSON字符串,使请求以json的形式传输到后台data: JSON.stringify({"userName":"张三","age":18}),contentType: "application/json; charset=utf-8",dataType: "json",success: function (res) {alert(JSON.stringify(res));},error: function () {alert("通信异常,访问失败!");}
});

4.2 文件上传

建议动态创建from元素的形式,将下载事件绑定到按钮上(提单原始表单内按钮提交下载的形式),此种方式,更加灵活。

springMVC环境搭建相关推荐

  1. springmvc环境搭建及实例

    一. 软件环境 eclipse-jee-mars-R-win32-x86_64 jdk1.7.0_79 apache-tomcat-7.0.52 spring-framework-3.2.0.RELE ...

  2. 【SpringMVC入门】SpringMVC环境搭建、接收参数的几种方式、视图解析器、@ResponseBody

    一.SpringMVC 简介 1.SpringMVC 中重要组件 1.1 DispatcherServlet: 前端控制器,接收所有请求(如果配置/不包含jsp) 1.2 HandlerMapping ...

  3. springmvc环境搭建以及常见问题解决

    1.新建maven工程 a)  打开eclipse,file->new->project->Maven->Maven Project b)  下一步 c)   选择创建的工程为 ...

  4. springMVC环境搭建—HTTP状态 500 - 内部服务器错误

    文章目录 Failed to read candidate component class 有时候会出现500错误,有时候又正常,每次500就从头再来一遍,让人很不爽,所以决定找bug记录一下 Fai ...

  5. SpringMVC 环境搭建

    一.加入 jar – 包 commons-logging-1.1.3.jar spring-aop-4.0.0.RELEASE.jar spring-beans-4.0.0.RELEASE.jar s ...

  6. SpringMVC环境简单搭建

    本文介绍使用maven搭建Spring MVC 首先先介绍MVC(Model View Controller)模式: Model(模型):是应用程序中用于处理应用程序数据逻辑部分.通常模型对象负责在数 ...

  7. SpringMVC的环境搭建

    第一节 SpringMVC的环境搭建 2016年3月7日 星期一 09:04 MyBatis框架-->持久层框架-->Object[对象]Relation[关系型数据库]Mapping[在 ...

  8. SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一)

    SSM(Spring+SpringMVC+Mybatis)框架环境搭建(整合步骤)(一) 1. 前言 最近在写毕设过程中,重新梳理了一遍SSM框架,特此记录一下. 附上源码:https://gitee ...

  9. SpringMVC全注解环境搭建

    源代码: 链接:https://pan.baidu.com/s/1Lxb-riH–YQNIy3c0i8pFA 提取码:y3aq 文档地址:https://shphuang_aliyun.gitee.i ...

最新文章

  1. c语言连接数据库例子,c语言操作mysql数据库小例子_互帮互助(C language MySQL database operation example _ mutual help).doc...
  2. qgis修复拓扑错误_深度 | QGIS开发与发布规则解析
  3. easyui使用ajax获取json文件,easyui 加载本地json 文件的方法
  4. linux的samb配置文件,Linux系统如何配置samba文件服务器?
  5. Codeforces 600E Lomsat gelral (树上启发式合并)
  6. 1071svm函数 r语言_R语言机器学习之核心包e1071 - 数据分析
  7. ClickHouse常见问题及其解决方案
  8. github里的默认域_恕我直言!你对Python里的import一无所知
  9. dynamic 365 js 失去焦点_基于Auto.js的QQ好友动态秒赞系统
  10. debian查询端口进程_Linux查看端口、进程情况及kill进程
  11. 手动标记用例状态_【自动化接口用例】从 1 到 1000 过程中的实践和思考
  12. 花书+吴恩达深度学习(八)优化方法之 Batch normalization
  13. 【log4cpp_学习】2_log4cpp配置文件的使用
  14. html网页背景音乐代码
  15. 文件管理android2.3,ES文件浏览器(ES File Explorer)v4.0.2.3 优化版-好用的安卓文件管理器...
  16. 基于AD9854信号发生电路和MSK调制信号
  17. 开关电源变换器稳态原理分析(电感伏秒平衡及电容电荷平衡)
  18. -- 6、查询“李“姓老师的数量
  19. ubuntu安装和使用labellmg(含pyqt4的安装教程)
  20. 德雷福斯(Dreyfus)技能获取模型

热门文章

  1. Ubuntu16.04上安装SU(Seismic Unix)的基本步骤
  2. 监控和调整Linux网络协议栈的图解指南:接收数据
  3. FD.io VPP配置文件详解
  4. namespace关键字-1
  5. java i= i_java中 i!=i+1?你错了。 | 学步园
  6. 数学打比方(函数和卷积)
  7. java删除文件中的一行_在Linux中使用java和javac命令编译运行java文件
  8. Unity面试题精选(6)
  9. 微软发布首个 Chromium Edge stable 预览版
  10. python 仪表盘 ppt_Python强大的pyecharts绘画优美图形lt;三gt;