史上最全最强SpringMVC详细示例实战教程(一)

IT IT哈哈

 一、SpringMVC基础入门,创建一个HelloWorld程序

  1.首先,导入SpringMVC需要的jar包。

史上最全最强SpringMVC详细示例实战教程(一)
  2.添加Web.xml配置文件中关于SpringMVC的配置

<!--configure the setting of springmvcDispatcherServlet and configure the mapping--><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-servlet.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>

  3.在src下添加springmvc-servlet.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:mvc="http://www.springframework.org/schema/mvc"    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd        http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd">                       <!-- scan the package and the sub package -->    <context:component-scan base-package="test.SpringMVC"/>    <!-- don't handle the static resource -->    <mvc:default-servlet-handler />    <!-- if you use annotation you must configure following setting -->    <mvc:annotation-driven />    <!-- configure the InternalResourceViewResolver -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"            id="internalResourceViewResolver">        <!-- 前缀 -->        <property name="prefix" value="/WEB-INF/jsp/" />        <!-- 后缀 -->        <property name="suffix" value=".jsp" />    </bean></beans>

  4.在WEB-INF文件夹下创建名为jsp的文件夹,用来存放jsp视图。创建一个hello.jsp,在body中添加“Hello World”。

  5.建立包及Controller,如下所示
史上最全最强SpringMVC详细示例实战教程(一)

  6.编写Controller代码

@Controller@RequestMapping("/mvc")public class mvcController {    @RequestMapping("/hello")    public String hello(){               return "hello";    }}

  7.启动服务器,键入 http://localhost:8080/项目名/mvc/hello

 二、配置解析

  1.Dispatcherservlet

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

  2.InternalResourceViewResolver

  视图名称解析器

  3.以上出现的注解

  @Controller 负责注册一个bean 到spring 上下文中

  @RequestMapping 注解为控制器指定可以处理哪些 URL 请求

 三、SpringMVC常用注解

  @Controller

  负责注册一个bean 到spring 上下文中

  @RequestMapping

  注解为控制器指定可以处理哪些 URL 请求

  @RequestBody

  该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上

  @ResponseBody

  该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区

  @ModelAttribute

  在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法

  在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数 –绑定到对象中,再传入入参将方法入参对象添加到模型中

  @RequestParam

  在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法

  @PathVariable

  绑定 URL 占位符到入参

  @ExceptionHandler

  注解到方法上,出现异常时会执行该方法

  @ControllerAdvice

  使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常

 四、自动匹配参数

//match automatically@RequestMapping("/person")public String toPerson(String name,double age){    System.out.println(name+" "+age);    return "hello";}

 五、自动装箱

  1.编写一个Person实体类

package test.SpringMVC.model;public class Person {    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public int getAge() {        return age;    }    public void setAge(int age) {        this.age = age;    }    private String name;    private int age;}

  2.在Controller里编写方法

//boxing automatically@RequestMapping("/person1")public String toPerson(Person p){    System.out.println(p.getName()+" "+p.getAge());    return "hello";}

 六、使用InitBinder来处理Date类型的参数

//the parameter was converted in initBinder@RequestMapping("/date")public String date(Date date){    System.out.println(date);    return "hello";}//At the time of initialization,convert the type "String" to type "date"@InitBinderpublic void initBinder(ServletRequestDataBinder binder){    binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),            true));}

 七、向前台传递参数

//pass the parameters to front-end@RequestMapping("/show")public String showPerson(Map<String,Object> map){    Person p =new Person();    map.put("p", p);    p.setAge(20);    p.setName("jayjay");    return "show";}

  前台可在Request域中取到"p"

 八、使用Ajax调用

//pass the parameters to front-end using ajax@RequestMapping("/getPerson")public void getPerson(String name,PrintWriter pw){    pw.write("hello,"+name);       }@RequestMapping("/name")public String sayHello(){    return "name";}

  前台用下面的Jquery代码调用

$(function(){    $("#btn").click(function(){       $.post("mvc/getPerson",{name:$("#name").val()},function(data){            alert(data);        });    });});

 九、在Controller中使用redirect方式处理请求

//redirect@RequestMapping("/redirect")public String redirect(){    return "redirect:hello";}

 十、文件上传

  1.需要导入两个jar包

史上最全最强SpringMVC详细示例实战教程(一)

  2.在SpringMVC配置文件中加入

