600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能

一步步搭建Spring+Spring MVC+Hibernate系统框架+登录与注册功能

时间:2021-12-02 04:39:16

相关推荐

一步步搭建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=truehbm2ddl.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="/2001/XMLSchema-instance"xmlns="/xml/ns/javaee" xmlns:web="/xml/ns/javaee/web-app_2_5.xsd"xsi:schemaLocation="/xml/ns/javaee /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="/schema/beans"xmlns:xsi="/2001/XMLSchema-instance" xmlns:p="/schema/p"xmlns:context="/schema/context"xmlns:mvc="/schema/mvc"xsi:schemaLocation="/schema/beans /schema/beans/spring-beans-3.0.xsd/schema/context /schema/context/spring-context-3.0.xsd/schema/mvc /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="/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="mons.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 {@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)

@Servicepublic 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类似。

本文链接:/tiandixuanwuliang/article/details/72598938

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。