从零开始构建Spring项目

在Eclipse中构建Spring项目

目录

  • 0 构建项目
  • 1 修改项目 pom.xml
  • 2 修改项目 web.xml
  • 3 配置springmvc-servlet.xml
  • 4 写Controller
  • 5 静态资源
  • 6 文件上传
  • 7 通过application.properties进行参数注入

0. 构建项目

file-new-project选择mavenproject

从零开始构建Spring项目_第1张图片

然后选择webapp

从零开始构建Spring项目_第2张图片

1. 修改项目 pom.xml

添加spring-web 和 spring-webmvc 这两个依赖,以及fastjson,用来将bean转化为json


    4.0.0
    com.reno.zhihu
    zhihuSpyderWithGUI
    war
    0.0.1-SNAPSHOT
    zhihuSpyderWithGUI Maven Webapp
    http://maven.apache.org

    
        5.2.2.Final
        4.2.5.RELEASE 
        1.2.16
        3.8.1
    

    
        
        
            org.springframework
            spring-web
            ${spring-version}
        
        
            org.springframework
            spring-webmvc
            ${spring-version}
        
        
            junit
            junit
            3.8.1
            test
        
        
    
      com.fasterxml.jackson.core
      jackson-core
      2.8.1
    
    
      com.fasterxml.jackson.core
      jackson-databind
      2.8.1
    


    

    
        zhihuSpyderWithGUI
    

在其中添加两个Spring依赖


        org.springframework
        spring-web
        ${spring-version}



        org.springframework
        spring-webmvc
        ${spring-version}

2. 修改项目 web.xml



    Archetype Created Web Application
    
        springmvc
        org.springframework.web.servlet.DispatcherServlet
        
            contextConfigLocation
            classpath:springmvc-servlet.xml
        
        
    

    
        springmvc
        /
    

  • DispatcherServlet是前置控制器,拦截匹配的请求,Servlet拦截匹配规则要自已定义,把拦截下来的请求,依据相应的规则分发到目标Controller来处理,是配置spring MVC的第一步。

3. 在resources文件夹中建立springmvc-servlet.xml并且配置


                    

    
    

    
    

    
    

    
    
        
        
        
        
    

这个定义了自动扫描的根包,这个根据需要更改

前后缀的使用





当Controller return一个String的时候自动去匹配对应的   /WEB-INF/jsp/"String".jsp 文件

4. 写Controller

@Controller
@RequestMapping("/mvc")
public class mvcController {
    
        public mvcController() {
            System.out.println("===============");
        }
    
      @RequestMapping("/hello")
        public String hello(){        
            return "hello";
        }

         @RequestMapping("/hello2")
          public
         @ResponseBody
        Person getShopInJSON() {
          Person p = new Person();
          p.setAge(12);
          p.setName("adad");
          return p;
    }

}

return "hello"; 会与之前springmvc-servlet.xml中的前缀后缀拼接,最后返回一个 /WEB-INF/jsp/hello.jsp

return 一个对象 ,由于之前引入fastjson,将被直接转化成一个json串。

5. 静态资源

参考 http://blog.csdn.net/litlit023/article/details/41494093
在springmvc-servlet.xml中添加信息,这个文件根据你在web.xml中的配置而名字不同
一下字段添加在标签以内


    
    
    

6. 文件上传

在pom.xml中添加依赖


        
            commons-fileupload
            commons-fileupload
            1.3.1
        

这里最新版本是1.3.2 但是在 http://repo.maven.apache.org/maven2 这个仓库中 1.3.2的文件结构有点和其他的版本不一样,用maven构建的时候出现问题,故而使用1.3.1版本

在springmvc-servlet.xml中配置一下


从而实现上传功能 这里还可以做一些详细的配置比如文件的最大上传大小之类的
比如在bean中添加属性参数限制上传大小

    

前端上传界面

使用一个form 利用enctype="multipart/form-data"属性上传文件。 action="/zhihuSpyderWithUI/springUpload"代表了点击upload按钮以后再后端请求的url

使用spring mvc提供的类的方法上传文件

后台处理代码

import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import java.util.Iterator;

import javax.servlet.http.HttpServletRequest;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import org.springframework.web.multipart.commons.CommonsMultipartResolver;
import org.springframework.web.servlet.ModelAndView;


@Controller
public class UploadFile {
    /*
     *采用spring提供的上传文件的方法
     */
    @RequestMapping("/springUpload")
    public String springUpload(HttpServletRequest request) throws IllegalStateException, IOException
    {
        //将当前上下文初始化给  CommonsMutipartResolver (多部分解析器)
        CommonsMultipartResolver multipartResolver=new CommonsMultipartResolver(
                request.getSession().getServletContext());
        //检查form中是否有enctype="multipart/form-data"
        if(multipartResolver.isMultipart(request))
        {
            //将request变成多部分request
            MultipartHttpServletRequest multiRequest=(MultipartHttpServletRequest)request;
           //获取multiRequest 中所有的文件名
            Iterator iter=multiRequest.getFileNames();
            while(iter.hasNext())
            {
                //一次遍历所有文件
                MultipartFile file=multiRequest.getFile(iter.next().toString());
                if(file!=null)
                {
                 String basepath=request.getSession().getServletContext().getRealPath("uploadfile");
                    System.out.println(basepath);
                    path=basepath+"/"+System.nanoTime()+file.getOriginalFilename();
                    //上传
                    file.transferTo(new File(path));
                }
            }
        }
    

    return "success";
    }
}

这里将文件保存在webapp 下的upload目录底下

7. 通过application.properties进行参数注入

在xxx-servlet.xml中添加

这里application.properties文件存放在resources 目录底下

之后再任何的Bean类中使用一下代码

@Value("${cmd.dir}")
private String baseURL;

给baseURL赋值 ,其中cmd.dir对应了application.properties中的内容:

cmd.dir=xxx

你可能感兴趣的:(从零开始构建Spring项目)