<!-- upload settings --><bean id="multipartResolver"  class="org.springframework.web.multipart.commons.CommonsMultipartResolver">    <property name="maxUploadSize" value="102400000"></property></bean>

  3.方法代码

@RequestMapping(value="/upload",method=RequestMethod.POST)public String upload(HttpServletRequest req) throws Exception{    MultipartHttpServletRequest mreq = (MultipartHttpServletRequest)req;    MultipartFile file = mreq.getFile("file");    String fileName = file.getOriginalFilename();    SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");           FileOutputStream fos = new FileOutputStream(req.getSession().getServletContext().getRealPath("/")+            "upload/"+sdf.format(new Date())+fileName.substring(fileName.lastIndexOf('.')));    fos.write(file.getBytes());    fos.flush();    fos.close();    return "hello";}

  4.前台form表单

<form action="mvc/upload" method="post" enctype="multipart/form-data">    <input type="file" name="file"><br>    <input type="submit" value="submit"></form>

 十一、使用@RequestParam注解指定参数的name

@Controller@RequestMapping("/test")public class mvcController1 {    @RequestMapping(value="/param")    public String testRequestParam(@RequestParam(value="id") Integer id,            @RequestParam(value="name")String name){        System.out.println(id+" "+name);        return "/hello";    }   }

 十二、RESTFul风格的SringMVC

  1.RestController

@Controller@RequestMapping("/rest")public class RestController {    @RequestMapping(value="/user/{id}",method=RequestMethod.GET)    public String get(@PathVariable("id") Integer id){        System.out.println("get"+id);        return "/hello";    }    @RequestMapping(value="/user/{id}",method=RequestMethod.POST)    public String post(@PathVariable("id") Integer id){        System.out.println("post"+id);        return "/hello";    }    @RequestMapping(value="/user/{id}",method=RequestMethod.PUT)    public String put(@PathVariable("id") Integer id){        System.out.println("put"+id);        return "/hello";    }    @RequestMapping(value="/user/{id}",method=RequestMethod.DELETE)    public String delete(@PathVariable("id") Integer id){        System.out.println("delete"+id);        return "/hello";    }}

  2.form表单发送put和delete请求

  在web.xml中配置

<!-- configure the HiddenHttpMethodFilter,convert the post method to put or delete --><filter>    <filter-name>HiddenHttpMethodFilter</filter-name>    <filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class></filter><filter-mapping>    <filter-name>HiddenHttpMethodFilter</filter-name>    <url-pattern>/*</url-pattern></filter-mapping>

  在前台可以用以下代码产生请求

<form action="rest/user/1" method="post">    <input type="hidden" name="_method" value="PUT">    <input type="submit" value="put"></form><form action="rest/user/1" method="post">    <input type="submit" value="post"></form><form action="rest/user/1" method="get">    <input type="submit" value="get"></form><form action="rest/user/1" method="post">    <input type="hidden" name="_method" value="DELETE">    <input type="submit" value="delete"></form>

 十三、返回json格式的字符串

  1.导入以下jar包
史上最全最强SpringMVC详细示例实战教程(一)

  2.方法代码

@Controller@RequestMapping("/json")public class jsonController {    @ResponseBody    @RequestMapping("/user")    public  User get(){        User u = new User();        u.setId(1);        u.setName("jayjay");        u.setBirth(new Date());        return u;    }} 

更多相关文章

  1. 使用 ThreadLocal 变量的时机和方法
  2. clone 方法是如何工作的
  3. VS中scanf等函数报错解决方法
  4. jQuery编程基础精华02(属性、表单过滤器,元素的each,表单选择器,子元
  5. jQuery的$.getJSON方法在IE浏览器下失效的解决方案
  6. JavaScript / jQuery:如何链接使用console.log()的方法
  7. 在体html中搜索文本的最佳方法是什么?
  8. jQuery 事件绑定方法(bind hover toggle live.... )、删除事件方法
  9. jQuery Ajax 方法调用 Asp.Net WebService

随机推荐

  1. wcf什么意思?关于wcf的实例教程
  2. Visual Studio 中自定义生成事件的详细介
  3. 值类型对象的两种表示形式
  4. net 使用 data.oracleclient 出现的错误
  5. 经典的IoC/DI容器--StructureMap
  6. 最新版近乎v5.0新型社区发布介绍
  7. 什么是构造器?引用类型是什么?
  8. 用Shape做动画的实例详解
  9. ASP.NET MVC 遇到JSON循环调用的问题应该
  10. asp .net 面试题及答案分享