A. 如何搭建spring mvc框架
spring框架jar包
1、下载spring源包
spring地址:http://www.springsource.org/download
我下的是spring-framework-3.1.0.RELEASE-with-docs.zip
下载依赖包:spring-framework-3.0.5.RELEASE-dependencies.zip
注意官网上3.0.3版本以后同版本依赖包不提供下载
2、导入所需jar包
引入dist目录下除了下面三个其余所有包
org.springframework.web.struts-3.1.0.RELEASE.jar
org.springframework.spring-library-3.1.0.RELEASE.libd
org.springframework.web.portlet-3.1.0.RELEASE.jar
引入依赖包下com.springsource.org.apache.commons.logging-1.1.1.jar及com.springsource.org.aopalliance-1.0.0.jar
spring框架配置
1、web.xml配置
[html] view plain 
<?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"   
    xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"  
    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">  
    <context-param>  
        <param-name>contextConfigLocation</param-name>  
        <!-- 应用上下文配置文件 -->  
        <param-value>/WEB-INF/spring-servlet.xml</param-value>  
    </context-param>  
    <listener>  
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  
    </listener>  
    <!-- 配置spring核心servlet -->  
    <servlet>  
        <servlet-name>spring</servlet-name>  
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>  
        <load-on-startup>1</load-on-startup>  
    </servlet>  
    <!-- url-pattern配置为/,不带文件后缀,会造成其它静态文件(js,css等)不能访问。如配为*.do,则不影响静态文件的访问 -->  
    <servlet-mapping>  
        <servlet-name>spring</servlet-name>  
        <url-pattern>/</url-pattern>  
    </servlet-mapping>  
</web-app>  
2、应用上下文配置
spring-servlet.xml即配置用于开启基于注解的springMVC功能,照web.xml中设定,路径为WEB-INF下
[html] view plain 
<beans xmlns="http://www.springframework.org/schema/beans"  
 xmlns:context="http://www.springframework.org/schema/context"  
 xmlns:p="http://www.springframework.org/schema/p"  
 xmlns:mvc="http://www.springframework.org/schema/mvc"  
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  
 xsi:schemaLocation="http://www.springframework.org/schema/beans  
      http://www.springframework.org/schema/beans/spring-beans-3.0.xsd  
      http://www.springframework.org/schema/context  
      http://www.springframework.org/schema/context/spring-context.xsd  
      http://www.springframework.org/schema/mvc  
      http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">  
     <!-- 启动注解驱动的Spring MVC功能,注册请求url和注解POJO类方法的映射-->  
     <mvc:annotation-driven />  
     <!-- 启动包扫描功能,以便注册带有@Controller、@Service、@repository、@Component等注解的类成为spring的bean -->  
     <context:component-scan base-package="com.mvc.rest" />  
     <!-- 对模型视图名称的解析,在请求时模型视图名称添加前后缀 -->  
     <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/WEB-INF/view/" p:suffix=".jsp" />  
</beans>  
Demo例子
1、根据spring-servlet.xml配置的包路径(com.mvc.rest)新建Constroller
[java] view plain 
package com.mvc.rest;  
import javax.servlet.http.HttpServletRequest;  
import javax.servlet.http.HttpServletResponse;  
import org.springframework.stereotype.Controller;  
import org.springframework.ui.ModelMap;  
import org.springframework.web.bind.annotation.PathVariable;  
import org.springframework.web.bind.annotation.RequestMapping;  
import org.springframework.web.bind.annotation.RequestMethod;  
import org.springframework.web.servlet.ModelAndView;  
@Controller  
public class RestConstroller {  
    public RestConstroller() {}  
    @RequestMapping(value = "/login/{user}", method = RequestMethod.GET)  
    public ModelAndView myMethod(HttpServletRequest request,HttpServletResponse response,   
            @PathVariable("user") String user, ModelMap modelMap) throws Exception {  
        modelMap.put("loginUser", user);  
        return new ModelAndView("/login/hello", modelMap);  
    }  
    @RequestMapping(value = "/welcome", method = RequestMethod.GET)  
    public String registPost() {  
        return "/welcome";  
    }  
}  
2、建jsp视图
视图路径在spring-servlet.xml配置(/WEB-INF/view/),据上述RestConstroller 类,我们在WEB-INF下建立view目录,在view下建立welcome.jsp及login/hello.jsp
welcome.jsp随意,hello.jsp代码如下:
[html] view plain 
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>  
<%  
String path = request.getContextPath();  
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
%>  
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
<html>  
<head>  
<base href="<%=basePath%>">  
<title>My JSP 'hello.jsp' starting page</title>  
<meta http-equiv="pragma" content="no-cache">  
<meta http-equiv="cache-control" content="no-cache">  
</head>  
<body>  
    你好:<%=request.getAttribute("loginUser") %>,现在时间是<%= new Date() %>  
