web.xml
<servlet> <servlet-name>hello</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <!--servlet-class 固定值,将servlet-name注册给 DispatcherServlet --> <load-on-startup>1</load-on-startup> <!--服务器加载配置文件顺序,有此属性时可以在服务器启动时加载.xml文件,进行文件的校验,能够较快的分析出是代码出错还是配置文件出错--> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:spring-mvc.xml</param-value> </init-param> <!--加载初始配置项,此属性配置可以更改系统默认加载.xml的路径,其中param-name为固定值param-value值为所放xml路径,classpath*表示类路径,可用通配符表示配置文件(*.xml)--> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>*.do</url-pattern> <!--url-pattern 以/开头和以/*结尾的是用来做路径映射的 以前缀*.开头用来做扩展的 单独/是用来default servlet映射的 --> </servlet-mapping>
spring-mvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <context:component-scan base-package="com.wf.springmvc.controller" /> <!-- 扫描基包下的所有注解类 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:viewClass="org.springframework.web.servlet.view.JstlView" p:prefix="/WEB-INF/view/" p:suffix=".jsp"/> <!-- 配置视图名称解析器,配置 p:prefix属性指定controller返回页面的所存放的路径 p:suffix属性指定页面的类型,他们共同组成返回的路径 p:viewClass属性是在返回到jsp页面进行解析jstl标签 --> </beans>
配置注解
@RequestMapping 路径注解属性,可以注解类也可以注解方法。有value属性(一个参数时默认)指定url路径解析,method属性指定提交方式(默认为get提交)
@RequestParam 请求规则注解,value属性匹配前台传递的参数(一个参数时默认),required属性此字段是否必须传值(boolean,默认为true),defaultValue此参数的默认值(存在此参数时,说明前台不必需传递参数,required为false)
@PathVariable 注解绑定Url传过来的值到方法的参数上面,此注解一般用于url模板传参。
注意RequestParam 与PathVariable 的区别
1. 方式一 基本的传递 @RequestMapping("/login") // url:http://localhost:8080/login/login.do public String login(HttpServletRequest request){ String name=request.getParameter("name"); // 获取前台传递的参数 return "start"; } 2. 方式二 利用超链接进行跳转传递参数 前台name需要与注解RequestParam的参数保持一致。(传递少许参数) @RequestMapping("/login") //url:http://localhost:8080/login/login.do?name=tom public String login(@RequestParam(value="age",required=false,defaultValue="24") String agenum,@RequestParam("name") String name){ System.out.println(agenum); // 前台参数自动绑定到idmun中 System.out.println(name); return "start"; } 3. 方式三 url模板传参,将参数作为路径的一部分,不建议使用 @RequestMapping("/login/{name}/{id}") // http://localhost:8080/login/login/lisi/m123.do public String login(@PathVariable("name") String name01,@PathVariable("id") String id01){ System.out.println(name01); System.out.println(id01); return "start"; } 4. 方式四 指定提交方式,RequestMethod类的相应属性(常用) @RequestMapping("/check",method=RequestMethod.POST) public String check(HttpServletRequest request,HttpServletResponse response ){ String name=request.getParameter("name"); String pwd=request.getParameter("pwd"); if("tom".equals(name) && "1234".equals(pwd)){ return "success"; } return "error"; } 5. 方式五 post提交表单 传递模型Model参数 将表单封装为对应的javabean进行传递(常用) @RequestMapping(value="/check",method=RequestMethod.POST) public String check(User user){ if("tom".equals(user.getName()) && "1234".equals(user.getPwd())){ return "success"; } return "error"; } 6. 特殊的 属性编辑器 在前台到后台data日期类型等的转化会出错,此时我们需要属性编辑器进行属性的转化 //日期传递参数会产生异常,因此在传递时间参数时,需要进行类型转换,在初始化时进行数据的绑定与转化 @RequestMapping(value="/todate/{data}",method=RequestMethod.GET) public String todate(@PathVariable("data") Date date){ System.out.println(new SimpleDateFormat("yyyy-MM-dd").format(date)); return "start"; } @InitBinder //初始化参数绑定, 日期类型的转化, public void initBinder(ServletRequestDataBinder binder){ binder.registerCustomEditor(java.util.Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"),true)); }
在拦截的url中,不否定在不同类中有相同路径,例如在StudentController和StudentController中都会有相应的增删改查方法且方法的RequestMapping路径相同,此时我们就可以在类的注解加入相应的RequestMapping。例如路径http://localhost:8080/login/student/add.do 和 http://localhost:8080/login/teacher/add.do
摘自:请尊重原创 http://blog.csdn.net/sinat_28978689/article/details/52483881