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坐標(biāo)(可以參考我之前寫過的pom.xml)
這次再寫入熱部署:當(dāng)項目啟動狀態(tài)時,修改靜態(tài)文件并保存后,不需要重啟項目來達(dá)到使靜態(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>標(biāo)簽</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框架 ——進(jìn)入首頁面,查詢所有的用戶
* @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-05
Springboot中使用Filter實現(xiàn)Header認(rèn)證詳解
這篇文章主要介紹了Springboot中使用Filter實現(xiàn)Header認(rèn)證詳解,當(dāng)在?web.xml?注冊了一個?Filter?來對某個?Servlet?程序進(jìn)行攔截處理時,它可以決定是否將請求繼續(xù)傳遞給?Servlet?程序,以及對請求和響應(yīng)消息是否進(jìn)行修改,需要的朋友可以參考下2023-08-08
簡單實現(xiàn)Java版學(xué)生管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了簡單實現(xiàn)Java版學(xué)生管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2016-06-06