</body>  
</html>  
3、部署访问
http://localhost:8080/SpringMvcDemo/welcome
B. java-SpringMVC 后台怎么获取前台jsp页面中file中的文件
1.打开SpringMVC的文件上传功能:***-servlet.xml中配置

C. springmvc使用poi导出excel需要什么jar
Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。
这里的方法支持导出excel至项目所在服务器,或导出至客户端浏览器供用户下载,下面我把两个实例都放出来。
1.下载所需POI的jar包,并导入项目。
2.添加一个User类,用于存放用户实体,类中内容如下:
1 package com.mvc.po;
 2 
 3 public class User {
 4     private int id;
 5     private String name;
 6     private String password;
 7     private int age;
 8 
 9     public User() {
10 
11     }
12 
13     public User(int id, String name, String password, int age) {
14         this.id = id;
15         this.name = name;
16         this.password = password;
17         this.age = age;
18     }
19     public int getId() {
20         return id;
21     }
22     public void setId(int id) {
23         this.id = id;
24     }
25     public String getName() {
26         return name;
27     }
28     public void setName(String name) {
29         this.name = name;
30     }
31     public String getPassword() {
32         return password;
33     }
34     public void setPassword(String password) {
35         this.password = password;
36     }
37     public int getAge() {
38         return age;
39     }
40     public void setAge(int age) {
41         this.age = age;
42     }
43 }
3.添加一个UserController类,类中内容如下:
1 package com.mvc.controller;
 2  
 3 import java.text.SimpleDateFormat;
 4 import java.util.Date;
 5  
 6 import javax.servlet.ServletOutputStream;
 7 import javax.servlet.http.HttpServletResponse;
 8  
 9 import org.springframework.stereotype.Controller;
10 import org.springframework.beans.factory.annotation.Autowired;
11 import org.springframework.web.bind.annotation.RequestMapping;
12 import org.springframework.web.bind.annotation.ResponseBody;
13  
14 import com.mvc.po.User;
15 import com.mvc.service.UserService;
16  
17 @Controller
18 public class UserController {
19  
20     @Autowired
21     private UserService userService;
22 
23     @RequestMapping("/export.do")
24     public @ResponseBody String export(HttpServletResponse response){    
25         response.setContentType("application/binary;charset=UTF-8");
26         try{
27             ServletOutputStream out=response.getOutputStream();
28             String fileName=new String(("UserInfo "+ new SimpleDateFormat("yyyy-MM-dd").format(new Date())).getBytes(),"UTF-8");
29             response.setHeader("Content-disposition", "attachment; filename=" + fileName + ".xls");
30             String[] titles = { "用户编号", "用户姓名", "用户密码", "用户年龄" }; 
31             userService.export(titles, out);
32             return "success";
33         } catch(Exception e){
34             e.printStackTrace();
35             return "导出信息失败";
36         }
37     }
38 }
4.添加一个接口类UserService和实现类UserServiceImpl,类中内容如下:
1 package com.mvc.service;
2 
3 import javax.servlet.ServletOutputStream;
4 import com.mvc.po.User;
5 
6 public interface UserService {
7     public void export(String[] titles, ServletOutputStream out);
8 }
1 package com.mvc.service.impl;
 2 
 3 import java.text.SimpleDateFormat;
 4 import java.util.List;
 5 
 6 import javax.servlet.ServletOutputStream;
 7 
 8 import com.mvc..UserDAO;
 9 import com.mvc.po.User;
