@RequestMapping(value="/hello")
public String sayHello() {System.out.println("Hello SpringMVC!!");// 跳轉到XX頁面return "success";
}
@Controller
@RequestMapping("/user")
public class UserController {/*** 請求參數的綁定*/@RequestMapping(value="/initUpdate")public String initUpdate(Model model) {// 模擬從數據庫中查詢的數據User user = new User();user.setUsername("張三");user.setPassword("123");user.setMoney(100d);user.setBirthday(new Date());model.addAttribute("user", user);return "update";}
}
<h3>修改用戶</h3>
${requestScope}
<form action="user/update" method="post">姓名:<input type="text" name="username" value="${ user.username }"><br>密碼:<input type="text" name="password" value="${ user.password }"><br>金額:<input type="text" name="money" value="${ user.money }"><br>
<input type="submit" value="提交">
</form>
@RequestMapping(value="/initAdd")
public void initAdd(HttpServletRequest request,HttpServletResponse response) throws Exception {System.out.println("請求轉發或者重定向");
// 請求轉發
// request.getRequestDispatcher("/WEB-INF/pages/add.jsp").forward(request,response);
// 重定向
// response.sendRedirect(request.getContextPath()+"/add2.jsp");response.setCharacterEncoding("UTF-8");response.setContentType("text/html;charset=UTF-8");
// 直接響應數據response.getWriter().print("你好");return;}
/*** 返回ModelAndView對象* 可以傳入視圖的名稱(即跳轉的頁面),還可以傳入對象。* @return* @throws Exception*/
@RequestMapping(value="/findAll")
public ModelAndView findAll() throws Exception {ModelAndView mv = new ModelAndView();// 跳轉到list.jsp的頁面mv.setViewName("list");// 模擬從數據庫中查詢所有的用戶信息List<User> users = new ArrayList<>();User user1 = new User();user1.setUsername("張三");user1.setPassword("123");User user2 = new User();user2.setUsername("趙四");user2.setPassword("456");users.add(user1);users.add(user2);// 添加對象mv.addObject("users" , users);}
/*** 使用forward關鍵字進行請求轉發* "forward:轉發的JSP路徑",不走視圖解析器了,所以需要編寫完整的路徑* @return* @throws Exception*/
@RequestMapping("/delete")
public String delete() throws Exception {System.out.println("delete方法執行了...");// return "forward:/WEB-INF/pages/success.jsp";return "forward:/user/findAll";
}
/*** 重定向* @return* @throws Exception*/
@RequestMapping("/count")
public String count() throws Exception {System.out.println("count方法執行了... ");return "redirect:/add.jsp";// return "redirect:/user/findAll";}
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.9.0</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.9.0</version>
</dependency>
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.0</version>
</dependency>
注意:2.7.0 以下的版本用不了
mvc:resources
標簽配置不過濾<!-- 設置靜態資源不過濾 -->
<mvc:resources location="/css/" mapping="/css/**"/> <!-- 樣式 -->
<mvc:resources location="/images/" mapping="/images/**"/> <!-- 圖片 -->
<mvc:resources location="/js/" mapping="/js/**"/> <!-- javascript -->
// 頁面加載
// 頁面加載
$(function(){
// 綁定點擊事件$("#btn").click(function(){$.ajax({url:"user/testJson",contentType:"application/json;charset=UTF-8",data:'{"addressName":"aa","addressNum":100}',dataType:"json",type:"post",success:function(data){alert(data);alert(data.addressName);}});});
});
/*** 獲取請求體的數據* @param body*/
@RequestMapping("/testJson")
public void testJson(@RequestBody Address address) {System.out.println(address);}
@RequestMapping("/testJson")
public @ResponseBody Address testJson(@RequestBody Address address) {System.out.println(address);address.setAddressName("上海");return address;
}
multipart/form-data
Post
<input type=”file” />
Java Web?當 form 表單的 enctype 取值不是默認值后,request.getParameter()
將失效。
enctype=”application/x-www-form-urlencoded”時,form 表單的正文內容是:
key=value&key=value&key=value
springMVC重定向、-----------------------------7de1a433602ac
分界符
Content-Disposition: form-data; name=“userName”協議頭
aaa協議的正文
-----------------------------7de1a433602ac
Content-Disposition: ?? form-data; ????name=“file”;
filename=“C:\Users\zhy\Desktop\fileupload_demofile\b.txt”
Content-Type: text/plain協議的類型(MIME 類型)
bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
-----------------------------7de1a433602ac–
<dependency><groupId>commons-fileupload</groupId><artifactId>commons-fileupload</artifactId><version>1.3.1</version>
</dependency>
<dependency><groupId>commons-io</groupId><artifactId>commons-io</artifactId><version>2.4</version>
</dependency>
<h3>文件上傳</h3>
<form action="user/fileupload" method="post" enctype="multipart/form-data">選擇文件:<input type="file" name="upload"/><br/><input type="submit" value="上傳文件"/>
</form>
/*** 文件上傳* @return*/@RequestMapping("/fileupload1")public String fileuoload1(HttpServletRequest request) throws Exception {System.out.println("文件上傳...");// 使用fileupload組件完成文件上傳// 上傳的位置String path = request.getSession().getServletContext().getRealPath("/uploads/");// 判斷,該路徑是否存在File file = new File(path);if(!file.exists()){// 創建該文件夾file.mkdirs();}// 解析request對象,獲取上傳文件項DiskFileItemFactory factory = new DiskFileItemFactory();ServletFileUpload upload = new ServletFileUpload(factory);// 解析requestList<FileItem> items = upload.parseRequest(request);// 遍歷for(FileItem item:items){// 進行判斷,當前item對象是否是上傳文件項if(item.isFormField()){// 說明普通表單向}else{// 說明上傳文件項// 獲取上傳文件的名稱String filename = item.getName();// 把文件的名稱設置唯一值,uuidString uuid = UUID.randomUUID().toString().replace("-", "");filename = uuid+"_"+filename;// 完成文件上傳item.write(new File(path,filename));// 刪除臨時文件item.delete();}}return "success";}
/*** SpringMVC文件上傳* @return*/@RequestMapping("/fileupload2")public String fileuoload2(HttpServletRequest request, MultipartFile upload) throws Exception {System.out.println("springmvc文件上傳...");// 使用fileupload組件完成文件上傳// 上傳的位置String path = request.getSession().getServletContext().getRealPath("/uploads/");// 判斷,該路徑是否存在File file = new File(path);if(!file.exists()){// 創建該文件夾file.mkdirs();}// 說明上傳文件項// 獲取上傳文件的名稱String filename = upload.getOriginalFilename();// 把文件的名稱設置唯一值,uuidString uuid = UUID.randomUUID().toString().replace("-", "");filename = uuid+"_"+filename;// 完成文件上傳upload.transferTo(new File(path,filename));return "success";}
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver"><property name="maxUploadSize" value="10485760"/>
</bean>
<!--1. 導入開發需要的jar包-->
<dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-core</artifactId><version>1.18.1</version>
</dependency>
<dependency><groupId>com.sun.jersey</groupId><artifactId>jersey-client</artifactId><version>1.18.1</version>
</dependency>
<!--2. 編寫文件上傳的JSP頁面-->
<h3>跨服務器的文件上傳</h3>
<form action="user/fileupload3" method="post" enctype="multipart/form-data">選擇文件:<input type="file" name="upload"/><br/><input type="submit" value="上傳文件"/>
</form>
/** 3. 編寫控制器* 跨服務器文件上傳* @return*/@RequestMapping("/fileupload3")public String fileuoload3(MultipartFile upload) throws Exception {System.out.println("跨服務器文件上傳...");// 定義上傳文件服務器路徑String path = "http://localhost:9090/uploads/";// 說明上傳文件項// 獲取上傳文件的名稱String filename = upload.getOriginalFilename();// 把文件的名稱設置唯一值,uuidString uuid = UUID.randomUUID().toString().replace("-", "");filename = uuid+"_"+filename;// 創建客戶端的對象Client client = Client.create();// 和圖片服務器進行連接WebResource webResource = client.resource(path + filename);// 上傳文件webResource.put(upload.getBytes());return "success";}
package cn.myp666.exception;/*** 自定義異常類*/
public class SysException extends Exception{// 存儲提示信息的private String message;public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}public SysException(String message) {this.message = message;}}
/*** 異常處理器*/
public class SysExceptionResolver implements HandlerExceptionResolver{/*** 處理異常業務邏輯* @param request* @param response* @param handler* @param ex* @return*/public ModelAndView resolveException(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {// 獲取到異常對象SysException e = null;if(ex instanceof SysException){e = (SysException)ex;}else{e = new SysException("系統正在維護....");}// 創建ModelAndView對象ModelAndView mv = new ModelAndView();// 存入錯誤的提示信息mv.addObject("errorMsg",e.getMessage());// 跳轉的Jsp頁面mv.setViewName("error");return mv;}}
<!-- 配置異常處理器 -->
<bean id="sysExceptionResolver" class="cn.myp666.exception.SysExceptionResolver"/>
package cn.myp666.demo1;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
/*** 自定義攔截器1* @author rt*/
public class MyInterceptor1 implements HandlerInterceptor{/*** controller方法執行前,進行攔截的方法* return true放行* return false攔截* 可以使用轉發或者重定向直接跳轉到指定的頁面。*/@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response,Object handler) throws Exception {System.out.println("攔截器執行了...");return true;}
}
<!-- 配置攔截器 -->
<mvc:interceptors><mvc:interceptor><!-- 哪些方法進行攔截 --><mvc:mapping path="/user/*"/><!-- 哪些方法不進行攔截<mvc:exclude-mapping path=""/> --><!-- 注冊攔截器對象 --><bean class="cn.myp666.demo1.MyInterceptor1"/></mvc:interceptor>
</mvc:interceptors>
package cn.myp666.controller.cn.myp666.interceptor;import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;/*** 自定義攔截器*/
public class MyInterceptor1 implements HandlerInterceptor{/*** 預處理,controller方法執行前* return true 放行,執行下一個攔截器,如果沒有,執行controller中的方法* return false不放行* @param request* @param response* @param handler* @return* @throws Exception*/public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println("MyInterceptor1執行了...前1111");// request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);return true;}/*** 后處理方法,controller方法執行后,success.jsp執行之前* @param request* @param response* @param handler* @param modelAndView* @throws Exception*/public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println("MyInterceptor1執行了...后1111");// request.getRequestDispatcher("/WEB-INF/pages/error.jsp").forward(request,response);}/*** success.jsp頁面執行后,該方法會執行* @param request* @param response* @param handler* @param ex* @throws Exception*/public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {System.out.println("MyInterceptor1執行了...最后1111");}}
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态