Spring mvc+hibernate框架 mysql数据库 自学后造一遍轮子

来源:互联网 发布:网络词鬼鬼什么意思 编辑:程序博客网 时间:2024/06/08 12:04

项目文件结构,用maven管理

一、配置springmvc,主要配置视图解析,前缀后缀和包的自动扫描

<?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:mvc="http://www.springframework.org/schema/mvc"    xmlns:context="http://www.springframework.org/schema/context"    xsi:schemaLocation="http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-4.1.xsd        http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.1.xsd">    <context:component-scan base-package="com.xianbao">        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>        <context:include-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>    </context:component-scan>    <mvc:default-servlet-handler/>    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/"></property>        <property name="suffix" value=".jsp"></property>    </bean>    <mvc:annotation-driven/></beans>

二、配置数据库连接

<?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:context="http://www.springframework.org/schema/context"    xmlns:tx="http://www.springframework.org/schema/tx"    xmlns:p="http://www.springframework.org/schema/p"    xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd        http://www.springframework.org/schema/contexthttp://www.springframework.org/schema/context/spring-context-4.1.xsd        http://www.springframework.org/schema/aophttp://www.springframework.org/schema/aop/spring-aop-4.1.xsd        http://www.springframework.org/schema/txhttp://www.springframework.org/schema/tx/spring-tx-4.1.xsd" >    <!-- 导入资源文件 -->    <context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>    <!-- 配置数据源 -->    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">        <property name="driverClass" value="com.mysql.jdbc.Driver" /><property name="jdbcUrl" value="jdbc:mysql://localhost:3306/xianbao" /><property name="user" value="root" /><property name="password" value="123456" />        </bean>    <!-- 配置sessionFactory -->    <bean id="sessionFactory" class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">        <property name="dataSource" ref="dataSource"></property>        <property name="hibernateProperties">            <props>                <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>                <prop key="hibernate.hbm2ddl.auto">update</prop>                <prop key="hibernate.show_sql">true</prop>                <prop key="hibernate.format_sql">true</prop>            </props>        </property>        <property name="packagesToScan" value="com.xianbao.*"></property>    </bean>    <!-- 配置要扫描的注解 -->    <context:component-scan base-package="com.xianbao.*" use-default-filters="false">        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>        <context:exclude-filter type="annotation" expression="org.springframework.web.bind.annotation.ControllerAdvice"/>    </context:component-scan>        <!-- 启动AspectJ支持 -->    <aop:aspectj-autoproxy/>    <!-- 配置事务管理器 -->    <bean id="transactionManager" class="org.springframework.orm.hibernate4.HibernateTransactionManager">        <property name="sessionFactory" ref="sessionFactory"></property>    </bean>    <!-- 使用注解配置事务 -->    <tx:annotation-driven transaction-manager="transactionManager"/>       </beans>

