Spring-mvc-jdbc知识点小结

来源:http://blog.csdn.net/mistygod/article/details/5755873

1、首先谈谈Spring-mvc

在使用Spring-mvc之前,为一直使用的是struts,关于struts的介绍为前面也曾小结过,所以这里就不多说了。还是来谈谈Spring的mvc吧.

Web开发大家都知道Servlet,和大多数基于Java的MVC框架一样,SpringMVC将所有的请求都经过一个前端Servlet控制器--DispatchServlet.DispatchServlet的工作就是将一个客户端的request请求分发给不同的springMVC控制器(Controller),所谓控制器就是处理请求的spring组件。不管那么多了,既然DispatchServlet是一个前端控制器(Servlet),那么就要在Web.xml配置它才行:

[java] view plaincopy

  1. <servlet>
  2. <servlet-name>wiscom</servlet-name>
  3. <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  4. <load-on-startup>1</load-on-startup>
  5. </servlet>
  6. <servlet-mapping>
  7. <servlet-name>wiscom</servlet-name>
  8. <url-pattern>*.do</url-pattern>
  9. </servlet-mapping>

配置完DispatchServlet以后,我们就可以用它来控制所有的请求了.所有的以*.do结尾的请求都将会被拦截.下面我们就需要分解应用上下文了。首先在WEB_INF目录下创建一个wiscom-servlet.xml文件,根据上面的配置,DispatchServlet会载入wiscom-servlet.xml.

不过这里最好是将应用文件分解开来,将不同的配置文件对应于不同的应用层次。比如服务层的配置文件可以使用service-servlet.xml..

下面一步就需要配置上下文载入器了,这里我们使用的是Servlet的监听器实现的

[java] view plaincopy

  1. <listener>
  2. <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  3. </listener>
  4. <!--指定相应的spring配置文件位置 默认路径/WEB-INF/applicationContext.xml -->
  5. <context-param>
  6. <param-name>contextConfigLocation</param-name>
  7. <param-value>
  8. /WEB-INF/wiscom-servlet.xml
  9. /WEB-INF/applicationContext-*.xml
  10. </param-value>
  11. </context-param>

到这里spring-mvc的环境基本上已经完成了,下面我们需要思考一个问题,Spring的前端控制器是如何将请求分发到下面不同的Controller中去的以及Controller是如何显示相应的页面的??

带着上面的两个问题,我们继续走下去.创建一个Controller.这里有必要解释一下Controller.当请求到达DispatchServlet时,需要一些目录来指明请求应该被如何分配。此时处理器映射可以帮助DispatchServlet了解请求应该被分发到哪个Controller中。所以我们必须在wiscom-servlet.xml中配置相应的处理器映射(HandleMapping)

[xhtml] view plaincopy

  1. <bean id="simpleUrlHandlerMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
  2. <property name="mappings">
  3. <props>
  4. <prop key="/reg.do">regController</prop>
  5. <prop key="/register.do">registerController</prop>
  6. <prop key="/query.do">queryController</prop>
  7. <prop key="/handle.do">handleController</prop>
  8. </props>
  9. </property>
  10. </bean>

这里使用的处理器映射的实现类是SimpleUrlHandleMapping.除此之外还有三种处理器映射类:

BeanNameUrlHandleMapping--根据控制器的名字将控制器映射到URL;

ControllerClassNameHandleMapping--通过将控制器的类名作为URL的基础将控制器映射到URL

CommonsPathMapHandleMapping--使用元数据映射控制器

在配置完处理器映射以后我们就可以创建自己的Controller来实现相应的业务了.spring为开发者提供了许多控制器,对于初学者而言会觉得很难选择(包括我自己).但是所有的Controller都实现了同一个接口:

[c-sharp] view plaincopy

  1. public interface Controller {
  2. ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception;
  3. }

对于那么多种Controller到底该如何选择,这里就不讨论了,根据业务的不同需求而选用合适的Controller。这里主要常用的Controller是AbstractController和SimpleFormController.下面就给出一个简单的实例使用spring-mvc实现用户注册功能:

