- 浏览: 1765 次
最近访客 更多访客>>
最新评论
-
Miller_xl:
...
jquery1.72 空间相册分页滚动 -
qiyang318:
呵呵,谢谢分享!!!
spring3.1 mvc jdbc 合成
实现用户的登录和注册功能:
package com.model; import java.io.Serializable; /** * 模型层 * @author qiyang * */ @SuppressWarnings("serial") public class User implements Serializable { //http://my.oschina.net/huangcongmin12/blog/81216 private int id; private String userName; private String password; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } @Override public String toString() { return id+", "+userName+", "+password; } } package com.dao.implement; import java.sql.ResultSet; import java.sql.SQLException; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.RowCallbackHandler; import org.springframework.stereotype.Repository; import com.dao.UserDao; import com.model.User; /** * * @author qiyang * 数据层 */ @Repository public class UserDaoImpl implements UserDao { @Autowired private JdbcTemplate jdbcTemplate; /**find user by username*/ public User findUserByUserName(String userName) { String sqlStr = "select id,uname,pwd from user where uname=?"; //注意此处为何如此写? final User user = new User(); jdbcTemplate.query(sqlStr, new Object[]{userName},new RowCallbackHandler(){ public void processRow(ResultSet rs) throws SQLException { user.setId(rs.getInt("id")); user.setUserName(rs.getString("uname")); user.setPassword(rs.getString("pwd")); } }); return user; } /**register*/ public void register(User user) { String sqlStr = "insert into user(uname,pwd) values(?,?)"; Object [] params = new Object[]{user.getUserName(),user.getPassword()}; jdbcTemplate.update(sqlStr,params); } } package com.service.implement; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import com.dao.UserDao; import com.model.User; import com.service.UserService; /** * 业务层 * @author qiyang * */ @Service public class UserServiceImpl implements UserService { @Autowired private UserDao userDao; public User loginCheck(User user) { //此处获得的 u 会为空吗?如果会,程序有可能跑异常哦 User u = userDao.findUserByUserName(user.getUserName()); System.out.println("id="+u.getId()+", userName="+u.getUserName()+", Password="+u.getPassword()); if(user.getPassword().equals(u.getPassword())){ return u; }else{ return null; } } public boolean register(User user) { //此处先查询用户名是否已经存在 User u = userDao.findUserByUserName(user.getUserName()); if(u.getId()==0){ //注册 userDao.register(user); return true; }else{ System.out.println("用户已经存在!"); System.out.println("id="+u.getId()+", userName="+u.getPassword()+", Password="+u.getPassword()); return false; } } } package com.controller; import org.springframework.beans.factory.annotation.Autowired; 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 qiyang * */ @Controller public class UserController { @Autowired private UserService userService; @RequestMapping("/user/loginView") public String loginView(){ return "login"; } @RequestMapping("/user/registView") public String registView(){ return "register"; } @RequestMapping("/user/login") public ModelAndView login(User user){ System.out.println("用户登录!!!"); ModelAndView mav = new ModelAndView(); User u = userService.loginCheck(user); System.out.println(u); if(null==u){ System.out.println("登录失败了........"); //登录失败 mav.setViewName("login"); mav.addObject("errorMsg", "用户名或密码错误!"); return mav; }else{ //登录成功 System.out.println("登录成功了........"); mav.setViewName("success"); mav.addObject("user",u); return mav; } } @RequestMapping("/user/register") public ModelAndView register(User user){ ModelAndView mav = new ModelAndView(); if(userService.register(user)){ //注册成功 mav.setViewName("register_succ"); return mav; }else{ //注册失败 mav.setViewName("register"); mav.addObject("errorMsg","用户名已经被占用"); return mav; } } }
主要配置文件: <?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" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.1.xsd 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.1.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.0.xsd"> <!-- jdbc.properties配置信息 文件路径 --> <context:property-placeholder location="classpath:jdbc.properties" /> <!-- 扫描类包 将标注Spring 注解的类自动转换成bean ,同时完成注入 --> <context:component-scan base-package="com.controller"/> <context:component-scan base-package="com.service"/> <context:component-scan base-package="com.dao"/> <!-- 配置数据源 --> <bean id="dataSource" destroy-method="close" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass"> <value>${jdbc.driverClassName}</value> </property> <property name="jdbcUrl"> <value>${jdbc.url}</value> </property> <property name="user"> <value>${jdbc.username}</value> </property> <property name="password"> <value>${jdbc.password}</value> </property> <!-- 连接池中保留的最小连接 --> <property name="minPoolSize"> <value>5</value> </property> <!-- 连接池中保留最大连接数(default 15) --> <property name="maxPoolSize"> <value>30</value> </property> <!-- 初始化时,获取的连接数 应该在minPoolSize and maxPoolSize之间 default 3 --> <property name="initialPoolSize"> <value>10</value> </property> <!-- 最大空闲时间,n妙内未使用则丢弃,0则永远不丢弃 default0 --> <property name="maxIdleTime"> <value>60</value> </property> <!-- 连接池中连接耗尽时 c3p0一次获得的连接数 default 3--> <property name="acquireIncrement"> <value>5</value> </property> <!-- JDBC的标准参数,用以控制数据源内加载的PreparedStatements数量。 但由于预缓存的statements 属于单个connection而不是整个连接池。所以设置这 个参数需要考虑到多方面的因素,如果maxStatements与maxStatementsPerC onnection均为0,则缓存被关闭。Default: 0--> <property name="maxStatements"> <value>0</value> </property> <!-- 每隔n妙检查连接初中的空闲数 default:0 --> <property name="idleConnectionTestPeriod"> <value>60</value> </property> <!-- 获取新连接失败后,尝试的次数 30 --> <property name="acquireRetryAttempts"> <value>30</value> </property> </bean> <!-- 配置jdbc模板 --> <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置事物管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 通过aop配置提供事务增强 让 service包下所有bean 的方法拥有事务 --> <!-- expression="execution(* *..*Service.*(..))" 第一个* 表示任意返回值类型 第二个* 表示以任意名字开头的package. 如 com.xx. 第三个* 表示以任意名字开头的class的类名 如TestService 第四个* 表示 通配 *service下的任意class 最后二个.. 表示通配 方法可以有0个或多个参数 --> <aop:config proxy-target-class="true" > <aop:pointcut id="serviceMethod" expression="execution(* com.service.*.*(..))" /> <aop:advisor pointcut-ref="serviceMethod" advice-ref="txAdvice"/> </aop:config> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="*"/> </tx:attributes> </tx:advice> <!-- 启动spring mvc的注解功能 完成请求和注解pojo的映射--> <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter"/> <!-- 配置视图解析器,将ModelAndView及字符串解析为具体的页面 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"></property> <property name="prefix" value="/WEB-INF/jsp/"/> <property name="suffix" value=".jsp"/> </bean> </beans> jdbc.properties: jdbc.driverClassName=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/test jdbc.username=root jdbc.password=***** 页面部分: 登录: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>login</title> </head> <body> <form action="login.do" method="post"> <h1 align="center">Login</h1> <table border="1" width="400" align="center"> <tr> <td colspan="2"><c:if test="${!empty errorMsg}"> <font size="2" color="red">${errorMsg}</font> </c:if> </td> </tr> <tr> <td>uname:</td><td><input type="text" name="userName"></td> </tr> <tr> <td>pwd:</td><td><input type="password" name="password"><br/></td> </tr> <tr> <td></td><td><input type="submit" value="login"> <a href="registView.do">register</a> </td> </tr> </table> </form> </body> </html> 注册页面: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>login</title> </head> <body> <form action="register.do" method="post"> <h1 align="center">Register</h1> <table border="1" width="400" align="center"> <tr> <td colspan="2"><c:if test="${!empty errorMsg}"> <font size="2" color="red">${errorMsg}</font> </c:if> </td> </tr> <tr> <td>uname:</td><td><input type="text" name="userName"></td> </tr> <tr> <td>pwd:</td><td><input type="password" name="password"><br/></td> </tr> <tr> <td></td><td><input type="submit" value="register" /></td> </tr> </table> </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" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>login</title> </head> <body> <h1>亲爱的${user.userName },登录成功!</h1> </body> </html> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>login</title> </head> <body> <h1>注册成功!</h1> <a href="loginView.do">返回登录页面</a> </body> </html> 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"> <welcome-file-list> <welcome-file>index.jsp</welcome-file> </welcome-file-list> <!-- 装载spring组件 --> <listener> <listener-class>org.springframework.web.util.IntrospectorCleanupListener</listener-class> </listener> <!-- 装载spring mvc --> <servlet> <servlet-name>spring</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <init-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </init-param> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>spring</servlet-name> <url-pattern>*.do</url-pattern> </servlet-mapping> <!-- 编码过滤器 --> <filter> <filter-name>setcharacter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>setcharacter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping> </web-app>
- 3Spring3.zip (25.5 KB)
- 下载次数: 22
相关推荐
7. **Web MVC**:Spring MVC是Spring框架的重要组成部分,3.1版本中增加了对RESTful风格的支持,增强了ModelAndView对象,以及改进了视图解析器。 8. **缓存抽象**:Spring 3.1引入了统一的缓存抽象,支持EhCache、...
在这个"spring3.1 jar全集"中,我们包含了Spring的核心组件和其他关键模块,如AOP(面向切面编程)和Beans模块。 首先,让我们深入了解一下Spring Core。这是Spring框架的基础,提供了依赖注入(DI)和控制反转...
数据访问是企业级应用的关键部分,Spring 3.1加强了对各种持久化技术的支持,如JDBC、ORM(对象关系映射)框架如Hibernate和MyBatis,以及JPA(Java Persistence API)。在3.1版本中,Spring Data项目提供了对...
在这个“最新 spring3.1 完整jar包”中,包含了Spring框架的所有核心组件和其他相关模块,确保了开发环境的完备性。 1. **核心容器**:Spring的核心在于其IoC(Inversion of Control)容器,它负责管理应用对象的...
标题中的“spring3.1需要的jar包”指的是在使用Spring框架版本3.1时所需的外部依赖库。Spring是一个开源的Java平台,它为构建企业级应用提供了全面的框架支持,包括依赖注入(DI),面向切面编程(AOP),以及用于...
这个"spring3.1完整包"包含了Spring框架的多个核心模块,下面将详细介绍这些模块及其功能。 1. **org.springframework.context-3.1.0.M1.jar**:这是Spring上下文模块,提供了容器的核心功能,包括Bean的定义、配置...
对于数据访问,`spring-jdbc.jar`提供了与JDBC的抽象层,简化了数据库操作。`spring-tx.jar`提供了事务管理服务,无论是编程式还是声明式的事务管理,都能得到很好的支持。 对于Web开发,`spring-web.jar`和`spring...
Spring 3.1的MVC模块引入了更多的控制器注解,如`@RequestMapping`,以及视图解析和异常处理的增强。 6. **RESTful支持** Spring 3.1加强了对RESTful服务的支持,提供了`@RestController`注解,使得创建RESTful ...
总的来说,Spring3.1Jar包是一个包含Spring框架多个组件的集合,适用于需要依赖注入、AOP、Web MVC等功能的Java项目。通过合理使用这些组件,开发者可以构建出高效、灵活的应用程序,同时享受到Spring提供的强大支持...
### Spring 3.1 参考手册中文解读 #### 概览 Spring 3.1 是 Spring 框架的一个重要版本更新,它在 Spring 3.0 的基础上增加了许多新特性和改进,旨在提高开发者的生产力并进一步增强框架的功能性。本篇解读将根据...
5. **MVC框架**:Spring MVC是Spring框架的一部分,Spring 3.1改进了Model-View-Controller的设计模式实现,增强了控制器的注解支持,如@RequestMapping,以及模型绑定和数据验证功能。 6. **RESTful支持**:Spring...
### Spring 3.1 使用手册知识点详述 #### 一、Spring框架概览 ##### 1.1 依赖注入与控制反转(Dependency Injection and Inversion of Control) 在Spring框架的核心特性之一是依赖注入(DI)机制,也被称为控制...
Spring 3.1是Spring框架的一个重要版本,它在2011年发布,带来了许多增强和改进,进一步提升了Spring框架的灵活性和可扩展性。这个版本的主要目标是提高性能,减少内存消耗,并且增强了对Java 7的支持。以下是Spring...
4. **数据访问集成**:Spring支持各种持久化技术,包括JDBC、ORM(对象关系映射)框架如Hibernate和MyBatis,以及NoSQL数据库。它提供了模板类和DAO支持,简化了数据访问操作。 5. **交易管理**:Spring提供了声明...
Spring 3.1 是一个重要的版本更新,它对之前的 2.X 版本进行了重构,将原本集中的包结构拆分得更为清晰,使得功能分工更加明确。这个更新不仅提高了代码的可维护性和模块化,也为开发者提供了更高效的工作流程。 1....
在Web方面,Spring 3.2改进了MVC框架,增加了异步处理支持,提升了Web应用的响应速度。 进入Spring 3.3,框架的稳定性得到了显著提升,许多小的bug被修复,性能得到优化。此版本重点在于提供更好的工具支持,例如,...
标题中的"spring3.1.o.m2 dist"指的是Spring框架的3.1版本的一个特定发行版,其中"dist"通常代表“distribution”,意味着这是一个包含了所有发布文件的集合,供用户下载和使用。在这个上下文中,"o"可能是遗漏或者...
6. `org.springframework.jdbc-3.1.0.RELEASE.jar`:这个模块提供了数据库访问的支持,包括JDBC模板、事务管理以及数据源的配置。它简化了与数据库交互的过程,减少了手动处理SQL和结果集的工作。 7. `org.spring...
7. **集成Spring MVC**:Spring Security 3.1与Spring MVC无缝集成,可以方便地保护Web控制器和视图。通过注解,如`@Secured`和`@PreAuthorize`,可以在方法级别声明安全约束。 8. **自定义逻辑**:Spring Security...