目录
1、eclipse构建maven结构-注意自定义maven项目名称-这里叫fileup
2、配置pom.xml-满足SpringMVC-json映射-文件传
5、编写Controller.java-HomeController.java
6.1、applicationContext.xml没有具体功能,仅包含子配置文件
6.2、applicationContext-mvc.xml -Spring MVC的基础配置
7、在web.xml 中配置 Spring MVC 的 DispatcherServlet以及字符过滤器
1、eclipse构建maven结构-注意自定义maven项目名称-这里叫fileup
参考文章 http://blog.csdn.net/bestcxx/article/details/54589039
2、配置pom.xml-满足SpringMVC-json映射-文件传
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.bestcxx.stu</groupId>
<artifactId>fileup</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>war</packaging>
<name>fileup</name>
<description>文件上传</description>
<properties>
<!-- 设置utf-8编码,必须设置 -->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- spring 4.0.0 -->
<!-- 设置spring版本 -->
<springframework.version>4.3.0.RELEASE</springframework.version>
<!-- 设置jackson版本 -->
<jackson.version>2.5.4</jackson.version>
</properties>
<build>
<!-- 打包的项目名称 -->
<finalName>${project.name}</finalName>
<plugins>
<!-- 编译jdk版本设置 1.6 -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<uriEncoding>${project.build.sourceEncoding}</uriEncoding>
</configuration>
</plugin>
<!-- jetty插件 -->
<plugin>
<groupId>org.mortbay.jetty</groupId>
<artifactId>maven-jetty-plugin</artifactId>
<version>6.1.26</version>
<configuration>
<!-- 通过jetty访问项目时的项目名称 ${project.build.outputDirectory} 为war包名 -->
<webApp>
<contextPath>${project.build.outputDirectory}</contextPath>
</webApp>
<!-- jetty附属配置,未启用 -->
<!-- <webDefaultXml>src/main/resources/webdefault.xml</webDefaultXml> -->
<!-- configuration.scanIntervalSeconds 配置表示新代码的扫描时间间隔(秒),值 <= 0 表示不扫描 -->
<scanIntervalSeconds>0</scanIntervalSeconds>
<!-- 端口设置 -->
<connectors>
<connector implementation="org.mortbay.jetty.nio.SelectChannelConnector">
<port>8085</port>
</connector>
</connectors>
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<!-- junit仅测试环境使用 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!-- 设置spring依赖 -->
<!-- spring-mvc -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-orm</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>${springframework.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${springframework.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.3.0.RELEASE</version>
</dependency>
<!-- servlet -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
<!-- tomcat的话只在编译时和测试时运行,本文jetty插件则注释掉 -->
<!-- <scope>provided</scope> -->
</dependency>
<!-- jstl标签 -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>jstl</artifactId>
<version>1.2</version>
<scope>runtime</scope>
</dependency>
<!-- 文件上传 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.3.1</version>
</dependency>
<!-- 实体自动映射json -->
<!-- json 支持 -->
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>${jackson.version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
</dependencies>
</project>
3、css和js静态文件夹目录创建
webapp/WEB-INF/css 下放.css 样式文件
webapp/WEB-INF/js 下放 .js 样式文件
4、页面文件创建-jsp
webapp/WEB-INF/views 下放jsp文件
这里只有一个home.jsp,作为待会的测试访问页
home.jsp的内容没有什么特殊的
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>首页</title>
</head>
<body>
<h1>Hello World</h1>
${i1}<br/>
${i2}
</body>
</html>
5、编写Controller.java-HomeController.java
package包的命名规则:组织名.项目名.功能模块名[.功能子模块名]
该类,Get方法访问路径 home或者/将被引导到home.jsp页面,当然这个需要后续的配置
package com.bestcxx.stu.fileup.controller;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.GetMapping;
@Controller
//默认就是单例的,每次访问 i 值都会累加
@Scope(ConfigurableBeanFactory.SCOPE_SINGLETON)
public class HomeController {
/**定义一个常量*/
private int i=0;
@GetMapping(value={"/home","/"})
public String homePage(HttpServletRequest request){
request.setAttribute("i1",i);
i++;
request.setAttribute("i2",i);
return "home";
}
}
6、创建xml配置文件-主文件包含子文件
src/main/resources
applicationContext.xml为子文件,spring文件夹下的文件为子文件
使用这种结构的好处是结构清晰,便于功能管理
一般我们使用 ContextLoaderListener 加载 applicationContext.xml 文件,该文件包含其他除 SpringMVC 相关配置到其他配置文件(本文就是 applicationContext-bean.xml,你可以添加数据库配置、事务配置、消息队列配置文件等)
使用 DispatcherServlet 加载 SpringMVC 相关到配置文件(本文就是 applicationContext-mvc.xml)和Controller 相关到Bean
6.1、applicationContext.xml没有具体功能,仅包含子配置文件
后期新增其他配置文件时往里面添加即可
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:orm="http://www.springframework.org/schema/orm"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd
http://www.springframework.org/schema/orm http://www.springframework.org/schema/orm/spring-orm-4.3.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
">
<!-- 引入其他 子配置文件 -->
<import resource="classpath:spring/applicationContext-bean.xml"/><!--controller、service等bean注册-->
</beans>
6.2、applicationContext-mvc.xml -Spring MVC的基础配置
该文件包含 SpringMVC 相关的 Controller、视图解析器、静态资源配置、拦截器等
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:orm="http://www.springframework.org/schema/orm"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd
http://www.springframework.org/schema/orm http://www.springframework.org/schema/orm/spring-orm-4.3.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
">
<!-- 配置注解驱动 -->
<mvc:annotation-driven/>
<!-- 定义默认访问 -->
<mvc:view-controller path="/" view-name="forward:home"/>
<!-- 处理静态资源 -->
<mvc:resources location="/WEB-INF/css/" mapping="/css/**" />
<mvc:resources location="/WEB-INF/js/" mapping="/js/**" />
<!-- 配置视图解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/>
<property name="contentType" value="text/html"/>
<property name="prefix" value="/WEB-INF/views/"/>
<property name="suffix" value=".jsp"/>
</bean>
<!--Controller 控制器包,注意本文件上面到部分必须和 Controller 一起被 DispatcherServet 加载,可以放俩文件 -->
<context:component-scan base-package="com.bestcxx.stu.fileup.controller"/>
</beans>
6.3、applicationContext-bean.xml-Spring MVC的controller\service等bean注册
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:orm="http://www.springframework.org/schema/orm"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.3.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.3.xsd
http://www.springframework.org/schema/orm http://www.springframework.org/schema/orm/spring-orm-4.3.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
">
<!-- 基础bean配置 -->
<!-- Service等 类扫描:本项目略 -->
<!--<context:component-scan base-package=""/> -->
</beans>
7、在web.xml 中配置 Spring MVC 的 DispatcherServlet以及字符过滤器
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<!-- 自定义 applicationContext.xml 位置 -->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- http://blog.csdn.net/fooe84/archive/2006/04/28/695150.aspx 防止内存泄漏 -->
<listener>
<listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class>
</listener>
<!-- Spring DispatcherServlet 配置 -->
<servlet>
<servlet-name>fileupservlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring/applicationContext-mvc.xml</param-value>
</init-param>
<!-- 最小值为0,设定值越小的servlet越先被在启动阶段运行其init()方法,一般我们只会设置一个servlet
如果不设置,则在初始化阶段不运行 init方法,首次访问时才运行且仅运行一次 -->
<load-on-startup>1</load-on-startup>
<!-- 需Servlet 3.0 才支持,允许异步执行 servlet -->
<async-supported>true</async-supported>
</servlet>
<servlet-mapping>
<servlet-name>fileupservlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<!-- 字符过滤器配置 -->
<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>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
8、setting.xml 配置jetty插件
http://blog.csdn.net/bestcxx/article/details/72626978-4、maven中配置jetty 插件
9、启动访问
10、资源下载
本文的SpringMVC Maven 项目提供了一个小Demo
https://download.csdn.net/download/bestcxx/11454361