spring簡單MVC實現(xiàn)方法(URL映射及其參數(shù)使用、查詢(id、其他參數(shù))、增加)
一、方法參數(shù)使用
1.在無注解下獲取參數(shù)
在沒有注解的情況下,Spring MVC 也可以獲取參數(shù),且參數(shù)允許為空,唯一的要求是參
數(shù)名稱和 HTTP 請求的參數(shù)名稱保持一致。
@Controller @RequestMapping("/my") public class MyController{ @GetMapping("/no/annotation") @ResponseBody public Map<String,Object> noAnnotation(Integer intVal,Long longVal,String str){ Map<String,Object> map = new HashMap(); map.put("intVal",intVal); map.put("longVal",longVal); map.put("str",str); return map; }}
2. 使用@RequestParam 獲取參數(shù)
在方法參數(shù)中使用了注解@RequestParam,其目的是指定 HTTP 參數(shù)和方法的映射關(guān)系,這樣處理器會按照其配置的映射關(guān)系來得到參數(shù),然后調(diào)用控制器的方法。
注意:如果把 3 個 HTTP 參數(shù)中的任意一個刪去,就會得到異常報錯的信息。
@RequestMapping("annotation") @ResponseBody public Map<String,Object> requestParam(@RequestParam("int_Val") Integer intVal,@RequestParam("long_Val") Long longVal,@RequestParam("str_Val") String str){ Map<String,Object> map = new HashMap(); map.put("intVal",intVal); map.put("longVal",lngVal); map.put("str",str); return map; }
3.傳遞數(shù)組
@RequestMapping("/requestArray") @ResponseBody public Map<String, Object> requestArray(Integer [] intArr, Long [] longArr, String [] strArr) { Map<String, Object> paramsMap = new HashMap(); paramsMap.put("intArr", intArr); paramsMap.put("longArr", longArr); paramsMap.put("strArr", strArr); return paramsMap; }
4.格式化獲取參數(shù)
/WEB-INF/jsp/format/formatter.jsp
<%@ page pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>格式化</title> </head> <body> <form action="./commit" method="post"> <table> <tr> <td>日期(yyyy-MM-dd)</td> <td><input type="text" name="date" value="2017-08-08" /></td> </tr> <tr> <td>金額(#,###.##)</td> <td><input type="text" name="number" value="1,234,567.89" /></td> </tr> <tr> <td colspan="2" align="right"><input type="submit" value=" 提交" /> </td> </tr> </table> </form> </body> </html>
controller.java
@PostMapping("/format/commit") @ResponseBody public Map<String, Object> format( @DateTimeFormat(iso=ISO.DATE) Date date, @NumberFormat(pattern="#,###.###") Double number ){ Map<String, Object> dataMap=new HashMap(); dataMap.put("date", date); dataMap.put("number", number); return dataMap; }
二、MVC的增、查
1.pom.xml
加入parent、web、jstl、servlet、tomcat、jasper坐標(可以參考我之前寫過的pom.xml)
這次再寫入熱部署:當項目啟動狀態(tài)時,修改靜態(tài)文件并保存后,不需要重啟項目來達到使靜態(tài)文件生效的目的。
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> </dependency>
2.jsp
這次需要用到j(luò)s和easyui框架(見文章末尾源碼),我們就可以在此基礎(chǔ)上添加jsp,展現(xiàn)更漂亮的前端
src/main/webapp/WEB-INF/jsp/user/XXX.jsp
add.jsp
<%@ page pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>新增用戶</title> <!-- 加載Query文件--> <script type="text/javascript" src="/js/jquery-3.2.1.js"> </script> <script type="text/javascript"> $(document).ready(function(){ $("#submit").click(function() { var id=$("#id").val(); var userName=$("#userName").val(); var note=$("#note").val(); if ($.trim(userName)=='') { alert("用戶名不能為空!"); return; } var params = { id:id, userName:userName, note:note }; $.post({ url:"./insert", // 此處需要告知傳遞參數(shù)類型為JSON,不能缺少 contentType:"application/json", // 將JSON轉(zhuǎn)化為字符串傳遞 data:JSON.stringify(params), // 成功后的方法 success:function(result){ if(result==null||result.id==null) { alert("插入失敗"); return; } alert("插入成功"+result.userName+">>"+result.note); window.location.href="./details1" rel="external nofollow" ; } }); }); }); </script> </head> <body> <div style="margin: 20px 0;"></div> <form id="insertForm"> <table> <tr> <td>id編號:</td> <td><input id="id" name="id"></td> </tr> <tr> <td>用戶名稱:</td> <td><input id="userName" name="userName"></td> </tr> <tr> <td>備注</td> <td><input id="note" name="note"></td> </tr> <tr> <td></td> <td align="right"><input id="submit" type="button" value="提交" /></td> </tr> </table> </form> </body>
details1.jsp
<%@ page pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html> <head> <title>用戶詳情</title> </head> <body> <div align="center"> <table border="1"> <tr> <td>用戶編號</td> <td>用戶姓名</td> <td>備注信息</td> </tr> <c:forEach items="${users1}" var="user"> <tr> <td><c:out value="${user.id}"/></td> <td><c:out value="${user.userName}"/></td> <td><c:out value="${user.note}"/></td> </tr> </c:forEach> </table> </div> </body> </html>
details.jsp
<%@ page pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <html> <head> <title>用戶詳情</title> </head> <body> <div align="center"> <table border="1"> <tr> <td>標簽</td> <td>值</td> </tr> <tr> <td>用戶編號</td> <td><c:out value="${user.id}"></c:out></td> </tr> <tr> <td>用戶名稱</td> <td><c:out value="${user.userName}"></c:out></td> </tr> <tr> <td>用戶備注</td> <td><c:out value="${user.note}"></c:out></td> </tr> </table> </div> </body> </html>
table.jsp
<%@ page pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>用戶列表</title> <link rel="stylesheet" type="text/css" href="../../easyui/themes/default/easyui.css" rel="external nofollow" > <link rel="stylesheet" type="text/css" href="../../easyui/themes/icon.css" rel="external nofollow" > <link rel="stylesheet" type="text/css" href="../../easyui/demo/demo.css" rel="external nofollow" > <script type="text/javascript" src="../../easyui/jquery.min.js"></script> <script type="text/javascript" src="../../easyui/jquery.easyui.min.js"></script> <script type="text/javascript"> // 定義事件方法 function onSearch() { // 指定請求路徑 var opts = $("#dg").datagrid("options"); opts.url = "./list3"; // 獲取查詢參數(shù) var userName = $("#userName").val(); var note = $("#note").val(); // 組織參數(shù) var params = {}; if (userName != null && userName.trim() != '') { params.userName = userName; } if (note != null && note.trim() != '') { params.note = note; } // 重新載入表格數(shù)據(jù) $("#dg").datagrid('load', params); } </script> </head> <body> <div style="margin: 20px 0;"></div> <div class="easyui-layout" style="width: 100%; height: 350px;"> <div data-options="region:'north'" style="height: 50px"> <form id="searchForm" method="post"> <table> <tr> <td>用戶名稱:</td> <td><input id="userName" name="userName" class="easyui-textbox" data-options="prompt:'輸入用戶名稱...'" style="width: 100%; height: 32px"></td> <td>備注</td> <td><input id="note" name="note" class="easyui-textbox" data-options="prompt:'輸入備注...'" style="width: 100%; height: 32px"> </td> <td><a href="#" rel="external nofollow" class="easyui-linkbutton" data-options="iconCls:'icon-search'" style="width: 80px" onclick="onSearch()">查詢</a></td> </tr> </table> </form> </div> <div data-options="region:'center',title:'用戶列表',iconCls:'icon-ok'"> <table id="dg" class="easyui-datagrid" data-options="border:false,singleSelect:true, fit:true,fitColumns:true"> <thead> <tr> <th data-options="field:'id'" width="80">編號</th> <th data-options="field:'userName'" width="100">用戶名稱</th> <th data-options="field:'note'" width="80">備注</th> </tr> </thead> <tbody> <!--使用forEache渲染數(shù)據(jù)模型--> <c:forEach items="${userList}" var="user"> <tr> <td>${user.id}</td> <td>${user.userName}</td> <td>${user.note}</td> </tr> </c:forEach> </tbody> </table> </div> </div> </body>
3.實體pojo類
public class User { private Integer id; private String userName; private String note; get、set方法 }
4.Dao層
IUserDao.java
public interface IUserDao { public User getUserById(Integer id);//通過id查找 public User getUserByName(String uname);//通過用戶名查找 public Boolean insertUser(User user);//增加用戶 public List<User> findAllUser();//查找 public List<User> findUsers(String userName,String note);//通過用戶名和備注查找 }
UserDaoImpl.java
@Repository public class UserDaoImpl implements IUserDao { public List<User> users=new ArrayList<User>(); public UserDaoImpl() { super(); users.add(new User(1,"user_name_1","note1")); users.add(new User(2,"user_name_2","note2")); users.add(new User(3,"user_name_3","note3")); } @Override public User getUserByName(String uname) { // TODO Auto-generated method stub System.out.println(uname); for(User user:users) { if(user.getUserName().equals(uname)) { return user; } } return null; } @Override public Boolean insertUser(User user) { // TODO Auto-generated method stub Boolean flag=false; System.out.println(user.getUserName()+">>"+user.getNote()); users.add(user); flag=true; return flag; } ...... }
5.service層
IUserService.java
public interface IUserService { public User getUserById(Integer id); public Boolean insertUser(User user); public List<User> findAllUser(); public List<User> findUsers(String userName,String note); }
UserServiceImpl.java
@Service public class UserServiceImpl implements IUserService { @Autowired private IUserDao userDao; @Override public User getUserById(Integer id) { // TODO Auto-generated method stub return userDao.getUserById(id); } @Override public List<User> findAllUser() { // TODO Auto-generated method stub return userDao.findAllUser(); } @Override public Boolean insertUser(User user) { Boolean flag=false; System.out.println(user.getUserName()+">>"+user.getNote()); flag=userDao.insertUser(user); return flag; } ...... }
6.UserController.java
@Controller @RequestMapping("user") public class UserController { @Autowired private IUserService userService; //1.按ID查詢,顯示結(jié)果JSON格式 @RequestMapping("/getUser1") @ResponseBody public User getUser(Integer id) { User user = userService.getUserById(id); return user; } //2.按ID查詢,顯示結(jié)果JSP @RequestMapping("getUser3") public ModelAndView getUser3(Integer id) { User user1 = userService.getUserById(id); ModelAndView mv = new ModelAndView(); mv.setViewName("user/details"); mv.addObject("user", user1); return mv; } /** * 3.新增用戶,添加信息頁面 */ @GetMapping("add") public String add() { return "/user/add"; } /** * 4. 新增用戶 處理 * * @param user 通過@RequestBody注解得到JSON參數(shù) * @return 返回添加的用戶信息 */ @PostMapping("/insert") @ResponseBody public User insert(@RequestBody User user) { userService.insertUser(user); return user; } /* * 5. 查詢多個用戶數(shù)據(jù) jsp顯示 */ @RequestMapping("/details1") public ModelAndView findAllUsers() { List<User> users = new ArrayList<User>(); users = userService.findAllUser(); ModelAndView mv = new ModelAndView(); mv.setViewName("user/details1"); mv.addObject("users1", users); return mv; } /* * 6. 查詢多個用戶數(shù)據(jù) JSON格式顯示 */ @RequestMapping("/list") @ResponseBody public List<User> list() { List<User> users = new ArrayList<User>(); users = userService.findAllUser(); return users; //7. 通過URL傳遞參數(shù),{ ...}表明參數(shù)的位置和名稱。該例指定名稱為id @RequestMapping("/{id}") // 響應(yīng)為JSON數(shù)據(jù)集 @ResponseBody // @PathVariable 通過參數(shù)名稱獲取參數(shù) public User getUser1(@PathVariable("id") Integer id) { return userService.getUserById(id); } /** 8. URL路徑匹配:多個參數(shù)查詢 * 注解 @PathVariable 用于從請求URL中獲取參數(shù)并映射到方法參數(shù)中 * @param userName * @param note * @return */ @RequestMapping("/list1/{userName}/{note}") @ResponseBody public List<User> getUserByNameAndNote(@PathVariable("userName") String userName,@PathVariable("note") String note){ return userService.findUsers(userName, note); } /** 9.EasyUI框架 ——進入首頁面,查詢所有的用戶 * @return table.jsp頁面 */ @RequestMapping("table") public ModelAndView table() { List<User> users=userService.findAllUser(); ModelAndView mv = new ModelAndView(); mv.setViewName("/user/table"); mv.addObject("userList", users); return mv; } /** 10. EasyUI框架 ——按條件查詢用戶信息 * 注意@RequestParam(value="userName",required=false)的使用 * @param userName * @param note * @return */ @RequestMapping("list3") @ResponseBody public List<User> list3( @RequestParam(value="userName",required=false) String userName, @RequestParam(value="note",required=false) String note) { List<User> users=userService.findUsers(userName, note); return users; } }
7.App.java
略
8.src/main/resources/application.properties
spring.mvc.view.prefix=/WEB-INF/jsp/ spring.mvc.view.suffix=.jsp
9.成果展示
源碼:http://xiazai.jb51.net/202401/yuanma/chapter_jb51.rar
到此這篇關(guān)于spring-簡單MVC實現(xiàn)(URL映射及其參數(shù)使用、查詢(id、其他參數(shù))、增加)的文章就介紹到這了,更多相關(guān)spring MVC實現(xiàn)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Boot實現(xiàn)通用的接口參數(shù)校驗
本文介紹基于 Spring Boot 和 JDK8 編寫一個 AOP ,結(jié)合自定義注解實現(xiàn)通用的接口參數(shù)校驗。具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-05-05Springboot中使用Filter實現(xiàn)Header認證詳解
這篇文章主要介紹了Springboot中使用Filter實現(xiàn)Header認證詳解,當在?web.xml?注冊了一個?Filter?來對某個?Servlet?程序進行攔截處理時,它可以決定是否將請求繼續(xù)傳遞給?Servlet?程序,以及對請求和響應(yīng)消息是否進行修改,需要的朋友可以參考下2023-08-08簡單實現(xiàn)Java版學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細介紹了簡單實現(xiàn)Java版學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06