一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能
Spring+Spring MVC + Hibernate
1新建WEB项目
1.1先设置myeclipse编码格式,JSP、workspace
1.2新建web工程
1.3避免MyEclipse验证js文件,先在web项目上单击右键,再选择“Myecplise------->open in explorer”,在下图.project文件中删除如右图代码
2安装Hibernate和Spring
2.1新建DB(在控制台这一栏右键new 数据库DB),请加上如下图代码,防止乱码:
jdbc:mysql://localhost:3306/javassh?useUnicode=true&characterEncoding=UTF-8
2.2添加hibernate
2.2.1注意取消生成factory选项
2.2.2增加hibernate的属性
format_sql=true
hbm2ddl.auto=update
2.3添加spring
2.3.1注意勾选JDBC、Core、Web、Testing(可选)这几个选项
2.3.2把工程里面的applicationContext.xml改名为spring.xml
2.3.2在src目录下拷入log4j:log4j.properties,配置为debug
3配置Spring MVC以及Spring
3.1配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"id="WebApp_ID" version="3.0"><display-name>17SSH_SpringHibernate</display-name><!-- 配置spring容器 --><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring.xml</param-value></context-param><!-- 配置监听器 --><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><!-- 请求都交给DispatcherServlet处理 --><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:spring-mvc.xml</param-value></init-param></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping><!-- 增加中文乱码过滤器 --><filter><filter-name>CharacterEncodingFilter</filter-name><filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class></filter><filter-mapping><filter-name>CharacterEncodingFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping><!-- 清除jsp空格 --><jsp-config><jsp-property-group><url-pattern>*.jsp</url-pattern><trim-directive-whitespaces>true</trim-directive-whitespaces></jsp-property-group></jsp-config>
</web-app>
3.2配置Spring MVC
3.2.1在src目录下新建spring-mvc.xml文件,可以复制spring.xml完成
3.2.2spring-mvc.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:context="http://www.springframework.org/schema/context"xmlns:mvc="http://www.springframework.org/schema/mvc"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsdhttp://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd"> <!-- 对web包中的所有类进行扫描,以完成Bean创建和自动依赖注入的功能 --><context:component-scan base-package="com.welljoint" /><!-- 激活基于注解的配置 @RequestMapping, @ExceptionHandler,数据绑定 ,@NumberFormat , @DateTimeFormat ,@Controller ,@Valid ,@RequestBody ,@ResponseBody等 --> <mvc:annotation-driven /> <!-- 视图层配置 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!--配置JSTL表达式--> <property name="viewClass" value="org.springframework.web.servlet.view.JstlView"/> <!-- 前缀 --><property name="prefix" value="/WEB-INF/jsp/"/> <!-- 后缀 --><property name="suffix" value=".jsp"/> </bean> <!-- 配置静态资源 --><mvc:resources location="/res/" mapping="/res/**"/>
</beans>
3.2.3 说明:此时的工程结构如图:
4下面开始写控制层
4.1在src下新建controller类,类名字为LoginController,添加get和post方法。
@RequestMapping(method=RequestMethod.GET)public String get(){return "login";
}
@RequestMapping(method=RequestMethod.POST)public String post(){return "login_success";
}
4.2写jsp页面,名字login.jsp
4.2.1拷入bootstrap和jquery到res目录下
4.2.2在jsp页面中导入bootstrap和jquery,并编写jsp页面
4.2.3增加验证码
4.3在src下新建controller的bean(注意路径),bean名字为Login:添加如下属性,并提供相对应的get和set方法。
private String username;private String password;private String vcode;
4.4增加SpringMVC验证功能
4.3.1 Hibernate-valiation相应的jar包
4.3.2在login这个bean上添加如下注解(部分):
@NotNull@Length(min=3, max=16)private String username;@NotNullprivate String password;@NotNullprivate String vcode;
4.3.3在控制器(LoginController)上添加如下代码:
@RequestMapping(method=RequestMethod.POST)public String post(@Valid@ModelAttribute("login")Login login,BindingResult errors){if(errors.hasErrors()){return "login";}return "login_success";}
4.3.4在login.jsp页面上添加显示错误消息的代码:
<!--引入form标签-->
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!--显示错误消息的代码-->
<form:errors path="login.username" element="span" cssClass="help-block"/>
4.3.5 通过 session 为中介,让验证码起作用:
//注意,先要通过post的参数传一个session进来
String sessionVcode = (String) session.getAttribute(ValidateCode.VCODE_SESSION_KEY);if(sessionVcode == null || !sessionVcode.toLowerCase().equals(login.getVcode().toLowerCase())){errors.addError(new FieldError("login", "vcode", "验证码错误"));
}
5 Spring合hibernate
5.1添加context、tx命名空间,见3.2.2节。
5.2把hibernate.cfg.xml配置,对应地写到spring.xml文件中
<context:component-scan base-package="wllfengshu.forum"/><bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"><property name="driverClassName" value="com.mysql.jdbc.Driver"/><property name="url" value="jdbc:mysql://localhost:3306/forum"/><property name="username" value="root"/></bean><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean"><property name="dataSource" ref="dataSource"/><property name="hibernateProperties"><props><prop key="dialect">org.hibernate.dialect.MySQLDialect</prop><prop key="format_sql">true</prop><prop key="hbm2ddl.auto">update</prop></props></property><property name="mappingLocations" value="classpath:/wllfengshu/forum/po"/></bean><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager"><property name="sessionFactory" ref="sessionFactory"/></bean><tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
5.3写持久化类User的bean(包名:wllfengshu.forum.po)
private Integer id;private String username;private String password;private String name;private String nickname;
/*给出对应地get和set方法*/
5.4写User的映射文件User.hbm.xml(包名:wllfengshu.forum.po)
<hibernate-mapping package="wllfengshu.forum.po"><class name="User" table="user"><id name="id"><generator class="native"/></id><property name="username" length="32" not-null="true" unique="true"/><property name="password" length="64" not-null="true"/><property name="name" length="32" not-null="true"/><property name="nickname" length="32" not-null="true"/></class>
</hibernate-mapping>
5.5写UserDao(包名:wllfengshu.forum.dao)
public interface UserDao {public User login(String username, String password);public Integer save(User user);public void update(User user);public boolean validatePassword(Integer id, String password);public void updatePassword(Integer id, String password);
}
5.6 Spring操作hibernateAPi。
5.6.1在spring-mvc中加上default-autowire="byName"属性
5.6.2写UserDao的实现类UserDaoImpl
(包名:wllfengshu.forum.dao.impl):
@Repository
public class UserDaoImpl extends HibernateDaoSupport implements UserDao {@Overridepublic User login(String username, String password) {List<User> users = getHibernateTemplate().find("from User where username=? and password=?", username, password);return users.size() > 0 ? users.get(0) : null;}@Overridepublic Integer save(User user) {return (Integer) getHibernateTemplate().save(user);}@Overridepublic void update(User user) {getHibernateTemplate().update(user);}@Overridepublic boolean validatePassword(Integer id, String password) {return false;}@Overridepublic void updatePassword(Integer id, String password) {}
}
5.7写service层,UserService(包名:wllfengshu.forum.service)
public interface UserService {public User login(String username, String password);public Integer save(User user);
}
5.8写UserService的实现(包名:wllfengshu.forum.service.impl)
@Service
public class UserServiceImpl implements UserService {@Autowiredprivate UserDao userDao;@Override@Transactional(readOnly=true)public User login(String username, String password) {return userDao.login(username, password);}@Overridepublic Integer save(User user) {return userDao.save(user);}
}
5.9在Login的控制器层中,进行登录。
@Autowiredprivate UserService userService; User user = userService.login(login.getUsername(), login.getPassword());if(user == null){errors.addError(new ObjectError("login", "用户名或者密码错误"));return "login";}else{
//这里的SessionUser是为了把用户登录信息放到session中SessionUser sessionUser = SessionUser.fromUser(user);session.setAttribute(SessionUser.class.getSimpleName(), sessionUser);}return "login_success";
5.10写Register的bean和register的控制器,和login类似。
本文链接:http://blog.csdn.net/tiandixuanwuliang/article/details/72598938
一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能相关推荐
- Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例
Spring 4 MVC+Hibernate 4+MySQL+Maven使用注解集成实例 转自:通过注解的方式集成Spring 4 MVC+Hibernate 4+MySQL+Maven,开发项目样例 ...
- 简单个人博客系统java web_JavaWeb个人博客项目:手把手教你实现博客后台系统之登录与注册...
JavaWeb个人博客项目:手把手教你实现博客后台系统之登录与注册 发布时间:2020-07-17 17:10阅读:( )字号: 大 中 小 后台系统的所有界面图以及之前的准备工作欢迎看我之前的博文& ...
- 【C语言】简易登录注册系统(登录、注册、改密、文件操作)
概述: 本登录注册系统通过使用C语言中的结构体.函数.文件操作以及指针等,设计与实现了一个小型用户登录注册系统的登录.注册.修改密码等基本功能. 本系统全部功能基本运行良好.用户界面友好.操作简单.使 ...
- 基于struts2和hibernate的登录和注册功能——完整实例
1.该项目使用MySQL数据库,数据库名为test,表名info,如图所示: 2.配置web.xml(Struts2使用) <?xml version="1.0" encod ...
- IDEA搭建JavaWeb项目,JDBC和Servlet-JSP技术实现注册功能
文章目录 使用IDEA搭建JavaWeb项目 一.IDEA新建JavaWeb项目 1.新建java项目 2.修改项目配置 3.项目部署到Tomcat 二.使用JDBC和Servlet-JSP技术实现注 ...
- IDEA 搭建 SpringBoot + Maven + Oracle + Hibernate 项目框架
1.Spring Initializer 创建空项目 2.安装Oracle 3.查询Oracle版本 select * from product_component_version; 4.安装Orac ...
- Android 教你一步步搭建MVP+Retrofit+RxJava网络请求框架
目录 1.什么是MVP? 2.什么是Retrofit? 3.RxJava 4.实践 之前公司的项目用到了MVP+Retrofit+RxJava的框架进行网络请求,所以今天特此写一篇文章以做总结.相信很 ...
- 如何搭建商超积分商城系统框架
大型商超一般是指是多种零售店铺.服务设施集中在一个建筑物内或区域内,向顾客提供综合性服务的商业集合体.这种商业集合体内通常包含数十个甚至数百个服务场所,业态涵盖大型综合超市.专卖店.饮食店.杂品店及娱 ...
- 一步步搭建Retrofit+RxJava+MVP网络请求框架(一)
首先,展示一下封装好之后的项目的层级结构. 1.先创建一个RetrofitApiService.java package com.xdw.retrofitrxmvpdemo.http;import ...
最新文章
- Java Optional类源码解析和用法
- JavaScript创建对象的6种方式
- java求数列的最大子段和_天下无双的公考必考题 数量关系: 最值问题②(构造数列)...
- springer grammar revise tool
- signed distance field 算法
- python归一化处理_详解python实现数据归一化处理的方式:(0,1)标准化
- JavaScript 经典代码大全2
- 默写测试晋级流程 1126
- 在地铁和公交车上给职业乞丐施舍合适吗?
- 如何将 byte[] 转换为 IntPtr?
- MySQL 联合索引测试2
- 找回Google Reader丢失的笔记(notes)
- ESFramework Demo -- P2P通信Demo(附源码)
- 现代语音信号处理之倒谱分析与同态滤波
- 苗族php动态网页设计作业
- 开源单点登录系统CAS
- 你的微信聊天记录!终于能云端备份了
- 2003年GCT考试真题
- 转:程序员应该怎样去学习和掌握计算机英语呢?
- foobar的cue生成插件