- 浏览: 518918 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (299)
- Oracle(pl/sql_Erp_Pro*C) (69)
- 设计模式 (4)
- spring (23)
- ext (17)
- apache开源项目应用 (4)
- jquery (16)
- 生活琐事 (8)
- 下载资源 (23)
- mysql (2)
- Eclipse使用积累 (5)
- 报表类(报表/图表) (13)
- php (4)
- Web多彩文本框 (3)
- json (4)
- jqgrid (2)
- ant (2)
- java算法积累 (8)
- EL表达式/JSTL (4)
- poi (3)
- gwt (2)
- 爬网第一步 (2)
- javascript (17)
- Javaweb (8)
- tomcat (1)
- flex (1)
- Java&DB (3)
- J2SE (7)
- linux (3)
- 数据结构 (1)
- dot net (5)
- struts (1)
- ibatis (1)
- log4j (1)
- 项目管理 (1)
- Java native interface(jni,jacob......) (5)
- applet (1)
- VB.net/C#.net/JNI (20)
- css (1)
- Sqlite (1)
- servlet (1)
- REST (1)
最新评论
-
wenhurena:
能不能给一下解压密码roki.work.2017@gmail. ...
Ebs解体新書と学習資料1 -
liutao1600:
楼主写的太好了,每天学习~~
Spring_MVC(6)测试 -
liutao1600:
太好了,每天学习你的文章~~~
Spring_MVC(3)表单页面处理 -
liutao1600:
学习了,太好了
Spring_MVC(2)控制层处理 -
liutao1600:
学习了~~~
Spring_MVC(1)构建简单web应用
- // 跳转到用户信息页面
- return "account/profile";
- }
- }
/** * 2010-1-26 */ package org.zlex.spring.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.zlex.spring.domain.Account; import org.zlex.spring.service.AccountService; /** * 账户信息控制器 * * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a> * @version 1.0 * @since 1.0 */ @Controller @RequestMapping(value = "/profile.do") public class ProfileController { @Autowired private AccountService accountService; /** * 账户信息展示 * * @param id * @param model * @return */ @RequestMapping(method = RequestMethod.GET) public String profile(@RequestParam("id") int id, ModelMap model) { Account account = accountService.read(id); model.addAttribute("account", account); // 跳转到用户信息页面 return "account/profile"; } }
@RequestMapping(value = "/profile.do")为该控制器绑定url(/profile.do)
@RequestMapping(method = RequestMethod.GET)指定为GET请求
model.addAttribute("account", account);绑定账户
return "account/profile";跳转到“/WEB-INF/page/account/porfile.jsp”页面
对应构建这个页面:
porfile.jsp
- <fieldset><legend>用户信息</legend>
- <ul>
- <li><label>用户名:</label><c:out value="${account.username}" /></li>
- </ul>
- </fieldset>
<fieldset><legend>用户信息</legend> <ul> <li><label>用户名:</label><c:out value="${account.username}" /></li> </ul> </fieldset>
账户信息已经绑定在response的属性上。自然,使用<c:out />标签就可以获得账户信息内容。
访问地址http://localhost:8080/spring/profile.do?id=1,结果如图所示:
接着构建一个登录控制器LoginController
LoginController.java
- /**
- * 2010-1-25
- */
- package org.zlex.spring.controller;
- import org.springframework.beans.factory.annotation.Autowired;
- import org.springframework.stereotype.Controller;
- import org.springframework.ui.ModelMap;
- import org.springframework.web.bind.annotation.ModelAttribute;
- import org.springframework.web.bind.annotation.RequestMapping;
- import org.springframework.web.bind.annotation.RequestMethod;
- import org.zlex.spring.domain.Account;
- import org.zlex.spring.service.AccountService;
- /**
- * 登录控制器
- *
- * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a>
- * @version 1.0
- * @since 1.0
- */
- @Controller
- @RequestMapping(value = "/login.do")
- public class LoginController {
- @Autowired
- private AccountService accountService;
- /**
- * 初始化表单
- *
- * @param model
- * @return
- */
- @RequestMapping(method = RequestMethod.GET)
- public String initForm(ModelMap model) {
- Account account = new Account();
- model.addAttribute("account", account);
- // 直接跳转到登录页面
- return "account/login";
- }
- /**
- * 登录
- *
- * @param account
- * @return
- */
- @RequestMapping(method = RequestMethod.POST)
- public String login(@ModelAttribute("account") Account account) {
- Account acc = accountService.read(account.getUsername(), account
- .getPassword());
- if (acc != null) {
- return "redirect:profile.do?id=" + acc.getId();
- } else {
- return "redirect:login.do";
- }
- }
- }
/** * 2010-1-25 */ package org.zlex.spring.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.zlex.spring.domain.Account; import org.zlex.spring.service.AccountService; /** * 登录控制器 * * @author <a href="mailto:zlex.dongliang@gmail.com">梁栋</a> * @version 1.0 * @since 1.0 */ @Controller @RequestMapping(value = "/login.do") public class LoginController { @Autowired private AccountService accountService; /** * 初始化表单 * * @param model * @return */ @RequestMapping(method = RequestMethod.GET) public String initForm(ModelMap model) { Account account = new Account(); model.addAttribute("account", account); // 直接跳转到登录页面 return "account/login"; } /** * 登录 * * @param account * @return */ @RequestMapping(method = RequestMethod.POST) public String login(@ModelAttribute("account") Account account) { Account acc = accountService.read(account.getUsername(), account .getPassword()); if (acc != null) { return "redirect:profile.do?id=" + acc.getId(); } else { return "redirect:login.do"; } } }
分段详述,先说初始化表单:
- /**
- * 初始化表单
- *
- * @param model
- * @return
- */
- @RequestMapping(method = RequestMethod.GET)
- public String initForm(ModelMap model) {
- Account account = new Account();
- model.addAttribute("account", account);
- // 直接跳转到登录页面
- return "account/login";
- }
/** * 初始化表单 * * @param model * @return */ @RequestMapping(method = RequestMethod.GET) public String initForm(ModelMap model) { Account account = new Account(); model.addAttribute("account", account); // 直接跳转到登录页面 return "account/login"; }
@RequestMapping(method = RequestMethod.GET)指定了GET请求方式,这与POST表单提交相对应!
model.addAttribute("account", account);绑定账户对象,也就是这个登录表单对象
return "account/login";指向登录页面
再看登录方法:
- /**
- * 登录
- *
- * @param account
- * @return
- */
- @RequestMapping(method = RequestMethod.POST)
- public String login(@ModelAttribute("account") Account account) {
- Account acc = accountService.read(account.getUsername(), account
- .getPassword());
- if (acc != null) {
- return "redirect:profile.do?id=" + acc.getId();
- } else {
- return "redirect:login.do";
- }
- }
/** * 登录 * * @param account * @return */ @RequestMapping(method = RequestMethod.POST) public String login(@ModelAttribute("account") Account account) { Account acc = accountService.read(account.getUsername(), account .getPassword()); if (acc != null) { return "redirect:profile.do?id=" + acc.getId(); } else { return "redirect:login.do"; } }
@RequestMapping(method = RequestMethod.POST)绑定POST表单提交请求
@ModelAttribute("account") Account account绑定表单对象。
最后,再来看看页面:
login.jsp
- <fieldset><legend>登录</legend><form:form commandName="account">
- <form:hidden path="id" />
- <ul>
- <li><form:label path="username">用户名:</form:label><form:input
- path="username" /></li>
- <li><form:label path="password">密码:</form:label><form:password
- path="password" /></li>
- <li>
- <button type="submit">登录</button>
- <button type="reset">重置</button>
- </li>
- </ul>
- </form:form></fieldset>
<fieldset><legend>登录</legend><form:form commandName="account"> <form:hidden path="id" /> <ul> <li><form:label path="username">用户名:</form:label><form:input path="username" /></li> <li><form:label path="password">密码:</form:label><form:password path="password" /></li> <li> <button type="submit">登录</button> <button type="reset">重置</button> </li> </ul> </form:form></fieldset>
注意,<form:form commandName="account">必须指明commandName,且与表单初始化、提交方法中的表单对象名称保持一致!
页面目录结构如下图所示:
在页面中,我加入了一部分css效果,这部分代码我就不在这里唠叨了,大家可以看源码!
登录试试,如图:
用户名:snwolf 密码:zlex
如果登录成功,我们就会跳转到之前的账户信息页面!
注解的确减少了代码的开发量,当然,这对于我们理解程序是一种挑战!如果你不知道原有的SpringMVC的流程,很难一开始就能摆弄清楚这些内容!
发表评论
-
cronExpression
2010-08-30 17:57 1189一个Cron-表达式是一个由六至七个字段组成由空格分隔的 ... -
spring任务调度(task)
2010-08-23 13:24 2850spring 任务调度总结参考资料http://www.ibm ... -
spring 任务配置
2010-08-23 10:45 1202xml 代码 <bean id="i ... -
spring3.0注解式声明
2010-08-19 17:39 4372从spring2.5开始,annotation结合BeanPo ... -
Spring Roo 自动化集成开发工具
2010-08-04 14:54 2248Roo是一种 Spring 开发的辅助工具,使用命令行操作来生 ... -
spring3.0学习
2010-08-03 16:24 858https://src.springframework.org ... -
Spring mvc 转发、重定向
2010-07-28 16:53 2407spring控制器最后返回一个ModelAndView( ... -
spring api download
2010-07-28 08:43 1179在网上找了好多,都下不下来,要不就是需要注册登录什么的,才能下 ... -
Spring uploadFile
2010-05-02 20:45 2232先让我们来看一段摘自《Spring 2.5 Referen ... -
Spring_MVC(6)测试
2010-04-24 18:48 3725这里将用到以下几个包: 引用 aopalliance-1 ... -
Spring_MVC(5)业务层处理
2010-04-24 18:47 1984这里将用到以下几个包: 引用 aopalliance-1 ... -
Spring_MVC(4)持久层处理
2010-04-24 18:45 1201这里将用到以下几个包: 引用 aopalliance-1 ... -
Spring_MVC(2)控制层处理
2010-04-24 18:42 1696言归正传,研究一下注解下的控制层。 我习惯于使用JSTL展示页 ... -
Spring_MVC(1)构建简单web应用
2010-04-24 18:40 1441Java代码 /** * 2010 ... -
spring实现文件上传
2010-04-24 15:15 1621Spring由内置的multipart支持web应用中的文件上 ... -
Spring MVC:使用InternalResourceViewResolver视图解析器
2010-02-24 09:14 2050参考:Sping 2.0.8\docs\MVC-step-by ... -
ibatis+spring控制事务配置
2009-04-05 10:25 1923<bean id="dataSource&qu ... -
转:spring事务控制配置实例
2009-04-03 10:47 3360Spring声明式事务配置的几种方法 在Spring中进 ... -
spring+ibatis+struts事务控制配置
2009-04-03 10:38 1559<?xml version="1.0" ... -
spring+ibatis+struts配置问题
2009-04-01 14:48 1127以下web.xml配置 <?xml version=&q ...
相关推荐
10. **Form标签与数据绑定**:Spring MVC 提供了表单标签库,支持数据绑定和验证,如`<form:input>`标签用于输入字段,`<form:errors>`显示错误信息。 11. **转换器与格式化器**:`@InitBinder` 可以注册自定义的...
- **表单标签**:Spring Web MVC提供了一套强大的表单标签库,可以帮助开发者更轻松地创建HTML表单元素。 通过上述内容的学习,可以全面掌握Spring Web MVC框架的核心开发知识,为构建高质量的Web应用程序打下坚实...
表单的`action`属性指向`login.do`,这是Spring MVC处理的URL路径。 - **Servlet配置**:在`web.xml`中配置`DispatcherServlet`,并设置`contextConfigLocation`来指定Spring配置文件的位置。 - **请求映射**:...
10. **数据绑定**:Spring MVC支持自动将请求参数绑定到控制器方法的参数,以及将模型数据绑定到表单。 11. **异常处理**:通过`@ExceptionHandler`注解,可以在控制器内处理特定的异常,或者全局地使用`@...
开发者可能使用jQuery来处理用户的输入,通过AJAX调用Spring MVC的Controller方法来异步获取或更新数据,而无需刷新整个页面。这种方式提高了应用的响应速度,提供了更好的用户体验。 在实际应用中,jQuery可以与...
在实际开发中,我们还需要了解Spring MVC的其他特性,如拦截器(Interceptor)、异常处理、局部变量和模型数据传递、上传下载支持等。同时,结合源码阅读,可以帮助我们更好地理解其内部机制。 总的来说,"我学...
Spring MVC 是一款强大的Java Web开发框架,它是Spring框架的一部分,用于构建可维护、高性能的Web应用程序。这个"spring_mvc_jar.zip"压缩包包含了运行Spring MVC应用所需的库文件,通常在搭建Spring MVC环境或者...
Spring MVC框架的核心组件包括控制器(Controller)、模型对象(Model)、分派器(Dispatcher)和处理程序对象(Handler)。控制器负责接收用户的请求并进行处理,模型对象代表数据和业务逻辑,分派器负责将请求分发...
11. **表单标签**:了解Spring Web MVC提供的JSP标签库。 #### 四、总结 Spring Web MVC 是一个功能强大且灵活的Web框架,它不仅能够帮助开发者构建高质量的Web应用程序,还能够与其他Spring生态系统中的组件无缝...
Spring MVC允许通过@ControllerAdvice和@ExceptionHandler注解进行全局异常处理,可以统一处理应用程序中出现的异常,提高代码的健壮性。 9. **数据绑定与验证**: Spring MVC支持自动的数据绑定,可以从请求参数...
在Spring MVC中,WebFlow定义了一种声明式的方式来处理Web应用程序中的流程逻辑。相比于传统的控制器方法,WebFlow允许开发者定义一系列状态(states)和转换(transitions),每个状态对应一个视图,而转换则是状态...
错误处理和异常处理也是Spring MVC中的重要部分,通过@ControllerAdvice和@ExceptionHandler可以全局处理异常,提供统一的错误页面。 最后,测试是任何应用程序开发的重要环节。Spring MVC提供了MockMVC,可以在不...
Spring框架提供了数据绑定机制,能够将客户端提交的表单数据绑定到后端处理的对象上。 8. 异常处理: Spring框架提供了一套丰富的异常处理机制,使得在开发过程中可以更好地管理和处理各种运行时异常,提高程序的...
3. **处理请求**: Handler处理请求,执行相应的业务逻辑,并返回ModelAndView对象。 4. **选择ViewResolver**: DispatcherServlet根据ModelAndView中的View名称选择合适的ViewResolver。 5. **渲染视图**: ...
随着你对Spring MVC的理解加深,可以进一步学习如何使用Model、View和Controller进行交互,处理表单数据,使用拦截器、AOP、异常处理等高级特性。在实际开发中,Spring MVC与Spring Boot的结合使用能带来更多的便利...
- **与数据转换、格式化、验证框架无缝集成**:Spring MVC 3.0 可以更好地与 Spring 的数据绑定、转换和验证机制集成,提供了更加强大和灵活的数据处理能力。 - **对静态资源处理提供特殊支持**:Spring MVC 3.0 对...
描述中提到的“夏老师《spring开发指南0.8》”是一本关于Spring框架的教程书籍,版本为0.8,暗示我们可能在处理一个基于早期Spring MVC版本的项目。这个例子是用户注册功能的实现,这意味着我们将接触到如何在Spring...
此外,Spring MVC还提供了数据绑定、表单验证、模型属性转换等功能。数据绑定允许我们将HTTP请求参数自动绑定到控制器方法的参数上。表单验证则可以通过JSR-303/JSR-349 Bean Validation实现,为模型对象添加校验...
通过这个压缩包,学习者可以了解到Spring MVC的基本结构和工作原理,包括控制器的定义、模型数据的处理、视图的渲染,以及Spring MVC如何与Servlet容器协同工作。具体步骤可能包括创建一个处理登录请求的Controller...
Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过DispatcherServlet来协调各个组件以完成请求处理和响应的工作。Spring框架提供了构建Web应用程序的全功能MVC模块,支持可插入的MVC...