SSM项目整合第一步  注册:

项目目录:

一、数据库建表:

源码:

 SET FOREIGN_KEY_CHECKS=0;

 -- ----------------------------
-- Table structure for t_user
-- ----------------------------
DROP TABLE IF EXISTS `t_user`;
CREATE TABLE `t_user` (
`user_id` int(11) NOT NULL AUTO_INCREMENT,
`user_name` varchar(32) NOT NULL,
`user_pass` varchar(36) NOT NULL,
`user_tel` int(11) DEFAULT NULL,
`user_real_name` varchar(32) DEFAULT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8; -- ----------------------------
-- Records of t_user
-- ----------------------------
INSERT INTO `t_user` VALUES ('', '', '', null, null);
INSERT INTO `t_user` VALUES ('', 'Lucky', 'admin', '', 'admin');

二、建立实体类映射字段:

后端实体类字段映射:

已下配置会将字段uesr_id  自动转换为userId  将_i 转换为大写I

applicationContext.xml:

  <!-- 加载mybatis-config配置文件,里面设置别名 -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>

mybatis-config.xml:

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>

前端实体类字段映射:

三、处理流程:

四、前端页面显示:

spring表头:

<%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>

spring表单:

错误信息:

 <%@taglib uri="http://www.springframework.org/tags/form" prefix="form" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<!-- saved from url=(0049)http://localhost:8080/HouseRent/page/register.jsp -->
<HTML xmlns="http://www.w3.org/1999/xhtml">
<HEAD><TITLE>布谷租房 - 用户注册</TITLE>
<META content="text/html; charset=utf-8" http-equiv=Content-Type>
<LINK
rel=stylesheet type=text/css href="../css/style.css">
<META name=GENERATOR content="MSHTML 8.00.7601.17514">
</HEAD>
<BODY>
<DIV id=header class=wrap>
<DIV id=logo><IMG src="../images/logo.gif"></DIV>
</DIV>
<DIV id=regLogin class=wrap>
<DIV class=dialog>
<DL class=clearfix>
<DT>新用户注册</DT>
<DD class=past>填写个人信息</DD>
</DL>
<DIV class=box>
<form:form action="/user/doreg" modelAttribute="userError" method="post">
<DIV class=infos>
<TABLE class=field>
<TBODY>
<TR>
<TD class=field>用 户 名:</TD>
<TD><INPUT class=text type=text name=name><form:errors path="name"></form:errors></TD>
</TR>
<TR>
<TD class=field>密  码:</TD>
<TD><INPUT class=text type=password name=password><form:errors path="password"></form:errors></TD>
</TR>
<TR>
<TD class=field>确认密码:</TD>
<TD><INPUT class=text type=password name=repassword></TD>
</TR>
<TR>
<TD class=field>电  话:</TD>
<TD><INPUT class=text type=text name=telephone><form:errors path="telephone"></form:errors></TD>
</TR>
<TR>
<TD class=field>用户姓名:</TD>
<TD><INPUT class=text type=text name=username></TD>
</TR>
</TBODY>
</TABLE>
<DIV class=buttons>
<INPUT value=立即注册 type="submit">
</DIV>
</DIV>
</form:form>
</DIV>
</DIV>
</DIV>
<DIV id=footer class=wrap>
<DL>
<DT>布谷租房 © 2010 布谷租房 京ICP证1000001号</DT>
<DD>关于我们 · 联系方式 · 意见反馈 · 帮助中心</DD>
</DL>
</DIV>
</BODY>
</HTML>

regs.jsp

如果页面没有css样式 此时处理静态文件才会显示:

  <!--处理静态文件 -->
<mvc:resources location="/scripts/" mapping="/scripts/**"/>
<mvc:resources location="/css/" mapping="/css/**"/>
<mvc:resources location="/images/" mapping="/images/**"/>

五、插入乱码解决:

WEB-INF/web.xml:

  <!-- 设置编码为UTF-8 -->
<filter>
<description>字符集过滤器</description>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<description>字符集编码</description>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

mysql.properties:

 mysql.driverClassName=com.mysql.jdbc.Driver
mysql.url=jdbc:mysql://localhost:3310/house?useUnicode=true&characterEncoding=UTF-8
mysql.username=root
mysql.password=123456

登陆:

登陆需要验证账号是否存在(账号密码统一即可)

sql语句:

登陆逻辑:

 package com.etc.controller;

 import com.etc.Vo.UserVO;
import com.etc.entity.User;
import com.etc.servise.UserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.SessionAttributes; import javax.validation.Valid; @Controller
@RequestMapping("/user")
@SessionAttributes(value = {"user"})
public class UserController { @Autowired
private UserService userService; @RequestMapping("/reg")
public String reg() {
return "regs";
} @RequestMapping("/doreg")
public String hello(@ModelAttribute("userError") @Valid UserVO userVO, BindingResult result){
if(result.hasErrors()){
return "regs";
}
userService.reg(userVO);
return "login";
} @RequestMapping("/login")
public String login(UserVO userVO, Model model){
User god=userService.login(userVO);
if(god!=null){
model.addAttribute("user",god);
return "fabu";
}else {
return "login";
} } }

UserController.java

 package com.etc.converter;

 import com.etc.Vo.UserVO;
import com.etc.entity.User; public class UserConverter {
public static User convert(UserVO userVO) {
User user = new User();
user.setUserName(userVO.getName());
user.setUserPass(userVO.getPassword());
user.setUserTel(userVO.getTelephone());
user.setUserRealName(userVO.getUsername());
return user;
}
}

UserConverter.java

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace="com.etc.dao.UserDAO">
<insert id="reg">
INSERT INTO `t_user` (
`user_name`,
`user_pass`,
`user_tel`,
`user_real_name`
)
VALUES
(#{userName}, #{userPass}, #{userTel}, #{userRealName});
</insert> <select id="login" resultType="user">
SELECT
*
FROM
t_user
WHERE
user_name = #{userName}
AND user_pass = #{userPass}
</select>
</mapper>

UserDAO.XML

 package com.etc.entity;

 public class User {
private int userId;
private String userName;
private String userPass;
private String userTel;
private String userRealName; public User() {
} public User(int userId, String userName, String userPass, String userTel, String userRealName) {
this.userId = userId;
this.userName = userName;
this.userPass = userPass;
this.userTel = userTel;
this.userRealName = userRealName;
} @Override
public String toString() {
return "User{" +
"userId=" + userId +
", userName='" + userName + '\'' +
", userPass='" + userPass + '\'' +
", userTel='" + userTel + '\'' +
", userRealName='" + userRealName + '\'' +
'}';
} public int getUserId() {
return userId;
} public void setUserId(int userId) {
this.userId = userId;
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public String getUserPass() {
return userPass;
} public void setUserPass(String userPass) {
this.userPass = userPass;
} public String getUserTel() {
return userTel;
} public void setUserTel(String userTel) {
this.userTel = userTel;
} public String getUserRealName() {
return userRealName;
} public void setUserRealName(String userRealName) {
this.userRealName = userRealName;
}
}

User.java

 package com.etc.servise;

 import com.etc.Vo.UserVO;
import com.etc.converter.UserConverter;
import com.etc.dao.UserDAO;
import com.etc.entity.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; @Service
public class UserService { @Autowired
private UserDAO userDAO; public void reg(UserVO userVO){
User user= UserConverter.convert(userVO);
userDAO.reg(user);
} public User login(UserVO userVO) {
User user= UserConverter.convert(userVO);
User god=userDAO.login(user);
return god;
}
}

UserService.java

 package com.etc.Vo;

 import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.constraints.NotEmpty; import javax.validation.constraints.Pattern; public class UserVO {
@NotEmpty(message = "用户名不能为空")
@Pattern(regexp = "^[a-zA-Z][a-zA-Z0-9]{3,15}$",message = "请输入3-15位账号,必须以字母开头")
private String name;
@NotEmpty(message = "用户名不能为空")
@Length(min = 8, max = 18, message = "密码必须在8到18位")
private String password; private String repassword;
@Pattern(regexp = "^1\\d{10}$",message ="请输入正确的手机号" )
private String telephone;
// @DateTimeFormat(pattern = "yyyy-MM-dd")
private String username; @Override
public String toString() {
return "UserVO{" +
"name='" + name + '\'' +
", password='" + password + '\'' +
", repassword='" + repassword + '\'' +
", telephone='" + telephone + '\'' +
", username='" + username + '\'' +
'}';
} public UserVO() {
} public UserVO(String name, String password, String repassword, String telephone, String username) {
this.name = name;
this.password = password;
this.repassword = repassword;
this.telephone = telephone;
this.username = username;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public String getPassword() {
return password;
} public void setPassword(String password) {
this.password = password;
} public String getRepassword() {
return repassword;
} public void setRepassword(String repassword) {
this.repassword = repassword;
} public String getTelephone() {
return telephone;
} public void setTelephone(String telephone) {
this.telephone = telephone;
} public String getUsername() {
return username;
} public void setUsername(String username) {
this.username = username;
}
}

UserVO.java

 <?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<settings>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>

mybatis-config.xml

SSM项目整合第一步 注册登陆实现的更多相关文章

  1. SSM项目整合基本步骤

    SSM项目整合 1.基本概念 1.1.Spring Spring 是一个开源框架, Spring 是于 2003  年兴起的一个轻量级的 Java  开发框架,由 Rod Johnson  在其著作  ...

  2. SSM项目整合Quartz

    一.背景 SSM项目中要用到定时器,初期使用Timer,后来用spring 的schedule,都比较简单,所以功能比较单一而且他们不能动态的配置时间.后来就研究quartz,准备整合到项目中.Qua ...

  3. SSM 项目整合

    SSM整合:spring + springmvc + mybatis 1.1 生成Maven项目:ar_ssm 1.2 添加jar包 <dependencies> <!-- 单元测试 ...

  4. SSM项目整合纪实

    一 前 言 本来是为了探究一些功能性问题,需要一套完整的项目架构,本以为SSM用过那么多了,轻松搭建不在话下,但是过程中还是遇到一些问题,踩到一些未曾料想的坑.博文以搭建极简架构为目的,附带一些关键阐 ...

  5. Solr专题(三)SSM项目整合Solr

    一.环境配置 所需要的jar包: org.apache.solr.solr-solrj maven依赖: <!-- https://mvnrepository.com/artifact/org. ...

  6. ssm项目整合shiro

    pom.xml <properties> <shiro.version>1.2.2</shiro.version> </properties> < ...

  7. 基于maven的ssm框架整合

    基于maven的ssm框架整合 第一步:通过maven建立一个web项目.                第二步:pom文件导入jar包                              (1 ...

  8. SpringMVC详解及SSM框架整合项目

    SpringMVC ssm : mybatis + Spring + SpringMVC MVC三层架构 JavaSE:认真学习,老师带,入门快 JavaWeb:认真学习,老师带,入门快 SSM框架: ...

  9. IDEA + Maven + SSM 框架整合步骤

    因为前段时间自己想写个SSM的demo,然而不知怎么回事,配置完之后出现错误,怎么都调不好.最后从朋友那里拷了一个SSM的demo过来搭建成功,写这篇东西也是为了以后如果还有需要可以方便的查阅,并且也 ...

随机推荐

  1. poj 2406 Power Strings(KMP入门,next函数理解)

    Power Strings Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 37685   Accepted: 15590 D ...

  2. Directx11教程(52) 实例(instancing)的简单应用

    原文:Directx11教程(52) 实例(instancing)的简单应用 有些时候,我们需要在场景中渲染大量的重复的物体,比如体育场中的观众,森林里面的树木等等,这些物体具有相似的形状,比如很多树 ...

  3. Limboy:自学 iOS 开发的一些经验

    不知不觉作为 iOS 开发也有两年多的时间了,记得当初看到 OC 的语法时,愣是被吓了回去,隔了好久才重新耐下心去啃一啃.啃了一阵,觉得大概有了点概念,看到 Cocoa 那么多的 Class,又懵了, ...

  4. 跟我一起认识axure(三)

    交互设置,添加链接 点击预览

  5. hdu1532&&poj1273 最大流

    Dinic算法: 层次图:根据源点到该点的距离建图,这里设相邻的都差1. (下面部分转) 在这幅图中我们首先要增广1->2->4->6,这时可以获得一个容量为2的流,但是如果不建立4 ...

  6. oracle使用profile管理用户口令

    概述:profile是口令限制.资源限制的命令集合,当建立数据时,oracle会自动建立名称为default的profile,当建立用户没有指定profile选项,那么oracle就会将default ...

  7. 重磅课程|《CNCF x Alibaba 云原生技术公开课》正式开讲!

    ​ 到底什么是“云原生”?云原生与 CNCF.Kubernetes 是什么关系?作为云计算时代的开发者和从业者,我们该如何在“云原生”的技术浪潮中站稳脚跟,将云原生落地.实现个人的自我升级呢? 201 ...

  8. 块级元素及内联元素对margin、padding的态度

    1.块级元素 margin:跟标准一样,设置该块级元素边框与同级兄弟元素或者父元素的距离,俗称外边距. padding:先延伸边框(也就是优先改变元素尺寸而不动元素中内容的位置),当边框碰到父元素的边 ...

  9. HZOJ 毛一琛

    直接暴搜是$3^n$的,无法接受. 正解是$meet \ in \ the \ middle$,暴搜前n/2个数,每个数的状态有三种:都不选,选为A集合,选为B集合.那么我们可以维护两个集合的差. 设 ...

  10. winfrom 中 label 文字随着窗体大小变化

    在进行winfrom 开发过程中,窗体中的文字需要随着窗体大小变化,否则会影响窗体的美观和客户的体验. 之前曾经试过几种方法效果都不满意,例如将label的Dock 属性设置为fill.这样的设置对解 ...