一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能
2017-05-21 16:09
806 查看
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-82.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& 4000 lt;/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.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">
<!-- 对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;
@NotNull
private String password;
@NotNull
private 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):
@Repositorypublic class UserDaoImpl extends HibernateDaoSupport implements UserDao {
@Override
public 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;
}
@Override
public Integer save(User user) {
return (Integer) getHibernateTemplate().save(user);
}
@Override
public void update(User user) {
getHibernateTemplate().update(user);
}
@Override
public boolean validatePassword(Integer id, String password) {
return false;
}
@Override
public 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)
@Servicepublic class UserServiceImpl implements UserService {
@Autowired
private UserDao userDao;
@Override
@Transactional(readOnly=true)
public User login(String username, String password) {
return userDao.login(username, password);
}
@Override
public 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相关文章推荐
- Apache Shiro+SpringMVC+Hibernate Search+Hibernate+Bootstrap企业信息管理系统基础框架搭建整合实例代码教程
- 使用SSM框架搭建Web服务器实现登录功能(Spring+SpringMVC+Mybatis)
- 使用SSM框架搭建Web服务器实现登录功能(Spring+SpringMVC+Mybatis)
- Apache Shiro+SpringMVC+Hibernate Search+Hibernate+Bootstrap企业信息管理系统基础框架搭建整合实例代码教程
- 使用SSM框架搭建Web服务器实现登录功能(Spring+SpringMVC+Mybatis)
- 使用SSM框架搭建Web服务器实现登录功能(Spring+SpringMVC+Mybatis)
- 菜鸟使用SSM框架搭建web服务器实现登录功能(Spring+SpringMVC+Mybatis)
- 【无私分享:从入门到精通ASP.NET MVC】从0开始,一起搭框架、做项目(5.1) 登录功能的实现,开始接触Spring IOC、DI
- 关于搭建restful web service + springMVC + ibatis/hibernate的整合和XML配置意思和ssh+springMVC框架搭建
- 框架搭建(SpringMVC+Spring+hibernate )
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
- Spring学习之SpringMVC框架快速搭建实现用户登录功能
- [置顶] maven web基于spring+mybatis+springmvc框架搭建选课网站系统
- JAVA WEB搭建 SpringMVC+Spring+hibernate 框架
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
- 以springMVC+spring+hibernate为框架的项目搭建步骤
- Spring+Spring MVC+Hibernate框架搭建实例 推荐
- SSH网站开发实录(4)(实现登录功能)SpringMVC+Spring+Hibernate
- 用Maven整合SpringMVC+Spring+Hibernate 框架,实现简单的插入数据库数据功能
- Spring学习之SpringMVC框架快速搭建实现用户登录功能