将上面的项目拷贝一份,拷贝web项目的时候注意该一个地方:
4.1注解第一个例子
- 创建web项目
- 在springmvc的配置文件中指定注解驱动,配置扫描器
<!-- mvc的注解驱动 --> <mvc:annotation-driven /> <!-- 一旦有扫描器的定义mvc:annotation-driven不需要,扫描器已经有了注解驱动的功能 --> <context:component-scan base-package="cn.itcast.springmvc" /> <!--视图解析器: 前缀+ 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>
[email protected]:标识当前类是控制层的一个具体的实现
[email protected]:放在方法上面用来指定某个方法的路径,当它放在类上的时候相当于命名空间需要组合方法上的requestmapping来访问。
@Controller//用来标注当前类是springmvc的控制层的类 public class TestController { /** * @return方法的返回值是ModelAndView中的ViewName */ @RequestMapping("/hello.do")//用来访问控制层的方法注解 public String hello(){ System.out.println("TestController.hello()"); return "jsp1/index"; } }
http://localhost:8080/springmvc-2/hello.do
@requestMapping放在类上面:
@Controller//用来标注当前类是springmvc的控制层的类 @RequestMapping("/test")//controller唯一标识或者是命名空间 public class TestController { /** * @return方法的返回值是ModelAndView中的ViewName */ @RequestMapping("/hello.do")//用来访问控制层的方法注解 public String hello(){ System.out.println("TestController.hello()"); return "jsp1/index"; } }
http://localhost:8080/springmvc-2/test/hello.do
4.2注解方式参数
接收参数:
- HttpServletRequest可以直接定义在参数的列表,可以使用
/** * desc:HttpServletRequest可以直接定义在参数的列表,可以使用 */ @RequestMapping("/toPerson.do") public String toPerson(HttpServletRequest request){ String result = request.getParameter("name"); System.out.println(result); return "jsp1/index"; }
http://localhost:8080/springmvc-2/test/toPerson.do?name=lisi
2.在参数列表上直接定义要接收的参数名称,只要参数名称能匹配的上就能接收所传过来的数据, 可以自动转换成参数列表里面的类型,注意的是值与类型之间是可以转换的
/** * desc:在参数列表上直接定义要接收的参数名称,只要参数名称能匹配的上就能接收所传过来的数据, * 可以自动转换成参数列表里面的类型,注意的是值与类型之间是可以转换的 */ @RequestMapping("/toPerson1.do") public String toPerson1(String name, Integer age, String address,Date birthday){ System.out.println(name + " ,"+ age + ","+ address +" "+birthday); return "jsp1/index"; } /** * desc:注册时间类型的属性编辑器 * http请求的参数都是字符串的形式,需要属性编辑器将其转换成integer等,像上面的name,age,address */ @InitBinder public void initBinder(ServletRequestDataBinder binder){ binder.registerCustomEditor(Date.class, new CustomDateEditor(new SimpleDateFormat("yyyy-MM-dd"), true)); }
http://localhost:8080/springmvc-2/test/toPerson1.do?name=lisi&age=30&address=xinjiang&birthday=2012-12-21
/** * desc:传递的参数的名字必须要与实体类的属性set方法后面的字符串匹配的上才能接收到参数,首字符的大小写不区分 * 请求中传的参数只要是能和参数列表里面的变量名或者实体里面的set后面的字符串匹配的上就能接收到(两个实体有可能接收同一参数) */ @RequestMapping("/toPerson2.do") public String toPerson2(Person person){ System.out.println(person); return "jsp1/index"; }
public class Person { private String name; private Integer age; private String address; private Date birthday; //setter和getter略,但是是必要的 /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "Person [name=" + name + ", age=" + age + ", address=" + address + ", birthday=" + birthday + "]"; } }
http://localhost:8080/springmvc-2/test/toPerson2.do?name=lisi&age=30&address=xinjiang&birthday=2012-12-21
通过反射利用set方法注入属性值,生成实例
/** * desc:对数组的接收 */ @RequestMapping("/toPerson3.do") public String toPerson3(String[] name){ for(String result : name){ System.out.println(result); } return "jsp1/index"; }
http://localhost:8080/springmvc-2/test/toPerson3.do?name=lisi&name=zhangsan
时间: 2024-10-30 10:48:06