最近简单学习使用了一下SpringMVC,小小感受,交流交流...
1.首先说一下对我观点颠覆的一个地方,以前不太看好将配置转注解,一方面是自己使用惯了配置,程序结构清晰明了,反观注解,如果项目较小,你会觉得开发起来一气呵成,极端爽快,但是可以预见的是如果项目边的过于庞大,那么查找定位就显得比较费劲了,可能很多时候包名,类名就成了类管理的一种默认(这难道就是约定由于配置?),所以这就需要团队之间快速达成共识了,说说SpringMVC的最爽的注解@Controller及@RequestMapping("/login"),这个可以让你省去配置请求跟类之间的对应关系,而且可以做到真正的“一致性”,不过目前还不是很清楚如果某人也顶一个了相同的login该怎么区别?这个只有在应用打包的时候有spring做后知后觉的检测了。
SpringMVC从3.1开始引入了hibernate的校验,感觉也是一个很好用的东西,不需要配置文件,通过annotation就可以,这样做的好处是:你可以控制错误的输出方式,相比webx;
例如:实体类
Java代码
package com.mybank.domain;
import javax.validation.constraints.Size;
import org.hibernate.validator.constraints.Email;
import org.hibernate.validator.constraints.NotEmpty;
public class UserInfo {
private long id;
@Size(max=25,message="用户昵称太长了")
private String userNick;
@NotEmpty(message="邮箱不能为空")
@Email(message="请填写正确格式")
private String userEmail;
@NotEmpty(message="密码不能为空哦")
@Size(min = 1, max = 25,message="密码请控制在1~25个字符之间")
private String userPassword;
private int status;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = status;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getUserNick() {
return userNick;
}
public void setUserNick(String userNick) {
this.userNick = userNick;
}
public String getUserEmail() {
return userEmail;
}
public void setUserEmail(String userEmail) {
this.userEmail = userEmail;
}
}
处理的类:
Java代码
@RequestMapping("/register")
public @ResponseBody
Map<String, Object> register(@Valid UserInfo userInfo, BindingResult result) {
Map<String, Object> model = new HashMap<String, Object>();
String code = "0";
String message = "";
if (result.hasErrors()) {
for (FieldError fieldError : result.getFieldErrors()) {
model.put(fieldError.getField(), fieldError.getDefaultMessage());
}
return model;
}
String sql = "INSERT INTO user_info (user_email, user_nick,user_password,gmt_create,gmt_modified,status) VALUES (?,?,?,?,?,?)";
String querySql = "select * from user_info where user_email=?";
UserInfo ownerInfo = null;
try {
ownerInfo = jdbcTemplate.queryForObject(querySql,
new Object[] { userInfo.getUserEmail() },
new BeanPropertyRowMapper<UserInfo>(UserInfo.class));
} catch (EmptyResultDataAccessException e) {
message = "您已经注册过了";
}
if (ownerInfo == null
|| ownerInfo.getStatus() != Constants.NORMAL_STATUS) {
int i = jdbcTemplate.update(sql, userInfo.getUserEmail(),
userInfo.getUserNick(), userInfo.getUserPassword(),
new Date(), new Date(), Constants.NORMAL_STATUS);
if (i > 0) {
code = "200";
message = "注册成功";
} else {
message = "注册失败";
}
} else {
message = "您已经注册过了";
}
model.put("code", code);
model.put("message", message);
return model;
}
这样,校验信息就可以顺利的转成json返回给前端,而大部分使用的校验框架基本都是在请求进入action前就处理,这样的好处是及时返回,坏处是返回格式不易控制。校验需要使用的jar包
Java代码
hibernate-validator-4.1.0.Final.jar
javax.validation-1.0.0.GA.jar
slf4j-api-1.6.1.jar
commons-logging-1.1.1.jar
如果你需要返回json类型还需要如下jar包
Java代码
jackson-core-asl-1.9.10.jar
jackson-mapper-asl-1.9.10.jar
由于只是自己玩,所以懒得加入一堆jar,所以dao还是使用了Spring的JDBCTemplate,再者我是个很懒得人,所以不太喜欢自己从ResultSet里边一一对应的取值复制,所以百度终得其解,不过也有些限制做法如下:
Java代码
userInfo = jdbcTemplate.queryForObject(
sql,
new Object[] { userInfo.getUserEmail(),
userInfo.getUserPassword() },
new BeanPropertyRowMapper<UserInfo>(UserInfo.class));
在查询的时候传入的RowMapper使用:BeanPropertyRowMapper,由Spring完成这一步,不过前提是属性使用驼峰(完全按照数据库字段定义属性也可以,不过估计没人愿意这么干)具体的如果出错了,参加源码应该也可以很好的理解的。
哇咔咔,这个BeanPropertyRowMapper实在是省事啊。
对了其实我的SpringMVC的配置文件也相对比较简单如下:
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:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/tx
http://www.springframework.org/schema/tx/spring-tx-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/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd">
<!-- 启用spring mvc 注解 -->
<context:annotation-config />
<mvc:annotation-driven />
<mvc:default-servlet-handler />
<!-- 设置使用注解的类所在的jar包 -->
<context:component-scan base-package="com.mybank.action"></context:component-scan>
<!-- 完成请求和注解POJO的映射 <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"
/> -->
<!-- 对转向页面的路径解析。prefix:前缀, suffix:后缀 -->
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="" />
<property name="suffix" value=".jsp" />
</bean>
</beans>
其中context:component-scan这个可以配置空值
Xml代码
<context:annotation-config />
<mvc:annotation-driven />
<mvc:default-servlet-handler />
这三个可以让你省去一大堆配置
Xml代码
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="" />
<property name="suffix" value=".jsp" />
</bean>
这个貌似必须配置,否则你的应用就找不到处理完成后的响应视图了
期间遇到一些问题最终定位到是因为java文件保存格式为
- 大小: 11.4 KB
分享到:
相关推荐
本资源“spring mvc 架构源代码”是一个完整的、可运行的Spring MVC项目,适用于初学者和进阶开发者深入理解并实践Spring MVC的工作原理和应用。 首先,让我们深入探讨Spring MVC的核心组件: 1. **...
在“简单纯粹的Spring MVC架构J2EE项目”中,我们看到的是一个基于 J2EE 平台构建的轻量级 Web 开发解决方案,利用了 Spring MVC 的优势来实现高效的开发流程。 1. **项目结构** - 项目的部署结构通常包括 `WEB-...
读书笔记:基于Spring MVC架构开发的一款web在线聊天应用系统
这个教程是专为学习 Spring MVC 开发入门而写。这一系列的 Spring MVC 教程是基于新的 Spring 框架的最新版本(版本4)写的。 Spring MVC 是一个模型 - 视图 - 控制器(MVC)的Web框架建立在中央前端控制器servlet...
二、Spring MVC核心类与接口:Spring MVC架构中包含许多核心组件,如DispatcherServlet、HandlerMapping、Controller、ViewResolver等。这些组件协同工作,处理用户的请求并返回相应的响应。 三、Spring MVC核心...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为构建MVC(Model-View-Controller)模式的Web应用程序提供了强大的支持。在本项目中,我们将探讨如何使用Spring MVC、MyBatis和MySQL来搭建一个简单的用户查询...
1. **Spring MVC架构** Spring MVC是Spring框架的一部分,它通过分离关注点来简化开发,使得业务逻辑、数据访问和用户界面可以独立开发和测试。其架构主要包括以下组件: - DispatcherServlet:前端控制器,负责...
1. **Spring MVC架构**:了解Spring MVC的分层结构,包括DispatcherServlet、Controller、Model、View和ViewModel等核心组件。 2. **MVC模式**:学习Model-View-Controller设计模式,理解它如何帮助分离业务逻辑、...
1. **Spring MVC架构** Spring MVC通过分离关注点,将业务逻辑、数据处理和用户界面解耦。Controller接收HTTP请求,调用Service层处理业务,Service层与DAO层交互操作数据,最后Controller将处理结果传递给View进行...
1. **Spring MVC架构** Spring MVC采用模型-视图-控制器(MVC)模式,将业务逻辑、数据展示和用户交互分离,提高了代码的可维护性和复用性。在Spring MVC中,DispatcherServlet作为核心组件负责请求分发,...
这个框架基于Spring IoC(Inversion of Control)容器,它提供了Model-View-Controller(MVC)架构模式的实现,使得开发者可以将业务逻辑、数据处理和用户界面分离,从而提高代码的复用性和模块化。 在"Spring MVC ...
1. **Spring MVC架构**: Spring MVC遵循模型-视图-控制器(MVC)设计模式,分离了业务逻辑、数据和用户界面。模型处理业务逻辑,视图负责展示结果,而控制器接收用户请求并调度模型和视图。 2. **...
这个名为"Spring MVC 3.0.rar"的压缩包包含了一份关于Spring MVC 3.0版本的实战指南PPT,是Java开发者深入理解Spring MVC架构的宝贵资源。 **Spring MVC简介** Spring MVC是一种Model-View-Controller(模型-视图-...
Spring MVC架构与DispatcherServlet配置 Spring MVC是一种流行的基于Java的Web应用框架,它提供了一个灵活的架构来开发Web应用程序。在本文中,我们将对Spring MVC的架构和DispatcherServlet的配置进行总结。 ...
Spring MVC 是一个基于Java的轻量级Web应用框架,它为开发者提供了模型-视图-控制器(MVC)架构,使开发人员能够更好地组织和分离应用程序的业务逻辑、数据处理和用户界面。Spring MVC是Spring框架的一个核心组件,...
Spring MVC允许通过配置访问静态文件,如图片、JavaScript和CSS,这通常在web.xml或Spring配置文件中设置。 四、请求映射到Action方法: 使用@RequestMapping注解,可以将HTTP请求映射到特定的Controller类的方法。...
Spring MVC 是一个基于 Java 的轻量级 Web 开发框架,它是 Spring 框架的一个模块,主要用于构建 MVC(Model-View-Controller)架构的 Web 应用程序。本教程将帮助初学者快速理解和掌握 Spring MVC 的核心概念和实践...