以前都是用Struts1 or Struts2的MVC,之前就一直想了解SpringMVC Annotation版的使用,于是今天到Spring的官网上搬弄了Jar下来(点这里进入下载),搭起了一个基本的框架。下面说一下SpringMVC框架搭建流程(使用版本Spring3.1 RC1)和基本使用
- 下载好Jar导入到Web工程的Lib下面,这是我用到的jar包
2. 在web.xml加入如下代码,监听以什么路径结尾的请求,我这里是拦截.html结尾的
<servlet>
<servlet-name>spring</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.html</url-pattern> </servlet-mapping>
3. 根据你上面配置的<servlet-name>spring</servlet-name>中的值在WEB-INF目录下面创建spring-servlet.xml,那个值可以随便改,
改了以后创建对应的文件即可,只要符合*-servlet.xml即可。编辑此文件加入如下代码<?xml version="1.0" encoding="UTF-8" ?>
<?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:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd"> <!-- 自动扫描bean,把作了注解的类转换为bean --> <context:component-scan base-package="com" /> <!-- 定义jdbc配置信息路径 --> <context:property-placeholder location="/WEB-INF/jdbc.properties" /> <!-- jdbcTemplate数据库操作类 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 数据源配置,使用c3p0数据库连接池 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close" p:driverClass="${app.jdbc.driverClassName}" p:jdbcUrl="${app.jdbc.url}" p:user="${app.jdbc.username}" p:password="${app.jdbc.password}" p:acquireIncrement="5" p:idleConnectionTestPeriod="60" p:maxPoolSize="100" p:maxStatements="50" p:minPoolSize="10" /> <!-- 定义事务管理 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" p:dataSource-ref="dataSource" /> <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 --> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> <!-- 处理Mutipart文件上次的bean --> <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver" p:defaultEncoding="utf-8" /> <!-- 对模型视图名称的解析,即在模型视图名称添加前后缀 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/" p:suffix=".jsp" /> </beans>
4. 加入数据库配置文件到WEB-INF目录
#test is databaseName. app.jdbc.driverClassName=com.mysql.jdbc.Driver app.jdbc.url=jdbc:mysql://localhost/test app.jdbc.username=root app.jdbc.password=******
到这里框架搭建基本完成。由于我使用的Spring的JdbcTemplate对数据库进行的操作,这里就不需要在配置其他的信息。下面直接贴代码:
控制器Controller相当于Struts中的Action
package com.controller;
import javax.annotation.Resource;
import javax.servlet.http.HttpServletRequest;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
import com.model.User;
import com.service.UserService;
/**
* @author dongji
* 控制器类,加上@Contorller即可,不需要继承其他任何类
*/
@Controller
public class UserController{
//服务层借口,加此注解就可以注入进来
@Resource(name = "uService")
private UserService uService;
//请求的路径
@RequestMapping("/save")
public String save(HttpServletRequest request, User u) {
uService.save(u);
String message = "Save Ok, Spring 3.0!";
request.setAttribute("message", message);
request.setAttribute("users", uService.findAll());
// return new ModelAndView("hello", "message", message);
return "hello";
}
@RequestMapping("/delete")
public ModelAndView delete(HttpServletRequest request) {
Integer id = Integer.parseInt(request.getParameter("id"));
uService.delete(id);
request.setAttribute("message", "您刚才删除了ID为"+id+"的人!!!");
request.setAttribute("users", uService.findAll());
return new ModelAndView("hello");
}
}
DAO层接口
package com.service;
import java.util.List;
import com.model.User;
public interface UserService {
void save(User u);
void delete(Integer id);
List<User> findAll();
}
DAO实现类
package com.service.impl;
import java.util.List;
import javax.annotation.Resource;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service;
import com.model.User;
import com.service.UserService;
@Service("uService")
public class UserServiceImpl implements UserService {
@Resource
private JdbcTemplate jdbcTemplate;
/**
* 玩数据库添加一条记录
*
* @param u
* 用户
*/
public void save(User u) {
jdbcTemplate.update("insert into user values(null,?)", u.getName());
}
/**
* 删除一个用户
*
* @param id
* 用户id
*/
public void delete(Integer id) {
jdbcTemplate.update("delete from user where id=?", id);
}
/**
* 查询所有用户信息
*
* @return 所有用户的集合
*/
public List findAll() {
return jdbcTemplate.queryForList("SELECT * FROM `user`");
}
}
实体类
package com.model;
/**
* 测试用户类
* @author dongji
*
*/
public class User{
private int id;
private String name;
//.....省略setter and getter
}
到这里,一个简单的SpringMVC已经实现了,有什么意见大家尽力提哦