Spring MVC屬於SpringFrameWork的後續產品,已經融合在Spring Web Flow裏面。Spring 框架提供了構建 Web 應用程序的全功能 MVC 模塊。
參考的文章:
http://elf8848.iteye.com/blog/875830/
http://blog.csdn.net/chichengit/article/details/12098111
記錄一些基本的使用方法【版本要比較新】
package com.smvc.action;
import java.io.File;
import java.util.Date;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import com.smvc.modal.User;
import com.smvc.service.UserService;
@Controller
@RequestMapping("/test")
public class TestController {
private UserService userService;
@Autowired
public void setUserService(UserService userService) {
this.userService = userService;
}
/**
* @方法一[現代方式]
* @功能 http://localhost:8081/springMVC/test/test01?id=123
* 請求方式:get
* **/
@RequestMapping(value="/test01",method=RequestMethod.GET)
public String testSpringmvcOne(@RequestParam("id") String id,Model model){
User user = userService.getUser(id);
model.addAttribute(user);
return "test";
}
/**
* @方法二[現代方式]
* @功能 http://localhost:8081/springMVC/test/test02/123
* 請求方式:get
* **/
@RequestMapping(value="/test02/{id}",method=RequestMethod.GET)
public String testSpringmvcTwo(@PathVariable("id") String id,Map<String,Object> model){
User user = userService.getUser(id);
model.put("user", user);
return "test";
}
/**
* @方法三[傳統方式]
* @功能 http://localhost:8081/springMVC/test/test03?id=123
* 請求方式:get
* **/
@RequestMapping(value="/test03",method=RequestMethod.GET)
public String testSpringmvcThree(HttpServletRequest request){
String id = String.valueOf(request.getParameter("id"));
User user = userService.getUser(id);
request.setAttribute("user", user);
return "test";
}
/**
* @方法四[現代方式]
* @功能 http://localhost:8081/springMVC/test/admin?add
* 請求方式:get
* **/
//跳轉頁面
@RequestMapping(value="/admin",method=RequestMethod.GET,params="add")
public String testSpringmvcBindingOne(){
return "admin/index";
}
//保持成功之後,重定向
@RequestMapping(value="/save",method=RequestMethod.POST,params="add")
public String testSpringmvcBindingTwo(User user){
userService.add(user);
//跳轉到方法二
return "redirect:test02/"+user.getId();
}
/**
* @方法五 文件上傳
* @功能 http://localhost:8081/springMVC/test/fileUp
* 請求方式:get
* **/
@RequestMapping(value="/fileUp",method=RequestMethod.POST)
public String testSpringmvcOne(@RequestParam("file") MultipathFile file){
if(!file.isEmpty()){
System.out.println(file.getOriginalFilename());
}
return "success";
}
/**
* @方法六 json
* @功能 http://localhost:8081/springMVC/test/jsonView?id=123
* 請求方式:get
* **/
@RequestMapping(value="/jsonView",method=RequestMethod.GET)
public @ResponseBody User testSpringmvcJson(@RequestParam("id") String id){
return userService.getUser(id);//返回json
}
}
springMVC-servlet.xml 配置
<!-- 啓動Springmvc註解驅動 -->
<mvc:annotation-driven/>
<!-- 返回json 方法一 需要導入 fastjson.jar包 -->
<mvc:annotation-driven>
<mvc:message-converters register-defaults="false">
<!-- 避免IE執行AJAX時,返回JSON出現下載文件 -->
<bean id="fastJsonHttpMessageConverter" class="com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<!-- 這裏順序不能反,一定先寫text/html,不然ie下出現下載提示 -->
<value>text/html;charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</mvc:message-converters>
</mvc:annotation-driven>
<!-- 返回json 方法二 需要導入 jackson-annotations.jar,jackson-core.jar,jackson-databind.jar-->
<!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping" />
<bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.StringHttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes">
<list>
<value>text/html; charset=UTF-8</value>
<value>application/json;charset=UTF-8</value>
</list>
</property>
</bean>
</list>
</property>
</bean> -->
<!-- 其下與返回json 無關 -->
<!-- 自動將控制器加載到bean -->
<context:component-scan base-package="org.controller"></context:component-scan>
<!-- 配置處理靜態資源的請求 -->
<mvc:resources location="/resources/" mapping="*/res/**"/>
<!-- 攔截器配置 -->
<mvc:interceptors>
<bean class="org.aop.LoginInteceptor" />
</mvc:interceptors>
<!-- 配置視圖解析器 -->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/"/>
<property name="suffix" value=".jsp"/><!--可爲空,方便實現自已的依據擴展名來選擇視圖解釋類的邏輯 -->
<property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />
</bean>
<!-- 上傳 需要使用到的配置-->
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="1046666000"/>
</bean>
<!--配置全局的異常-->
<!-- <bean id="exceptionResolver" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="com.guanlan.util.SportException">error</prop>
</props>
</property>
</bean> -->