<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 自定定义springmvc的配置文件包括文件名称,地址等 -->
<init-param>
<param-name>ContextConfigLocation</param-name>
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
我的理解:
只要是.do结尾(其他类似)的,都由springmvc来解决(去匹配Controller中的@RequestMapping)
1. Controller 的内容
package com.xt.controller;
import java.util.ArrayList;
import java.util.List;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.servlet.ModelAndView;
import com.xt.model.Student;
@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, "李四", 12));
studentList.add(new Student(3, "王五", 13));
}
@RequestMapping("/list")
private ModelAndView list() {
ModelAndView modelAndView = new ModelAndView();
modelAndView.addObject("studentList", studentList);
modelAndView.setViewName("/student/list");
return modelAndView;
}
/**
* 保存之前,主要是界面跳转
* @param id
* @return
*/
@RequestMapping("/preSave")
private ModelAndView preSave(@RequestParam(value = "id", required = false) String id) {
ModelAndView modelAndView = new ModelAndView();
if (id != null) {
Student student = studentList.get(Integer.parseInt(id) - 1);
modelAndView.addObject("student", student);
modelAndView.setViewName("/student/update");
} else {
modelAndView.setViewName("/student/add");
}
return modelAndView;
}
/**
* 保存
* @param student
* @return
*/
@RequestMapping("/save")
private String save(Student student) {
if (student.getId() != 0) {
student.setAge(110);
student.setName("张三2");
} else {
studentList.add(student);
}
return "redirect:/student/list.do";
}
/**
* 删除
* @param id
* @return
*/
@RequestMapping("/delete")
private String delete(@RequestParam(value="id") int id) {
studentList.remove(id-1);
return "redirect:/student/list.do";
}
}
2. 现在我需要触发preSave方法,我的链接就需要这样写
<a href="${pageContext.request.contextPath }/student/preSave.do">添加学生</a>
3. modelAndView.setViewName("/student/add");指的就是配置文件(我这里是spring-mvc.xml),prefix属性下的文件,后缀是jsp
<bean id="jspViewResolver"
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/jsp/" />
<property name="suffix" value=".jsp" />
</bean>