创建自己的Controller类,继承于SimpleFormController(用于表单提交)

[java] view plaincopy

  1. public class RegisterController extends SimpleFormController {
  2. private HandleUserDao handleUserDao;
  3. @Override
  4. protected ModelAndView onSubmit(Object command) throws Exception {
  5. RegisterUser r = (RegisterUser) command;
  6. handleUserDao.saveUser(r);
  7. return new ModelAndView(this.getSuccessView());
  8. }
  9. public void setHandleUserDao(HandleUserDao handleUserDao) {
  10. this.handleUserDao = handleUserDao;
  11. }
  12. }

解释一下:这里为将HandleUserDao直接注入到了Controller中,调用后台类实现用户注册功能.需要提及一下的是这里的ModelAndView对象.这里我们不免产生了疑惑, RegisterController是如何在实习业务功能后跳转到相应的页面中去的?

为了帮助springMVC了解使用哪一个JSP,我们需要在wiscom-servlet.xml中声明一个bean:一个视图解析器

[c-sharp] view plaincopy

  1. <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
  2. <property name="prefix" value="/WEB-INF/show/"></property>
  3. <property name="suffix" value=".jsp"></property>
  4. </bean>

通过视图解析器DispatchServlet将请求导向/WEB-INF/show/xxx.jsp呈现给用户.

2、使用Spring-jdbc操作数据库:

2.1、使用JDBC模板(JdbcTemplate、NamedParameterTemplate、SimpleJdbcTemplate)

在操作数据库之前我们必须配置数据源

[xhtml] view plaincopy

  1. <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
  2. <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
  3. <property name="url" value="jdbc:oracle:thin:@172.18.33.234:1521:URP9208"/>
  4. <property name="username" value="usr_px"/>
  5. <property name="password" value="wiscom"/>
  6. <property name="initialSize" value="1"/><!-- 池启动时创建的连接数量 -->
  7. <property name="maxActive" value="10"/><!-- 配置数据库最大连接数 -->
  8. </bean>

这里我们使用的是jdbcTemplate类实现JDBC的CRUD操作.

JdbcTemplate是core包的核心类。它替我们完成了资源的创建以及释放工作,从而简化了我们对JDBC的使用。它还可以帮助我们避免一些常见的错误,比如忘记关闭数据库连接。JdbcTemplate将完成JDBC核心处理流程,比如SQL语句的创建、执行,而把SQL语句的生成以及查询结果的提取工作留给我们的应用代码。它可以完成SQL查询、更新以及调用存储过程,可以对ResultSet进行遍历并加以提取。它还可以捕获JDBC异常并将其转换成org.springframework.dao包中定义的,通用的,信息更丰富的异常。

[java] view plaincopy

  1. public class HandleUserDaoImpl implements HandleUserDao {
  2. private JdbcTemplate jdbcTemplate;
  3. static String QUERY_ALL = " SELECT * FROM RegisterUser_hchen " ;
  4. public List<RegisterUser> queryUsers(String userName) {
  5. //String QUERY_NAME = "select * from RegisterUser_hchen where username like ‘%"+userName+"%‘" ;
  6. String QUERY_NAME =QUERY_ALL + " where username like ‘%"+userName+"%‘ ";
  7. @SuppressWarnings("unchecked")
  8. List<RegisterUser> list = jdbcTemplate.queryForList(QUERY_NAME);
  9. return list;
  10. }
  11. public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
  12. this.jdbcTemplate = jdbcTemplate;
  13. }
  14. }

上面简单的演示了一下使用jdbcTemplate操作数据库实现模糊查询的功能,这里我们将jdbctTemplate注入到实现类中

[xhtml] view plaincopy

  1. <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  2. <property name="dataSource" ref="dataSource"></property>
  3. </bean>
  4. <bean id="handleUserDao" class="wiscom.dao.HandleUserDaoImpl">
  5. <property name="jdbcTemplate" ref="jdbcTemplate"></property>
  6. </bean>