10 import com.mvc.service.UserService;
11 
12 import org.apache.poi.hssf.usermodel.HSSFCell;
13 import org.apache.poi.hssf.usermodel.HSSFCellStyle;
14 import org.apache.poi.hssf.usermodel.HSSFRow;
15 import org.apache.poi.hssf.usermodel.HSSFSheet;
16 import org.apache.poi.hssf.usermodel.HSSFWorkbook;
17 import org.springframework.beans.factory.annotation.Autowired;
18 import org.springframework.stereotype.Service;
19 
20 @Service
21 public class UserServiceImpl implements UserService {
22 
23     @Autowired
24     private UserDAO userDAO;
25     
26     @Override
27     public void export(String[] titles, ServletOutputStream out) {                
28         try{
29             // 第一步,创建一个workbook,对应一个Excel文件
30             HSSFWorkbook workbook = new HSSFWorkbook();
31             // 第二步,在webbook中添加一个sheet,对应Excel文件中的sheet
32             HSSFSheet hssfSheet = workbook.createSheet("sheet1");
33             // 第三步,在sheet中添加表头第0行,注意老版本poi对Excel的行数列数有限制short
34             HSSFRow hssfRow = hssfSheet.createRow(0);
35             // 第四步,创建单元格,并设置值表头 设置表头居中
36             HSSFCellStyle hssfCellStyle = workbook.createCellStyle();
37             //居中样式
38             hssfCellStyle.setAlignment(HSSFCellStyle.ALIGN_CENTER);
39 
40             HSSFCell hssfCell = null;
41             for (int i = 0; i < titles.length; i++) {
42                 hssfCell = hssfRow.createCell(i);//列索引从0开始
43                 hssfCell.setCellValue(titles[i]);//列名1
44                 hssfCell.setCellStyle(hssfCellStyle);//列居中显示                
45             }
46             
47             // 第五步,写入实体数据 
48             List<User> users = userDAO.query();            
49 
50             SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
51             if(users != null && !users.isEmpty()){
52                 for (int i = 0; i < users.size(); i++) {
53                     hssfRow = hssfSheet.createRow(i+1);                
54                     User user = users.get(i);
55                     
56                     // 第六步,创建单元格,并设置值
57                     int userid = 0;
58                     if(user.getId() != 0){
59                         userid = user.getId();
60                     }
61                     hssfRow.createCell(0).setCellValue(userid);
62                     String username = "";
63                     if(user.getName() != null){
64                         username = user.getName();
65                     }
66                     hssfRow.createCell(1).setCellValue(username);
67                     String password = "";
68                     if(user.getPassword() != null){
69                         password = user.getPassword();
70                     }
71                     hssfRow.createCell(2).setCellValue(password);
72                     int age = 0;
73                     if(user.getAge() != 0){
74                         age = user.getAge();
75                     }
76                     hssfRow.createCell(3).setCellValue(age);
77                 }
78             }
79             
80             // 第七步,将文件输出到客户端浏览器
81             try {
82                 workbook.write(out);
83                 out.flush();
84                 out.close();
85 
86             } catch (Exception e) {
87                 e.printStackTrace();
88             }
89         }catch(Exception e){
90             e.printStackTrace();
91             throw new Exception("导出信息失败!");
92         }    
93     }
94 }
5.添加一个接口类UserDAO和实现类UserDAOImpl,类中内容如下:
1 package com.mvc.;
2 
3 import java.util.List;
4 import com.mvc.po.User;
5 
6 public interface UserDAO {
7     List<User> query();    
8 }
1 package com.mvc..impl;
 2 
 3 import java.util.List;
 4 import java.sql.ResultSet;
 5 import java.sql.SQLException;
 6 
 7 import com.mvc..UserDAO;
 8 import com.mvc.po.User;
 9 
