æ¬ç¯ä¸»è¦ä»ç»SpringMVCæ§å¶å¨ç以ä¸å 容ï¼
@RequestMapping 请æ±æ å°Â
@RequestParam 请æ±åæ°Â
ModelAndView è¿å模ååè§å¾Â
SpringMVC 对象å±æ§èªå¨å°è£ Â
SpringMVCPOST 请æ±ä¹±ç 解å³Â
Controller å é¨è½¬ååéå®åÂ
æ们éè¿ä¸ä¸ªç®åçå°é¡¹ç®æ¥ä»ç»ã模æå¦ç管ç(å±ç¤ºï¼æ·»å ï¼ä¿®æ¹ï¼å é¤)çè¿ç¨ã
å®ä¹å®ä½ç±»ï¼Studentï¼å±æ§æï¼id,name,age并çæget,set,å3个åæ°çæé æ¹æ³ã
æ°å»ºå ï¼controller,åä¸ä¸ªStudentController
@Controller
@RequestMapping("/student")
public class StudentController {
private static List<Student> studentList = new ArrayList<Student>();
//éæ代ç åï¼åªæ§è¡ä¸æ¬¡ï¼æ¨¡ææ°æ®
static {
studentList.add(new Student(1, "å¼ ä¸", 11));
studentList.add(new Student(2, "æå", 22));
studentList.add(new Student(3, "çäº", 33));
}
@RequestMapping("/list")
public ModelAndView list() {
ModelAndView mav = new ModelAndView();
mav.addObject("studentList",studentList);
mav.setViewName("list");
return mav;
}
}
æ们模ååå¤çï¼å¨StudentControlleråå 请æ±æ å°"student":å¯è½è¿ææ绩管çãå¨WEB-INFä¸å»ºä¸ä¸ªå为studentçå ï¼éé¢åå ³äºstudentçjsp.
mavæ两个æ¹æ³ï¼addobjectæ¯åModelAndView(模ååè§å¾)æ·»å 对象ãsetViewName:åè§å¾è§£æå¨è¿åï¼è§£ææjsp
ç¶åæ们å¨WebContentç®å½ä¸ï¼å»ºä¸ä¸ªindex.jsp:
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%
response.sendRedirect("student/list.do");
%>
ç´æ¥è¯·æ±student/list,ç»è¿Controller,æ§è¡listæ¹æ³ï¼ææ°æ®å°è£ ï¼å¹¶éè¿è§å¾è§£æå¨è½¬åå°list,jsp,è¿å°±æ¯å±ç¤ºæ°æ®ã
<table>
<tr>
<th>ç¼å·</th>
<th>å§å</th>
<th>å¹´é¾</th>
<th colspan="2">æä½</th>
</tr>
<c:forEach var="student" items="${studentList }">
<tr>
<td>${student.id }</td>
<td>${student.name }</td>
<td>${student.age }</td>
<td><a href="" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" >ä¿®æ¹</a></td>
<td><a href="" target="_blank" rel="external nofollow" target="_blank" rel="external nofollow" >å é¤</a></td>
</tr>
</c:forEach>
</table>
ä¸é¢æ们å¼æ·»å å¦çï¼å¨list.jspä¸é¢åä¸ä¸ªè¶ é¾æ¥ï¼
<a href="${pageContext.request.contextPath }/student/preSave.do" target="_blank" rel="external nofollow" >æ·»å å¦ç</a>
è¿ä¸ªå°æ¹ä¸åaddæ¯å 为修æ¹çæ¶åï¼ä¹è¯·æ±preSaveè®©å ¶å¤æï¼ä½ä¸ä¸ªæ¯æåæ°çï¼ä¸ä¸ªæ¯æ²¡æçã
<td><a href="${pageContext.request.contextPath }/student/preSave.do?id=${student.id }" target="_blank" rel="external nofollow" >ä¿®æ¹</a></td>
preSaveæ¹æ³ï¼
@RequestMapping("/preSave")
public ModelAndView preSave(@RequestParam(value="id",required=false) String id) {
ModelAndView mav = new ModelAndView();
if(id!=null) {
mav.addObject("student",studentList.get(Integer.parseInt(id)-1));
mav.setViewName("student/update");
return mav;
}
mav.setViewName("student/add");
return mav;
}
@RequestParam(value="id",required=false)ï¼è¯·æ±åæ°ï¼è·å¾è¯·æ±urlä¸çåæ°ï¼å¨è¿éæ¯è·åä¿®æ¹æé®urléçåæ°ï¼å¤æå¦æä¸ä¸ºç©ºï¼è¯´æ请æ±çurlä¸æ¯æåæ°çï¼é£å°±æ¯ä¿®æ¹ï¼è·åå°è¯¥idçStudent,å°è£ å°ModelAndViewä¸ï¼å¹¶è¯·æ±updateï¼è§£æå°update.jsp
å¦ææ¯ç©ºï¼å°±è¡¨ç¤ºæ¯è¯·æ±æ·»å ï¼ç´æ¥è§£æå°add.jsp.
update.jsp:
<form action="${pageContext.request.contextPath }/student/save.do" method="post">
<table>
<tr>
<th colspan="2">å¦çä¿®æ¹</th>
</tr>
<tr>
<td>å§å</td>
<td><input type="text" name="name" value="${student.name }"></td>
</tr>
<tr>
<td>å¹´é¾</td>
<td><input type="text" name="age" value="${student.age }"></td>
</tr>
<tr>
<td><input type="hidden" name="id" value="${student.id }"></td>
<td><input type="submit" value="ä¿®æ¹"></td>
</tr>
</table>
</form>
add.jsp:
<form action="${pageContext.request.contextPath }/student/save.do" method="post">
<table>
<tr>
<th colspan="2">å¦çæ·»å </th>
</tr>
<tr>
<td>å§å</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>å¹´é¾</td>
<td><input type="text" name="age"></td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="æ交"></td>
</tr>
</table>
</form>
两个jspé½è¯·æ±save,é½ä¼ææ°æ®èªå¨å°è£ ï¼ä½updateå°è£ çæ°æ®æ¯æidçï¼èæ·»å æ¯æ²¡æidçï¼æ ¹æ®è¿ä¸ªåsaveæ¹æ³ï¼
@RequestMapping("/save")
public String add(Student student) {
if(student.getId()!=0) {
Student s = studentList.get(student.getId()-1);
s.setName(student.getName());
s.setAge(student.getAge());
}else {
studentList.add(student);
}
return "redirect:/student/list.do";
}
æå°±æ¯å°è£ çStudentéé¢çidä¸ä¸º0ï¼å°±æ¯ä¿®æ¹ï¼ç¶åæ ¹æ®idè·åå°æ°æ®ä¸æå®ç对象ï¼è¿è¡ä¿®æ¹å³å¯ï¼
id为0ï¼å°±æ¯æ·»å ï¼ç´æ¥æå°è£ ç对象ï¼æ·»å å°æ°æ®ä¸å°±è¡ï¼æ§è¡å®åéå®åå°list.jsp.
redirect:/ :éå®åï¼ä¸æåæ°ä¼ è¿å»ï¼å¹¶ä¸ä¸ä¼æ¹åæµè§å¨url.
forward:/ :转åï¼ä¸åé»è®¤å°±æ¯è½¬åï¼ä¼å°åæ°å¸¦è¿å»ï¼å¹¶ä¸æµè§å¨urlä¹ä¼æ¹è¿å»ã
å©ä¸ä¸ä¸ªå é¤ï¼ç´æ¥å¨å é¤æ¶ï¼è¯·æ±dalete.do,è°ç¨Controllerä¸deleteæ¹æ³ï¼è¯·æ±åæ°ï¼å¾å°urléé¢çid,æ ¹æ®id,å é¤æå®Student对象ãç¶åéå®åå°list.jsp.
@RequestMapping("/delete")
public String delete(@RequestParam(value="id") int id) {
studentList.remove(id-1);
return "redirect:/student/list.do";
}
æåï¼å 为è¿æ¯ä¸ºäºä»ç»SpringMVCçControlleræ§å¶å¨ï¼æ以就没ç¨æ°æ®åºï¼ç´æ¥éæå°è£ çæ°æ®ï¼æ以idä¹ä¸æ¯èªå¢ï¼idè¯å®ä¼æbug ,æ¯å¦æ·»å çæ°æ®ï¼ä¸è½ä¿®æ¹ãå 为æ¾ä¸å°id,æ·»å æ¶å没ææ·»å id,é»è®¤å°±æ¯0.
å¨æ·»å æ¶åï¼è¿åè¿æ¥çæ°æ®ä¼æä¹±ç ï¼æ以è¦å¨web.xmlä¸å®ä¹æ¦æªå¨ï¼æ¦æªææ请æ±ï¼å°ç¼ç ç»ä¸è®¾ç½®ä¸ºutf-8:
<!-- æ¦æªææ请æ±ï¼ç»ä¸utf-8ç¼ç -->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>*.do</url-pattern>
</filter-mapping>
Â