`
86asm
  • 浏览: 203670 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

spring-mvc入门(五):使用注解(下)

 
阅读更多

 

2.类级别的基路径请求

在上面的实例中,我们通过为方法配置请求路径来进行访问,而下面我们将为类配置一个请求实例,这种类似于struts2package-namespace

控制器代码如下:package com.asm;

//...省略导入的相关类
@Controller
@RequestMapping("/myRoot")
public class AnnotationControl {
	@RequestMapping(value = "/the/{name}.do")
	public String getName(@PathVariable
	String name, Model model) {
		model.addAttribute("message", "名字:" + name);
		return "anno";
	}

	@RequestMapping("/age.do")
	public ModelAndView getAge(@RequestParam
	int age) {
		ModelAndView mav = new ModelAndView("anno");
		mav.addObject("message", "年龄:" + age);
		return mav;
	}
}

 1)访问getAge方法

这样如果想访问到上面的两个方法都必须是以myRoot作为开头。下面我们先对getAge方法进行访问测试index.jsp页面增加如下代码:

   <form action="<%=request.getContextPath() %>/myRoot/age.do" method="post">

    <input type="text" name="age">

    <input type="submit" value="提交年龄">

      </form>

这样提交请求时,将会访问到getAge方法,并且age会作为参数传递给此方法,这样我们便可以得到客户端输入的age @RequestParam注解:Annotation which indicates that a method parameter should be bound to a web request parameter意为此注解将会为方法中的参数绑定对应(对应是指名字上,比如这里表单和方法中参数名都用了age)的web请求参数。强调:访问路径必须是以myRoot作为一个基路径,因为类上配置了请求基路径。@RequestParam注解实现web请求到方法参数的绑定。

2)访问getName方法

对于getName方法它的访问路径应该是这样的:…/myRoot/the/jack.do 这样我们得到@PathVariable Annotation which indicates that a method parameter should be bound to a URI template variable,意思是此注解将会把一个uri路径中对应的变量和方法中的参数绑定,这里我们用jack来代替来{name},所以实质就是把jack作为参数和方法中name参数绑定,如果想传递其它值,只须把jack换下就可以了,比如:…/myRoot/the/tom.do等。

 

3.自动表单

struts框架中,表单参数能成功地交给struts Action来处理,在前面的实例中我们使用springmvc也完成了类似功能,下面我们使用spring mvc注解方式来完成表单参数和业务层实体的绑定。

步骤一、准备业务层实体Bean,User.java主要代码如下:

 

package com.asm;
public class User {
	private String username;
	private String password;
//省略getter/setter方法。
}

 

步骤二:编写控制层代码

package com.asm;
//省略导入的相关类
@Controller
public class FormAnnotationControl {
	@ModelAttribute("user")
	public User initUser() {
		User user = new User();
		user.setUsername("在此处填写用户名");
		return user;
	}

	@RequestMapping("reg.do")
	public String addUI() {
		return "reg";
	}

	@RequestMapping("save.do")
	public String add(@ModelAttribute
	User user, Model model) {
		model.addAttribute(user);
		return "userInfo";
	}

	@RequestMapping("login.do")
	public ModelAndView login(@ModelAttribute
	User user) {
		ModelAndView mav = new ModelAndView(new RedirectView("manage.do"));
		if (!"admin".equals(user.getUsername())) {
			mav = new ModelAndView("error");
		}
		return mav;
	}

	@RequestMapping("manage.do")
	public String manage() {
		return "list";
	}
}

 说明:@ModelAttribute Annotation that binds a method parameter or method return value to a named model attribute, exposed to a web view. Supported for RequestMapping annotated handler classes,此注解可以用于web请求参数和方法参数的绑定,也可用于方法的返回值作为模型数据(这种模型数据在类中全局有效,比如这里initUser方法绑定的模型数据在此类的任何方法中都能访问到这种模型数据)。

步骤三、编写相关的jsp页面

reg.jsp

  <form action="<%=request.getContextPath() %>/save.do" method="post">

    用户名:<input type="text" name="username" value="${user.username }"><br/>

    密 码:  <input type="password" name="password" value="${user.password }"><br/>

    <input type="submit" value="保存用户">

   </form>

userInfo.jsp
 
<body>

    保存用户成功,信息如下:<br/>

    用户名:${user.username}<br/>

    密 码:${user.password}

  </body>

list.jsp

<body>

    列出所有用户

</body>

error.jsp

<body>

    用户你好,你没权力进入后台

</body>

步骤四、输入相关信息进行测试。

reg.do,对应于addUI()方法的访问:我们输入..../reg.do,可以看到页面显示如下内容:

 

“在此处填写用户名”,这几个字是由于我们在reg.jsp中使用了${user.usernam},并且在initUser方法中我们通过ModelAttribute注解初始化了一个模型数据,这样我们便可以在此类对应的任何方法映射的视图中访问到此模型数据,这也即是前面提到这种模型数据在类中全局有效。然后填写相关数据,提交表单给sava.do,即是提交给给save方法,在save方法中我们同样使用了ModelAttribute注解,此注解在save方法中实现了web请求参数和方法参数的绑定的功能,也即是说把webusernamepasswordModelAttribute指示的user中的usernamepassword进行绑定,这种绑定和struts2中的模型驱动ModerDriven极为相似。

步骤五、访问登录页面,在login方法中我们对登录进行了简单的校验,如果用户名是admin则允许后台进行管理操作,如果不是则提示用户没有权力进行此操作。在前面我们对save方法进行了简要分析,这里的login方法也是类似得。另在此方法中如果是admin登录我们重定向到管理页面,如果不是admin登录,我们使用forward进行转发。访问login.dojsp页面代码如下:

<form action="<%=request.getContextPath() %>/login.do" method="post">

    <input type="text" name="username">

    <input type="submit" value="登入管理后台">

</form>

<!--[endif]-->

5
3
分享到:
评论
2 楼 86asm 2011-12-12  
crocx 写道
关于步骤五,最后 我觉得按正确逻辑的话 应该是,是admin forward的到管理页面,不是就重定向吧?

在实际中,如果是类似登录之类的表单,如果填写OK最好都重定向一次要好些。
1 楼 crocx 2011-12-12  
关于步骤五,最后 我觉得按正确逻辑的话 应该是,是admin forward的到管理页面,不是就重定向吧?

相关推荐

    精简源码-spring-mvc 入门级使用,亲测好用

    这个"精简源码-spring-mvc 入门级使用"的压缩包文件,旨在为初学者提供一个简单易懂的实践案例,帮助他们快速理解和上手 Spring MVC。 首先,我们从 "spring" 这个标签开始。Spring 是一个开源框架,它提供了一个...

    Spring-mvc入门示例

    通过这个入门示例,你可以了解到 Spring MVC 的基本工作原理和核心组件,为进一步学习和使用 Spring MVC 打下坚实的基础。在实际项目中,Spring MVC 结合其他 Spring 模块,可以构建出强大的企业级 Web 应用。

    Spring MVC step-by-step 源码

    本资源"Spring MVC step-by-step 源码"是针对初学者准备的入门教程,通过实际项目"springapp"来帮助理解Spring MVC的工作原理。 在MyEclipse环境下开发的"springapp"项目,涵盖了Spring MVC的基础配置和核心组件。...

    spring-mvc.rar_spring mvc

    这个名为"spring-mvc.rar_spring mvc"的压缩包可能是为了帮助初学者理解和入门Spring MVC,解决他们在开发过程中可能遇到的问题。下面将详细阐述Spring MVC的核心概念和关键组件。 1. **DispatcherServlet**:它是...

    Spring-MVC-step-by-step.zip_Java MVC spring_Java spring mvc_sp

    《Spring MVC 入门教程:步步为营》 在Java Web开发领域,Spring MVC作为Spring框架的一部分,扮演着核心的角色。本教程旨在帮助初学者逐步理解并掌握Spring MVC的使用,构建自己的Web应用程序。 一、Spring MVC...

    Spring Web MVC入门教程

    使用Spring Web MVC,开发者可以轻松地进行Web层的单元测试,因为它天生集成Spring框架的特性,如依赖注入(IoC)和面向切面编程(AOP)等。同时,Spring Web MVC支持灵活的URL映射策略,能够非常方便地与其他视图技术...

    spring3.0mvc自学教程ppt+注解教程+注解实例+springmybatis教程+项目实例+中文api (老师的心血)从入门到项目实战

    Spring 3.0 MVC 是一个强大的Java框架,用于构建企业级Web应用程序。它以其模块化、松耦合和高度可配置性而闻名。本自学教程集合了多种资源,旨在帮助初学者逐步掌握Spring 3.0 MVC的核心概念,并通过实际项目实例...

    spring-mvc-study:SpringMVC 起步 —— Helllo World!

    在`spring-mvc-study-master`目录下,你可能会找到以下文件和目录: - `pom.xml`:Maven的项目对象模型,用于管理依赖项和构建设置。 - `src/main/java`:源代码目录,`com.example.springmvcstudy`包下可能有`...

    Spring的MVC 入门小例子,用到了注解驱动

    在这个入门小例子中,我们将探讨如何利用注解驱动的方式实现Spring MVC的功能。注解驱动使得开发过程更为简洁,减少了XML配置文件的需求。 ### 1. Spring MVC 框架概述 Spring MVC是Spring框架的一部分,专门用于...

    spring-mvc DEMO

    这个DEMO是为了帮助开发者快速理解和入门Spring MVC。当你将其导入到MyEclipse这样的集成开发环境中,你可以直接运行并观察其工作原理。 1. **Spring MVC 概述**: Spring MVC是Spring框架的一个模块,主要负责...

    spring mvc step by step,例子

    这个例子会提供一个基础的Spring MVC应用,包括Controller的创建、视图的展示以及必要的配置,非常适合初学者入门。同时,结合源码阅读,能更深入地理解Spring MVC的工作原理,为后续的Web开发打下坚实基础。

    spring mvc入门示例

    5. **注解驱动开发**:Spring MVC支持注解驱动,如@RequestMapping、@RequestParam、@ModelAttribute等,可以简化代码并减少XML配置。 6. **数据绑定**:Spring MVC提供了自动的数据绑定功能,能够将HTTP请求参数与...

    Spring 入门教程资料(源码源代码及课程笔记)

    在 Spring 中,可以使用 @Aspect 注解定义切面,@Before、@After、@Around 等注解定义通知。 4. **Bean 的生命周期**:Spring 容器管理 Bean 的创建、初始化、销毁等过程。了解 Bean 生命周期的不同阶段,如初始化...

    spring-roo-docs

    - 技术栈:使用的技术和框架,如Spring MVC、Hibernate等。 - 数据库设计:数据库表结构及关系。 **2.4 第一步:启动典型项目** 启动项目的步骤包括: - 创建项目:通过命令行或IDE创建新项目。 - 设置项目名称...

    spring-mvc-hello-world:你好世界 avec Spring MVC

    "spring-mvc-hello-world:你好世界 avec Spring MVC"这个项目标题表明,我们将探讨如何使用Spring MVC来创建一个简单的“Hello World”应用,这是初学者入门的常见实践。 首先,Spring MVC是Spring框架的一部分,它...

    spring-mvc-01.rar

    《Spring MVC 入门详解》 Spring MVC 是 Spring 框架的重要组成部分,它是一个用于构建 Web 应用程序的模型-视图-控制器(MVC)架构。在这个入门项目中,我们将深入探讨 Spring MVC 的核心概念、配置以及实际应用。...

    Spring MVC--2.入门程序

    这标志着你的Spring MVC入门程序已经成功运行。 在这个过程中,你学到了如何配置Spring MVC项目,包括Maven依赖、DispatcherServlet、servlet-context.xml配置、控制器编写以及视图渲染。这些都是Spring MVC开发的...

    Spring MVC 的注解使用实例

    在Spring MVC框架中,注解的使用极大地简化了配置,提高了开发效率。Spring MVC通过注解可以实现控制器、方法映射、模型数据绑定、视图解析等关键功能。本实例将深入探讨Spring MVC中常见的注解及其应用。 1. `@...

    Spring MVC入门实例

    1. 创建一个名为 `HelloController` 的 Java 类,使用 `@Controller` 注解标记为 Spring MVC 控制器,并定义一个返回 "Hello, World!" 的方法,使用 `@RequestMapping` 注解指定请求映射。 ```java import org....

    Spring MVC入门 XML版本+注释版本

    总结一下,Spring MVC入门涉及的关键概念有: 1. `DispatcherServlet`:作为请求分发器。 2. XML配置:定义组件,如视图解析器、处理器映射器和处理器适配器。 3. 注解配置:使用`@Controller`、`@RequestMapping`等...

Global site tag (gtag.js) - Google Analytics