`
dj4307665
  • 浏览: 13225 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

初识SpringMVC

    博客分类:
  • Java
阅读更多

以前都是用Struts1 or Struts2的MVC,之前就一直想了解SpringMVC Annotation版的使用,于是今天到Spring的官网上搬弄了Jar下来(点这里进入下载),搭起了一个基本的框架。下面说一下SpringMVC框架搭建流程(使用版本Spring3.1 RC1)和基本使用

  1. 下载好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已经实现了,有什么意见大家尽力提哦

 

 

  • 大小: 3.7 KB
0
4
分享到:
评论
5 楼 peterchao_asch 2012-02-15  
先看再说 好好搞搞springmvc
4 楼 xiaoZ5919 2011-11-12  
漏掉事务配置
3 楼 ycssh 2011-11-11  
dj4307665 写道
ycssh 写道
我前段时间看了下springmvc,有个问题请教下楼主,你的后台验证是怎么实现的,springmvc好像只有针对model的验证,差不多就是针对数据库表的验证吧,不能针对请求的验证啊,比如我又一个User类,我在不同的场合需要不同的验证规则,我没有发现springmvc有这样的支持,有没有其他的办法。就是这个原因最终放弃了springmvc的使用,转而使用struts2了

不知道你说的model的验证是不是->使用Spring注解的方式实现服务器端表单验证。然后Spring还提供了Validator接口,为POJO提供针对具体类的验证


恩,我说的就是服务器端针对表单的验证,因为我提交的表单不一定就是对应后台的一个POJO类,而且即使是针对后台的POJO类,我不同的表单可能验证规则不一样,例如我又一个POJO类User,有属性private String name,用springmvc就是
public class User{
@NotNull
private String name;
}
而我一个表单的验证是要求不为空,另一个则没有这种需求用springmvc怎么处理。
总之就是说springmvc怎么实现服务器端的表单验证,而不是针对POJO类的验证。
2 楼 dj4307665 2011-11-11  
ycssh 写道
我前段时间看了下springmvc,有个问题请教下楼主,你的后台验证是怎么实现的,springmvc好像只有针对model的验证,差不多就是针对数据库表的验证吧,不能针对请求的验证啊,比如我又一个User类,我在不同的场合需要不同的验证规则,我没有发现springmvc有这样的支持,有没有其他的办法。就是这个原因最终放弃了springmvc的使用,转而使用struts2了

不知道你说的model的验证是不是->使用Spring注解的方式实现服务器端表单验证。然后Spring还提供了Validator接口,为POJO提供针对具体类的验证
1 楼 ycssh 2011-11-10  
我前段时间看了下springmvc,有个问题请教下楼主,你的后台验证是怎么实现的,springmvc好像只有针对model的验证,差不多就是针对数据库表的验证吧,不能针对请求的验证啊,比如我又一个User类,我在不同的场合需要不同的验证规则,我没有发现springmvc有这样的支持,有没有其他的办法。就是这个原因最终放弃了springmvc的使用,转而使用struts2了

相关推荐

Global site tag (gtag.js) - Google Analytics