三、配置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" 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">     <listener>        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>    </listener> <filter>    <filter-name>SetCharacterEncoding</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>   <!-- needed for ContextLoaderListener -->    <context-param>        <param-name>contextConfigLocation</param-name>        <param-value>classpath:applicationContext.xml</param-value>    </context-param>    <!-- The front controller of this Spring Web application, responsible for handling all application requests -->    <servlet>        <servlet-name>springDispatcherServlet</servlet-name>        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>        <init-param>            <param-name>contextConfigLocation</param-name>            <param-value>classpath:springmvc.xml</param-value>        </init-param>        <load-on-startup>1</load-on-startup>    </servlet>    <!-- Map all requests to the DispatcherServlet for handling -->    <servlet-mapping>        <servlet-name>springDispatcherServlet</servlet-name>        <url-pattern>/</url-pattern>    </servlet-mapping>    <!-- 解决 org.hibernate.HibernateException:                  Could not obtain transaction-synchronized Session for current 出错问题 -->    <filter>        <filter-name>SpringOpenSessionInViewFilter</filter-name>        <filter-class>org.springframework.orm.hibernate4.support.OpenSessionInViewFilter</filter-class>    </filter>    <filter-mapping>        <filter-name>SpringOpenSessionInViewFilter</filter-name>        <url-pattern>/*</url-pattern>    </filter-mapping>        <filter>          <filter-name>characterEncodingFilter</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>          <init-param>              <param-name>forceEncoding</param-name>              <param-value>true</param-value>          </init-param>      </filter>      <filter-mapping>          <filter-name>characterEncodingFilter</filter-name>          <url-pattern>/*</url-pattern>      </filter-mapping>          <welcome-file-list>    <welcome-file>index.html</welcome-file>  </welcome-file-list></web-app>

四、JSP文件,登陆和注册的页面,登陆和查询都是DAO层调用hibernate方法后返回布尔类型的值,查询是返回一个list。

<form action="doLogin" method="post">                <input type="text" name="UNAME" class="username" placeholder="请输入您的用户名!">                <input type="password" name="UPASS" class="password" placeholder="请输入您的用户密码!">                <button type="submit" class="submit_button">登录</button></form>
五、通过提交表单跳转到控制层UserHandler.java,下边两个是注册和查询个人信息,如果想通过EL表达式在JSP取值,可以用第三个方法,将list值取出。

package com.xianbao.handler;import java.util.ArrayList;import java.util.List;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpSession;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.ModelAttribute;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.servlet.ModelAndView;import com.xianbao.model.User;import com.xianbao.service.UserService;@Controller("userHandler")public class UserHandler {    @Autowired    private UserService userService;    @RequestMapping(value="/doLogin",method=RequestMethod.POST)    public String login(HttpServletRequest request,String UNAME,String UPASS){        HttpSession session = request.getSession();        ArrayList<User> list = (ArrayList<User>) userService.findUser(UNAME,UPASS);        session.setAttribute("NAME", list.get(0).getNAME());        if(list.size()!=0){            return "success";        }        else        return "error";    }    @RequestMapping(value="/doRegister",method=RequestMethod.POST)    public String register(HttpServletRequest request,@ModelAttribute("user") User user){    if(userService.saveUser(user)){    return "success";    }else    return "error";    }    @RequestMapping(value="/person",method=RequestMethod.GET)    public ModelAndView personMessage(HttpServletRequest request,ModelAndView model,String UNAME){     List<User> user = userService.queryPerson(UNAME);     System.out.println(user.size());     model.addObject("NAME", user.get(0).getNAME());     model.addObject("TEL", user.get(0).getTEL());     model.addObject("UNAME", user.get(0).getUNAME());     model.addObject("ADDRESS", user.get(0).getADDRESS());     model.addObject("SEX", user.get(0).getSEX());     model.setViewName("person_message");return model;    }}


六、查询时会调用service层方法。finduser方法是登陆,saveuser方法是注册,query是个人信息查询

package com.xianbao.serviceimpl;import java.util.List;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import com.xianbao.dao.UserDao;import com.xianbao.dao.impl.UserDaoImpl;import com.xianbao.model.User;import com.xianbao.service.UserService;@Service("userService")public class UserServiceImpl implements UserService {    @Autowired    private UserDao userDao;    public UserDao getUserDao() {return userDao;}public void setUserDao(UserDao userDao) {this.userDao = userDao;}public List<User> findUser(String UNAME,String UPASS) {return userDao.findUser(UNAME, UPASS);    }public boolean saveUser(User user) {boolean saveUser = userDao.saveUser(user);if(saveUser){return true;}else{return false;}}public List<User> queryPerson(String UNAME) {return userDao.queryUser(UNAME);}}

七、service层会调用dao层方法去对数据库执行操作。

package com.xianbao.dao.impl;import com.xianbao.dao.UserDao;import com.xianbao.model.User;import java.util.List;import javax.annotation.Resource;import org.hibernate.Session;import org.hibernate.SessionFactory;import org.springframework.stereotype.Component;@Component("userDao")public class UserDaoImpl implements UserDao {private SessionFactory sessionFactory;public SessionFactory getSessionFactory() {return sessionFactory;}@Resourcepublic void setSessionFactory(SessionFactory sessionFactory) {this.sessionFactory = sessionFactory;}/* *****************************************登陆验证*************************************************** */@SuppressWarnings("unchecked")public List<User> findUser(String UNAME, String UPASS) {//开启hibernate事物Session s = sessionFactory.openSession();s.beginTransaction();String hql = "FROM User WHERE UNAME = ? AND UPASS = ?";List<User> list= null;        //hibernate封装的方法       list = s.createQuery(hql).setString(0, UNAME).setString(1, UPASS).list();       if(s!=null){if(s.isOpen()){s.close();}}if(list.size()!=0){return list;}else{return null;}}/* *****************************************注册*************************************************** */public boolean saveUser(User user) {Session s = sessionFactory.openSession();try{s.beginTransaction();s.save(user);s.getTransaction().commit();return true;}catch (Exception e) {s.getTransaction().rollback();  return false;}finally{if(s!=null){if(s.isOpen()){s.close();}}}}/* ************************************个人信息************************************************** */@SuppressWarnings("unchecked")public List<User> queryUser(String UNAME){Session s = sessionFactory.openSession();s.beginTransaction();String hql = "FROM User WHERE UNAME = ?";List<User> list= null;list = s.createQuery(hql).setString(0, UNAME).list();if(s!=null){if(s.isOpen()){s.close();}}return list;}}

八、实体类

package com.xianbao.model;import java.io.Serializable;import javax.persistence.Column;import javax.persistence.Entity;import javax.persistence.Id;import javax.persistence.Table;import org.hibernate.annotations.GenericGenerator;@SuppressWarnings("serial")@Entity@Table(name = "tb_user")public class User implements Serializable {@Column(name = "UNAME")private String UNAME; // 用户名@Column(name = "UPASS")private String UPASS; // 密码@Column(name = "NAME")private String NAME;  // 昵称@Column(name = "SEX")private String SEX;   // 性别@Column(name = "ADDRESS")private String ADDRESS;// 地址@Column(name = "TEL")private String TEL;// 电话@Idpublic String getUNAME() {return UNAME;}public void setUNAME(String uNAME) {UNAME = uNAME;}public String getUPASS() {return UPASS;}public void setUPASS(String uPASS) {UPASS = uPASS;}public String getNAME() {return NAME;}public void setNAME(String nAME) {NAME = nAME;}public String getSEX() {return SEX;}public void setSEX(String sEX) {SEX = sEX;}public String getADDRESS() {return ADDRESS;}public void setADDRESS(String aDDRESS) {ADDRESS = aDDRESS;}public String getTEL() {return TEL;}public void setTEL(String tEL) {TEL = tEL;}}

九、总结


类的接口没有写出,查询个人信息是用的a标签跳转到servlet  <a href="person?UNAME=${user.UNAME}" method="post">个人中心</a>

看的是过程而不是照搬,看完视频自学后照着很多文章编了很久都各种错误,最后放下重新看了看web基础,学了servlet,http协议,其实这些框架的原理都是servlet。有很大的帮助。


0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 dnf邮件发错了怎么办 手机提示sd卡已损坏怎么办 解压包文件数据损坏该怎么办 电脑被压缩后电脑打不开怎么办 眼睛里进了飞虫怎么办 虫子飞到眼睛里怎么办 云电脑pc版双鼠标怎么办 电脑蓝屏代码7f怎么办 笔记本电脑蓝屏开不了机怎么办 装xp系统后蓝屏怎么办 一键ghost断电了怎么办 如何防止cpu降频怎么办 win7 64位系统不兼容怎么办 网页无法加载打印机插件怎么办 微信提示安装了插件怎么办 电脑上不了网怎么办 win10 win10电脑突然没网了怎么办 笔记本玩战争前线发热严重怎么办 玩战争前线总是闪退怎么办 uu加速器卡在29怎么办 新ipad下载不了东西怎么办 福昕pdf阅读器找不到图章怎么办 战地4没达到分数怎么办 植物在太暗环境怎么办 玩绝地求生机型不支持怎么办 安卓安装包损坏怎么办 方舟手游安装包损坏怎么办 7p新机耗电快怎么办 不小心把图片删了怎么办 腿上毛又长又多怎么办 征兵体检体重太轻怎么办 体检发现颈部有淋巴节怎么办? 4岁宝宝汗毛重怎么办 嘴巴张开闭不上怎么办 口张开闭不上怎么办 要去当兵有痔疮怎么办 狗舔的东西吃了怎么办 婚检说生过孩子怎么办 劳动法规定身体有疾病的怎么办 铁路对职工醉驾怎么办 入职体检高血糖怎么办