springmvc用户注册

本文介绍如何在项目中集成Spring框架和Hibernate ORM技术,包括配置Spring MVC、使用Hibernate进行数据库操作及解决常见问题。

1.添加hibernate
先要打开数据库,建立一个新的数据库,编码为utf-8
再在DB Browser下面新建与该数据库的连接,
接下来添加properties(注意create sessionFactory那里选择不用自动创建,spring会帮助创建)
hbm show-sql format-sql
这里写图片描述
如果user类需要映射文件,就在该目录下创建一个xml文件,user映射到数据库
2.添加spring
add spring caplities
这里写图片描述
四个核心lib库core jdbc support web

web.xml

<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>

  <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>

spring-mvc.xml

copy spring.xml改名为spring-mvc.xml.并删除id为sessionfactory的bean。修改beans
这里写图片描述
(prefix 前缀 suffix 后缀) annotation :注释
ViewResolver视图解析器 resource:资源

SpringMVC用于处理视图最重要的两个接口是ViewResolver和View。ViewResolver的主要作用是把一个逻辑上的视图名称解析为一个真正的视图

web-root下面创建res的folder文件夹,WEB-INF下面创建jsp文件夹,将jsp放在该目录下面。
创建控制器,
RegisterCotroller.java

@Controller
@RequestMapping("/register")
public class RegisterController {

    @RequestMapping(method =RequestMethod.GET)
    public String get(){
        return "register";
    }

    @RequestMapping(method=RequestMethod.POST)
    public String post(){
        return "register_success";
    }
}

之后就部署web项目,可以在浏览器上进入register.jsp页面。

之后就是将bootstrap放入res目录下,并且在调用bootstrap时候,需要页面为HTML5,即将页面头改为,设置路径
<link rel="stylesheet" type="text/css" href="<%=basePath %>res/bootstrap/css/bootstrap.min.css">

之后就可以设计页面,这就需要前台设计。

乱码解决

web.xml页面(添加filter)

<!-- 解决乱码问题 -->
  <filter>
      <filter-name>CharacterEncodingFilter</filter-name>
      <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
      <init-param>
          <param-name>encoding</param-name> //enconding和forceEncoding两个方法都是该包下面的两个方法。
          <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>

添加cn.edu.wic.bean包,下面创建User类,添加字段,生成getter,setter方法。
这里写图片描述
并在该包下创建xml文件名字为User.hbm.xml(即hibernate映射文件)(选择Hibernate/Hibernate Mapping DTD 3.0//EN)

在User.hbm.xml文件下,添加字段约束
这里写图片描述
之后在hibernate中add mapping 这个User.hbm.xml

修改spring.xml文件
这里写图片描述

添加UserDao的接口,再实例化(impl)UserDao(创建两个包)

在UserDao 中生成save等方法,在UserDaoImpl中实现。

@Repository
public class UserDaoImpl implements UserDao{

    @Autowired
    private SessionFactory sessionFactory;

    @Override
    public void save(User user) {
        Session session = sessionFactory.openSession();
        session.beginTransaction();

        session.save(user);

        session.getTransaction().commit();
        session.close();

    }

添加数据时候如果中文显示不出来。可以在hibernate.cfg.xml文件中添加代码。

jdbc:mysql://localhost:3306/springmvc?useUnicode=true&amp;characterEncoding=UTF-8

为用户名等增加限制(非空等),不然每次都出现异常信息,lib目录下增加三个hibernate的包。
这里写图片描述

RegisterController.java文件下为异常添加信息。
这里写图片描述

错误:在spring.xml文件头部出现
Warning: No grammar constraints (DTD or XML schema) detected for the document
这个警告信息说明xml缺少头部,
方法一:常用方法 关闭XML验证
工具栏:windows => preferences => xml => xml files => validation => Indicate when no grammar is specified:选择Ignore即可。

方法二:(个人推荐)
添加 内容如下

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/2002/xmlspec/dtd/2.10/xmlspec.dtd">
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值