10 import org.springframework.stereotype.Repository;
11 import org.springframework.beans.factory.annotation.Autowired;
12 import org.springframework.jdbc.core.JdbcTemplate;
13 import org.springframework.jdbc.core.RowMapper;
14 
15 @Repository
16 public class UserDAOImpl implements UserDAO {
17 
18     @Autowired
19     private JdbcTemplate jdbcTemplate;
20 
21     public List<User> query() {
22         return this.jdbcTemplate.query("select * from student",
23                 new RowMapper<User>() {
24                     public User mapRow(ResultSet rs, int arg1)
25                             throws SQLException {
26                         return new User(rs.getInt("sId"),
27                                 rs.getString("sName"), rs.getString("sPwd"), rs
28                                         .getInt("sAge"));
29                     }
30                 });
31     }
32 }
这样就完成了excel导出至客户端浏览器,当然有时候也会用到导出excel至服务器上。只需要对本文步骤4中的第七步文件输出方式进行修改,如下:
1 // 第七步,将文件存到指定位置
2             try {
3                 FileOutputStream fileOutputStream = new FileOutputStream("C:/user.xls");//指定路径与名字和格式
4                 workbook.write(fileOutputStream);//讲数据写出去
5                 fileOutputStream.close();//关闭输出流
6             } catch (Exception e) {
7                 e.printStackTrace();
8             }
然后去除controller类中的out参数设置就ok了。也可以看出其实两种方式只是最终保存方式不同,其他步骤是共通的。
D. 《看透SpringMVC源代码分析与实践》pdf下载在线阅读,求百度网盘云资源
《看透Spring MVC》(韩路彪)电子书网盘下载免费在线阅读
资源链接:
链接:https://pan..com/s/1OzllRtwg7BeNHKqPpG4Nsw
书名:看透Spring MVC
作者:韩路彪
豆瓣评分:6.8
出版社:机械工业出版社
出版年份:2016-1-1
页数:309
内容简介:
国内资深Web开发专家根据Spring MVC全新技术撰写,基于实际生产环境,从基础知识、源代码和实战3个维度对Spring MVC的结构和实现进行详细讲解
全面介绍Spring MVC的架构、原理、核心概念和操作,通过案例完整呈现Tomcat的实现,系统总结Spring MVC九大组件的处理以及常用的技巧和实践
在大型网站和复杂系统的开发中,Java具有天然的优势,而在Java的Web框架中Spring MVC以其强大的功能以及简单且灵活的用法受到越来越多开发者的青睐。本书不仅详细地分析Spring MVC的结构及其实现细节,而且讲解网站的不同架构及其演变的过程,以及网络底层协议的概念及其实现方法,帮助读者开发更高效的网站。
通过本书,你将:
系统学习网站的各种架构以及每种架构所针对的问题。
深入分析Web底层协议及其实现方法。
系统理解Spring MVC框架,为灵活开发高质量产品打下坚实基础。
深入理解Spring MVC的编程技巧和设计理念,提高综合思考、整体架构的能力。
学习作者自研的源代码分析方法——器用分析法,高效学习程序源代码。

