SpringMVC经典系列-03基于Spring2.5采用XMl配置的方式进行项目开发---【LinusZhu】
2014-06-11 13:29
1016 查看
注意:此文章是个人原创,希望有转载需要的朋友们标明文章出处,如果各位朋友们觉得写的还好,就给个赞哈,你的鼓励是我创作的最大动力,LinusZhu在此表示十分感谢,当然文章中如有纰漏,请联系linuszhu@163.com,敬请朋友们斧正,谢谢。
如下项目代码是经过我个人调试通过的,保证安全可靠。
虽然在项目的开发中我还是喜欢使用SpringMVC的注解,但是还是要为朋友们讲一讲xml配置的方式,哈哈,开始进行……
注意了:下面的项目SpringMVC全部基于XML配置,同时对hibernate进行了集成操作。
项目采用的是spring MVC+spring+hibernate3的开发架构,数据库使用的是Oracle,需要下载Oracle驱动包。
项目创建步骤如下:
1. 首先建立web项目
2. 导入jar包(spring.jar, spring-webmvc.jar, commons-logging.jar。其他jar包为hibernate相关jar包),如下图:
3. 修改web.xml如下:
4.
4000
增加对应的web-config.xml(这里包含spring mvc相关的相关配置)
5. 在WEB-INF下增加service-config.xml(这里包含service层类的相关配置)
6. 在WEB-INF下增加hib-config.xml(这里包含spring集成hibernate相关的配置)
7. 在WEB-INF下增加dao-config.xml(这里包含dao层类的相关配置)
8. 最终建立的相关类和包结构,如下图所示:
9. 各对应类的代码如下:
10. 以上操作完成后可以直接进行运行测试:
http://locahost:8080/SpringMVC/user.do?uname=zhangsan
结果:数据库中会增加zhangsan的记录,成功后页面跳转到index.jsp。
11.为了更好的帮助朋友们,我写了个注册页面zhuce.jsp,代码如下:
12.主页面index.jsp代码如下:
13.测试如下:
注册页面:
提交后返回到主页面:
查询数据库如下:
14.数据库的建表语句如下:
CREATE TABLE CS_USER
(
ID NUMBER(10) NOT NULL,
UNAME VARCHAR2(255 CHAR)
)
15.注意:项目所需jar包请到相应官方网站下载。
如下项目代码是经过我个人调试通过的,保证安全可靠。
虽然在项目的开发中我还是喜欢使用SpringMVC的注解,但是还是要为朋友们讲一讲xml配置的方式,哈哈,开始进行……
注意了:下面的项目SpringMVC全部基于XML配置,同时对hibernate进行了集成操作。
项目采用的是spring MVC+spring+hibernate3的开发架构,数据库使用的是Oracle,需要下载Oracle驱动包。
项目创建步骤如下:
1. 首先建立web项目
2. 导入jar包(spring.jar, spring-webmvc.jar, commons-logging.jar。其他jar包为hibernate相关jar包),如下图:
3. 修改web.xml如下:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"> <!-- Spring的核心控制器 过滤所有的.do请求 --> <servlet> <servlet-name>dispatcherServlet</servlet-name> <servlet-class> org.springframework.web.servlet.DispatcherServlet </servlet-class> <init-param> <!-- 拆分多个配置文件 方便管理 --> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/hib-config.xml,/WEB-INF/web-config.xml,/WEB-INF/service-config.xml,/WEB-INF/dao-config.xml</param-value> </init-param> <!-- 项目被加载的时候启动此dispatcherServlet --> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcherServlet</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> </web-app> |
4000
增加对应的web-config.xml(这里包含spring mvc相关的相关配置)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- Spring核心配置 --> <!-- Controller方法调用规则定义 --> <bean id="paraMethodResolver" class="org.springframework.web.servlet.mvc.multiaction.ParameterMethodNameResolver"> <property name="paramName" value="action"/> <property name="defaultMethodName" value="list"/> </bean> <!-- 页面View层基本信息设定 --> <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <!--<property name="prefix" value="/myjsp/"/> 前后缀--> <property name="suffix" value=".jsp"/> </bean> <!-- servlet映射列表,所有控制层Controller的servlet在这里定义 --> <bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping"> <property name="mappings"> <props> <!-- 配置对应关系 action==user.do --> <prop key="user.do">userController</prop> </props> </property> </bean> <bean id="userController" class="com.spring.controller.UserController"> <property name="userService" ref="userService"></property> </bean> </beans> |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!--service层的处理 业务逻辑层 --> <bean id="userService" class="com.spring.service.UserService"> <property name="userDao" ref="userDao"></property> </bean> </beans> |
<?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:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd "> <!-- 集成的hibernate的配置 --> <context:component-scan base-package="com.spring" /> <!-- 支持aop注解 --> <aop:aspectj-autoproxy /> <!-- jdbctemplate/hibernateTemplate使用的 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close"> <property name="driverClass" value="oracle.jdbc.driver.OracleDriver"></property> <property name="jdbcUrl" value="jdbc:oracle:thin:@10.1.130.33:1521:orcl"></property> <property name="user" value="huro"></property> <property name="password" value="123456"></property> <!--1连接池中保留的最小连接数。 --> <property name="minPoolSize"> <value>10</value> </property> <!--1连接池中保留的最大连接数。Default: 15 --> <property name="maxPoolSize"> <value>100</value> </property> <!--1最大空闲时间,100秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 --> <property name="maxIdleTime"> <value>100</value> </property> <!--当连接池中的连接耗尽的时候c3p0一次同时获取的连接数。Default: 3 --> <property name="acquireIncrement"> <value>10</value> </property> <!--1初始化时获取的连接数,取值应在minPoolSize与maxPoolSize之间。Default: 3 --> <property name="initialPoolSize"> <value>20</value> </property> <!--每60秒检查所有连接池中的空闲连接。Defau 10383 lt: 0 --> <property name="idleConnectionTestPeriod"> <value>60</value> </property> </bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"> <property name="dataSource"> <ref bean="dataSource" /> </property> <property name="hibernateProperties"> <props> <prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop> <prop key="hibernate.show_sql">true</prop> <prop key="hibernate.format_sql">true</prop> <!-- 程序运行时自动生成表 生成表之后,程序就不需要,可以注释掉 --> <prop key="hibernate.hbm2ddl.auto">update</prop> <!-- 设定jdbc的statement读取数据的时候每次从数据库中取出的记录条数 30、50、100性能好,内存消耗小 提高数据库性能 --> <prop key="hibernate.jdbc.fetch_size">100</prop> <!-- 批量更新操作时候的批次大小 提高数据库性能 --> <prop key="hibernate.jdbc.batch_size">50</prop> </props> </property> <property name="packagesToScan"> <value>com.spring.bean</value> </property> </bean> <bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <!--配置一个JdbcTemplate实例 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 配置事务管理 --> <bean id="txManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"> <property name="sessionFactory" ref="sessionFactory"></property> </bean> <tx:annotation-driven transaction-manager="txManager" /> <aop:config> <aop:pointcut expression="execution(public * com.spring.service.impl.*.*(..))" id="businessService" /> <aop:advisor advice-ref="txAdvice" pointcut-ref="businessService" /> </aop:config> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="find*" read-only="true" propagation="NOT_SUPPORTED" /> <!-- get开头的方法不需要在事务中运行 。 有些情况是没有必要使用事务的,比如获取数据。开启事务本身对性能是有一定的影响的 --> <tx:method name="*" /> <!-- 其他方法在实务中运行 --> </tx:attributes> </tx:advice> </beans> |
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd"> <!-- Dao层的处理 --> <bean id="userDao" class="com.spring.dao.UserDao"> <property name="hibernateTemplate" ref="hibernateTemplate"></property> </bean> </beans> |
9. 各对应类的代码如下:
package com.spring.bean; //实体类Hibernate使用注解的方式 import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table; @Entity @Table(name="CS_USER") public class User { /** * select hibernate_sequence.nextval from dual * * */ @Id @GeneratedValue(strategy=GenerationType.AUTO) private int id; private String uname; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUname() { return uname; } public void setUname(String uname) { this.uname = uname; } } |
============================================================================== package com.spring.dao; //Dao数据持久层 import org.springframework.orm.hibernate3.HibernateTemplate; import com.spring.bean.User; public class UserDao { private HibernateTemplate hibernateTemplate; public void add(User u){ System.out.println("UserDao.add()"); hibernateTemplate.save(u); System.out.println("添加数据"); } public HibernateTemplate getHibernateTemplate() { return hibernateTemplate; } public void setHibernateTemplate(HibernateTemplate hibernateTemplate) { this.hibernateTemplate = hibernateTemplate; } } ============================================================================= |
package com.spring.service; //service层 import com.spring.bean.User; import com.spring.dao.UserDao; public class UserService { private UserDao userDao; public void add(String uname){ System.out.println("UserService.add()"); User u = new User(); u.setUname(uname); userDao.add(u); } public UserDao getUserDao() { return userDao; } public void setUserDao(UserDao userDao) { this.userDao = userDao; } } ============================================================================== |
package com.spring.controller; //流程控制层 import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.springframework.web.servlet.ModelAndView; import org.springframework.web.servlet.mvc.Controller; import com.spring.service.UserService; public class UserController implements Controller { //SpringMVC里面最好使用Controller结束 Controller接口只有一个handleRequest方法 处理请求的 // ModelAndView 返回数据和试图对象 private UserService userService; @Override public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse resp) throws Exception { System.out.println("HelloController.handleRequest()"); req.setAttribute("tishi", "测试配置SpringMVC方式"); userService.add(req.getParameter("uname")); return new ModelAndView("index"); } public UserService getUserService() { return userService; } public void setUserService(UserService userService) { this.userService = userService; } } |
http://locahost:8080/SpringMVC/user.do?uname=zhangsan
结果:数据库中会增加zhangsan的记录,成功后页面跳转到index.jsp。
11.为了更好的帮助朋友们,我写了个注册页面zhuce.jsp,代码如下:
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>注册</title> <META http-equiv="content-type" CONTENT="text/html;charset=UTF-8"> </head> <body bgcolor="#d6e3f6"> <form action="user.do" method="post"> <input name="uname" type="text" class="input1" maxLength="10" size="20" /> <br /> <input type="submit" value="注册" /> </form> </body> </html> |
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>tishi</title> <META http-equiv="content-type" CONTENT="text/html;charset=UTF-8"> </head> <body bgcolor="#d6e3f6"> <div id="tiaozhuan"> <h1>LinusZhu的测试成功</h1> </div> </body> </html> |
注册页面:
提交后返回到主页面:
查询数据库如下:
14.数据库的建表语句如下:
CREATE TABLE CS_USER
(
ID NUMBER(10) NOT NULL,
UNAME VARCHAR2(255 CHAR)
)
15.注意:项目所需jar包请到相应官方网站下载。
相关文章推荐
- SpringMVC经典系列-02基于Spring2.5注解的方式进行项目开发---【LinusZhu】
- SpringMVC经典系列-04基于Spring3.1注解的方式进行项目开发---【LinusZhu】
- spring采用基于xml配置方式进行事务的处理
- 重温Spring之旅6——基于XML配置方式进行AOP开发
- spring采用基于xml配置方式进行事务的处理
- spring学习笔记12----Spring+jdbc组合开发( 采用基于xml方式配置事务)
- Springmvc案例1----基于spring2.5的采用xml配置
- 基于spring3.0的采用XML配置的spring MVC项目
- Spring 采用基于XML方式配置事务
- Spring学习-22:Spring的AOP:基于AspectJ的XML配置方式开发
- Intellij IDEA创建Spring项目之基于Aspectj的AOP操作(XML配置方式)
- Struts2学习笔记(十四):基于XML配置方式实现对action的所有方法进行校验
- 基于xml配置方式实现对action中指定方法进行输入校验
- spring 基于XML和注解的两种事务配置方式
- Spring3.2 中 Bean 定义之基于 XML 配置方式的源码解析
- Spring3与Hibernate4整合,Spring中配置Hibernate基于XML和annotation的sessionFactory方式。
- spring aop的使用(注解方式以及基于xml配置方式)
- spring aop的使用(注解方式以及基于xml配置方式)
- 基于xml配置方式实现对action中指定方法进行输入校验
- 采用基于XML方式配置事务