同样我们使用Spring对jdbc的DAO支持类实现相应的CRUD操作,可以选择继承JdbcDaoSupport类,这里就不再解释了...下班啦~~

时间: 2024-08-01 12:42:35

Spring-mvc-jdbc知识点小结的相关文章

maven 项目 spring mvc + jdbc 配置文件

<?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:mvc="http://www.springframework.org/schema/

spring mvc开发过程知识点记录

给一个客户做的一个小项目,需求就是输入类似一个短网址http://dd.yy/xxxx然后跳转到另外一个域名下的图书文件.(实际很多短网址站都提供API供调用吧,不过客户需求是他自己建立一个短网址服务然后跳转到服务器上另外一个网站下载相应图书) 以前没单独用spring开发的经验,实际用java的经验也比较少,所以记录下开发过程中遇到的问题以及有价值的知识点记录下供自己和后来者备忘吧.有些地方理解或者写的可能有不对的地方,应急用的,先求保持功能可用即可.  配置: 1.web.xml 2.spr

Spring MVC 使用 JNDI 配置的DataSource

稍微看了下,Spring 中JNDI 的使用,弄了个小例子.有很多不完备的地方,以后慢慢看,再改吧. <一> 技术使用 Spring MVC JDBC Template Maven JNDI <二> 一些配置 Maven POM 配置 spring-context.spring-webmvc.spring-orm.spring-jdbc.mysql-connector-java等 创建数据库 create database usersdb; CREATE TABLE `users`

spring mvc中的拦截器小结 .

在spring mvc中,拦截器其实比较简单了,下面简单小结并demo下. preHandle:预处理回调方法,实现处理器的预处理(如登录检查),第三个参数为响应的处理器(如我们上一章的Controller实现):      返回值:true表示继续流程(如调用下一个拦截器或处理器):              false表示流程中断(如登录检查失败),不会继续调用其他的拦截器或处理器,此时我们需要通过response来产生响应: postHandle:后处理回调方法,实现处理器的后处理(但在渲

Spring mvc中@RequestMapping 6个基本用法小结

小结下spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: Java代码 @RequestMapping(value="/departments") public String simplePattern(){ System.out.println("simplePattern method was called"); return "someResult"; } 则访问http://localho

Spring mvc中@RequestMapping 6个基本用法小结(转载)

小结下spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: Java代码   @RequestMapping(value="/departments") public String simplePattern(){ System.out.println("simplePattern method was called"); return "someResult"; } 则访问http://local

(转载)Spring mvc中@RequestMapping 6个基本用法小结

小结下spring mvc中的@RequestMapping的用法. 1)最基本的,方法级别上应用,例如: Java代码 @RequestMapping(value="/departments") public String simplePattern(){ System.out.println("simplePattern method was called"); return "someResult"; } 则访问http://localho

Spring MVC小结1

由于最近刚开始学Spring MVC,所以来讲一下自己的理解. 首先进行环境配置: 1.jdk 2.myeclipse 3.tomcat 4.maven 配置maven的时候出现了一个小的问题,JAVA_HOME is set to an invalid dictory……,出现这个错误是因为,配置JAVA_HOME的时候,写jdk的路径的时候在后面加了一个;,把它去掉就可以了. 配置好后就可以新建maven项目了. 根据我自己的理解,SpringMVC就是在Spring框架上面的MVC架构,数

spring mvc 项目 相关配置文件小结

web.xml文件主要配置如下: 需要加载的配置文件: 类路径下,可以使用通配符配置  类似:classpath:conf/spring/*/*.xml, <context-param> <param-name>contextConfigLocation</param-name> <param-value> classpath:conf/spring/spring-da.xml, classpath:conf/spring/spring-res.xml, &

Spring MVC 小结

1. 传值的方式: 页面传递给controller: 1). (@RequestParam("username") String username) // @RequestParam("username")中的参数会被任务是地址的一部分,如果不传此值,会报错 2). (String username) 3). (User user) // 页面以spring的form表单提交 4). (@ModelAttribute("user")User us