E. 一个简单的SpringMVC需要哪些jar包
spring依赖的jar包如下:
下面是每个jar包的说明
spring.jar 是包含有完整发布模块的单个jar 包。但是不包括mock.jar, aspects.jar, spring-portlet.jar, and spring-hibernate2.jar。
spring-src.zip就是所有的源代码压缩包。
除了spring.jar 文件,Spring 还包括有其它21 个独立的jar 包,各自包含着对应的Spring组件,用户可以根据自己的需要来选择组合自己的jar 包,而不必引入整个spring.jar 的所有类文件。
spring-core.jar
这个jar 文件包含Spring 框架基本的核心工具类。Spring 其它组件要都要使用到这个包里的类,是其它组件的基本核心,当然你也可以在自己的应用系统中使用这些工具类。
外部依赖Commons Logging, (Log4J)。
spring-beans.jar
这个jar 文件是所有应用都要用到的,它包含访问配置文件、创建和管理bean 以及进行Inversion of Control / Dependency Injection(IoC/DI)操作相关的所有类。如果应用只需基本的IoC/DI 支持,引入spring-core.jar 及spring-beans.jar 文件就可以了。
外部依赖spring-core,(CGLIB)。
spring-aop.jar
这个jar 文件包含在应用中使用Spring 的AOP 特性时所需的类和源码级元数据支持。使用基于AOP 的Spring特性,如声明型事务管理(Declarative Transaction Management),也要在应用里包含这个jar包。
外部依赖spring-core, (spring-beans,AOP Alliance, CGLIB,Commons Attributes)。
spring-context.jar
这个jar 文件为Spring 核心提供了大量扩展。可以找到使用Spring ApplicationContext特性时所需的全部类,JDNI 所需的全部类,instrumentation组件以及校验Validation 方面的相关类。
外部依赖spring-beans,
F. SpringMVC表单提交时,多文件上传和单个文件上传有些什么区别
基于Spring3 MVC实现基于form表单文件上传
一:杂项准备
环境搭建参考这里-http://blog.csdn.net/jia20003/article/details/8471169
二:前台页面
根据RFC1867,只要在提交表单中声明提交方法为POST,enctype属
性声明为multipart/form-data, action声明到要提交的url即可。具体如下:
三:spring配置
使用spring3的MultipartHttpReqest来接受来自浏览器的发送的文件内容。
需要配Multipart解析器在express-servlet.xml中。内容如下:
同时还需要在maven的pom.xml文件添加apachefileupload与common-io两个包。
四:Controller中方法实现
[java] view plain
@RequestMapping(value = "/uploadFile", method = RequestMethod.POST)  
public ModelAndView getUploadFile(HttpServletRequest request, HttpServletResponse response) {  
    System.out.println("fucking spring3 MVC upload file with Multipart form");  
    String myappPath = request.getSession().getServletContext().getRealPath("/");  
    try {  
        if (request instanceof MultipartHttpServletRequest) {  
            MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;  
            System.out.println("fucking spring3 MVC upload file with Multipart form");  
            // String myappPath = multipartRequest.getServletContext().getRealPath("/");   
            // does not work, oh my god!!  
            MultipartFile file = multipartRequest.getFiles("userfile1").get(0);  
            long size = file.getSize();  
            byte[] data = new byte[(int) size];  
            InputStream input = file.getInputStream();  
            input.read(data);  
              
            // create file, if no app context path, will throws access denied.  
            // seems like you could not create any file at tomcat/bin directory!!!  
            File outFile = new File(myappPath + File.separator + file.getOriginalFilename());  
            if(!outFile.exists()) {  
                outFile.createNewFile();  
                System.out.println("full path = " + outFile.getAbsolutePath());  
            } else {  
                System.out.println("full path = " + outFile.getAbsolutePath());  
            }  
            FileOutputStream outStream = new FileOutputStream(outFile);  
              
            outStream.write(data);  
            outStream.close();  
            input.close();  
        }  
    } catch (Exception e) {  
        e.printStackTrace();  
    }  
  
    return new ModelAndView("welcome");  
}
G. 如何实现springmvc将返回的给前端的pdf文件放在浏览器里预览
1,在web路径下建立一个uploadFiles文件夹。

2,在springMVC里映射文件就像映射静态文件那样。
<mvc:resources mapping="/pdf/**" location="/uploadFiles/"/>
3,写个controller返回PDF的URL路径。
@Controller
@CrossOrigin(origins = "*")
public class PDFController {
  
  @ResponseBody
  @RequestMapping(value = "/pdf", method = RequestMethod.GET)
  public String pdfDownload() throws IOException
  {
    String retString = null;
    String dir = XXXX文件在服务器中路径。
    String path = httpServletRequest.getRequestURL() + dir.substring(dir.lastIndexOf('\'));
    retString = path.replaceAll("\\","/");
    Map<String,Object >map = new HashMap<>();
    map.put("code",0);
    map.put("pdf",retString);
    return JSON.toJSONString(map);
  }
}
4,返回的JSON数据。
{"code":0,"pdf":"8080/pdf/1472128890165sample.pdf"},前面加上http://127.0.0.1:。
5,浏览器中直接打开pdf这个url就可以预览PDF啦。