spring MVC 小例子(spring3.0.5)

来源:互联网 发布:南朝和北朝的关系知乎 编辑:程序博客网 时间:2024/04/28 14:40

 本例子是spring3.0.5+hibernate3.6.10写的

  1. 关于用到的jar包请看图


以上分别是spring hibenate 和需要的其他包

工程目录:


  1. 首先是springmvc要配置的文件 文件名springmvc-servlet.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:p="http://www.springframework.org/schema/p"    xmlns:mvc="http://www.springframework.org/schema/mvc"        xmlns:context="http://www.springframework.org/schema/context"    xmlns:util="http://www.springframework.org/schema/util"    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                http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd                http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd">        <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 -->    <context:component-scan base-package="com.mvc.web"/>    <mvc:annotation-driven />  <!-- 支持spring3.0新的mvc注解 -->    <!-- 启动Spring MVC的注解功能,完成请求和注解POJO的映射 -->    <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/>        <!--对模型视图名称的解析,即在模型视图名称添加前后缀 -->    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"         p:prefix="/WEB-INF/jsp/" p:suffix=".jsp">                 <!-- 如果使用jstl的话,配置下面的属性 -->    <property name="viewClass" value="org.springframework.web.servlet.view.JstlView" />        </bean></beans>

  2. 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"><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param><!-- 启动spring 监听 --><listener>          <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>      </listener>  <!-- spring MVC 配置 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><welcome-file-list><welcome-file>index.*</welcome-file><welcome-file>reg.jsp</welcome-file></welcome-file-list></web-app>

  3. applicationContext.xml配置
    <?xml version="1.0" encoding="UTF-8"?>   <beans xmlns="http://www.springframework.org/schema/beans"   xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context"   xmlns:p="http://www.springframework.org/schema/p" xmlns:tx="http://www.springframework.org/schema/tx"   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-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/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd      http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">  <context:component-scan base-package="com.mvc" /><!-- 支持aop注解 --><aop:aspectj-autoproxy /><context:property-placeholder location="classpath:/hibernate.properties" /><bean id="dataSource"class="org.springframework.jdbc.datasource.DriverManagerDataSource"><property name="driverClassName" value="${dataSource.driverClassName}" /><property name="url" value="${dataSource.url}" /><property name="username" value="${dataSource.username}" /><property name="password" value="${dataSource.password}" /></bean><bean id="sessionFactory"class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource" ref="dataSource" /><property name="hibernateProperties"><props><prop key="hibernate.dialect">${dataSource.dialect}</prop><prop key="hibernate.hbm2ddl.auto">${dataSource.hbm2ddl.auto}</prop><prop key="hibernate.hbm2ddl.auto">update</prop></props></property><property name="packagesToScan"><list><value>com.mvc.model</value><!-- 扫描实体类,也就是平时所说的model --></list></property></bean><bean id="hibernateTemplate" class="org.springframework.orm.hibernate3.HibernateTemplate"><property name="sessionFactory" ref="sessionFactory"></property></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.mvc.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>


  4. hibernate.properties配置
    ## HypersonicSQLdataSource.password=admindataSource.username=rootdataSource.databaseName=testdataSource.driverClassName=com.mysql.jdbc.DriverdataSource.dialect=org.hibernate.dialect.MySQL5DialectdataSource.serverName=localhost:3306dataSource.url=jdbc:mysql://localhost:3306/testdataSource.properties=user=${dataSource.username};databaseName=${dataSource.databaseName};serverName=${dataSource.serverName};password=${dataSource.password}dataSource.hbm2ddl.auto=update#hibernate.connection.url jdbc:hsqldb:hsql://localhost#hibernate.connection.url jdbc:hsqldb:test


  5. log4j.properties
    ### direct log messages to stdout ###log4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.Target=System.outlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### direct messages to file hibernate.log ####log4j.appender.file=org.apache.log4j.FileAppender#log4j.appender.file.File=hibernate.log#log4j.appender.file.layout=org.apache.log4j.PatternLayout#log4j.appender.file.layout.ConversionPattern=%d{ABSOLUTE} %5p %c{1}:%L - %m%n### set log levels - for more verbose logging change 'info' to 'debug' ###log4j.rootLogger=info,warn, stdoutlog4j.logger.org.hibernate=debug### log HQL query parser activity#log4j.logger.org.hibernate.hql.ast.AST=debug### log just the SQL#log4j.logger.org.hibernate.SQL=debug### log JDBC bind parameters ###log4j.logger.org.hibernate.type=info#log4j.logger.org.hibernate.type=debug### log schema export/update ###log4j.logger.org.hibernate.tool.hbm2ddl=debug### log HQL parse trees#log4j.logger.org.hibernate.hql=debug### log cache activity ####log4j.logger.org.hibernate.cache=debug### log transaction activity#log4j.logger.org.hibernate.transaction=debug### log JDBC resource acquisition#log4j.logger.org.hibernate.jdbc=debug### enable the following line if you want to track down connection ###### leakages when using DriverManagerConnectionProvider ####log4j.logger.org.hibernate.connection.DriverManagerConnectionProvider=trace


  6. 业务逻辑   
    UserDao.java类
    package com.mvc.dao;import java.util.List;import javax.annotation.Resource;import org.springframework.orm.hibernate3.HibernateTemplate;import org.springframework.stereotype.Repository;import com.mvc.model.User;@Repository("userDao")public class UserDao {@Resourceprivate HibernateTemplate hibernateTemplate;public void add(User u) {hibernateTemplate.save(u);}public boolean findUser(User u) {List<?> list = hibernateTemplate.find("from User u where u.name=?",u.getName());if (list.size() > 0) {return true;}return false;}public boolean userLogin(User u) {List<?> list = hibernateTemplate.find("from User u where u.name=? and u.password=?", u.getName(),u.getPassword());if (list.size() > 0) {return true;}return false;}}

    User.java 类
    package com.mvc.model;import javax.persistence.Entity;import javax.persistence.GeneratedValue;import javax.persistence.Id;@Entitypublic class User {private int id;private String name;private String password;@Id@GeneratedValuepublic int getId() {return id;}public void setId(int id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}

    UserService.java 类
    package com.mvc.service;import javax.annotation.Resource;import org.springframework.stereotype.Service;import com.mvc.dao.UserDao;import com.mvc.model.User;@Service("userService")public class UserService {@Resourceprivate UserDao userDao;public void add(User user) {userDao.add(user);}public boolean exist(User user) {return userDao.findUser(user);}public boolean login(User user) {return userDao.userLogin(user);}}

    UserController.java
    package com.mvc.web;import javax.annotation.Resource;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.RequestMapping;import com.mvc.model.User;import com.mvc.service.UserService;@Controller("userController")@RequestMapping("/user.do")public class UserController {@Resourceprivate UserService userService;@RequestMapping(params = "method=reg")public String reg(User user) {System.out.println("用户注册");if (userService.exist(user)) {return "reg_fail";}userService.add(user);return "reg_success";}@RequestMapping(params = "method=log")public String log(User user) {System.out.println("用户登录");if (userService.login(user)) {return "log_success";}return "log_fail";}}

  7. 测试 登陆页面  浏览器打开链接http://localhost:8080/springMVC_demo/log.jsp


大功告成!!!!




原创粉丝点击