一、springmvc 注解形式开发
1、创建类代码如下:
package com.learn.springmvc; import java.text.SimpleDateFormat; import javax.servlet.http.HttpServletRequest; import javax.xml.crypto.Data; import org.springframework.beans.propertyeditors.CustomDateEditor; import org.springframework.stereotype.Controller; import org.springframework.web.bind.ServletRequestDataBinder; import org.springframework.web.bind.annotation.InitBinder; import org.springframework.web.bind.annotation.RequestMapping; import com.learn.springmvc.model.Person; //该注解用来标注当前类是 springmvc 控制层类 @Controller //controller 的唯一标识或命名空间 @RequestMapping("/test") public class TestController{ //用来访问控制层方法的注解 @RequestMapping("/hello.do") public String getString(){ System.out.print("hwl"); return "jsp1/index"; } }
@Controller 注解用来标注当前类是 springmvc 控制层类
@RequestMapping("/test") 括号中的内容表示 controller 的唯一标识或命名空间
2、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:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd "> <!-- mvc 的注解驱动 --> <mvc:annotation-driven/> <!-- 一旦有扫描器的定义,mvc:annotation-driven 就不需要,扫描器已经有了注解的功能 --> <context:component-scan base-package="com.learn.springmvc"></context:component-scan> <!-- 前缀+ viewName +后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- webroot到某一指定的文件夹的路径 --> <property name="prefix" value="/WEB-INF/jsp/"></property> <!-- 视图名称的后缀 --> <property name="suffix" value=".jsp"></property> </bean> </beans>
<mvc:annotation-driven/> 表示加载 mvc 的注解驱动
<context:component-scan base-package="com.learn.springmvc"></context:component-scan>
<context:component-scan> 表示注解扫描器,一旦有扫描器的定义,mvc:annotation-driven 就不需要,扫描器已经有了注解的功能,以上代码表示扫描 com.learn.springmvc 包下的所有类,扫描是否有注解
二、参数传递
1、传递字符串
(1)、HttpServletRequest 可以直接定义在参数列表中,并可以使用,代码如下:
/** * httpservletrequest 可以直接定义在参数列表中,并可以使用 * @param request * @return */ @requestmapping("/name.do") public string getname(httpservletrequest request){ string str = request.getparameter("name"); system.out.print(str); return "jsp1/index"; }
访问的时候在URL地址后输入 name参数
(2)、在列表上直接定义要接收的参数名,只要参数与传递进来的参数一致即可
/** * 在列表上直接定义要接收的参数名,只要参数与传递进来的参数一致即可 * @param name * @return */ @RequestMapping("/name1.do") public String getName1(String name){ System.out.print(name); return "jsp1/index";
访问的时候在URL地址后输入 name参数
2、实体类
(1)、定义实体类,代码如下:
package com.learn.springmvc.model; import java.util.Date; public class Person { private String name; private Integer age; private Date brithday; public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } public Date getBrithday() { return brithday; } public void setBrithday(Date brithday) { this.brithday = brithday; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", brithday=" + brithday + "]"; } }
(2)、传递的参数名必须要和实体类中属性的 set 方法后面组成部分(字符串)一致,这样才能接受得到参数
/** * 传递的参数名必须要和实体类中属性的 set 方法后面组成部分(字符串)一致,这样才能接受得到参数 * 请求中传的参数只要能和参数列表中的参数名或者是实体类中set方法后面的字符串一致就能够就收到 * @param person * @return */ @RequestMapping("/person.do") public String getPerson(Person person){ System.out.print(person); return "jsp1/index"; }
(3)、注册时间类型的属性编辑器
/** * 注册时间类型的属性编辑器 * @param binder */ @InitBinder public void initBinder(ServletRequestDataBinder binder){ binder.registerCustomEditor(Data.class, new CustomDateEditor(new SimpleDateFormat("yyyy-mm-dd"), true)); }
3、获取数组,代码如下:
/** * 接收数组 * @param arr * @return */ @RequestMapping("/arr.do") public String getArr(String[] arr){ for(String str : arr){ System.out.print(str); } return "jsp1/index"; }
浙公网安备 33010602011771号