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. hack 记录

    0.寻找信号强的wifi,对于隐藏ssid 的可通过嗅探 1.wifi密码:wifi万能钥匙.minidwep-gtk.aircrack-ng 2.对于绑定mac地址的安全设置,可通过对活动的客户端网 ...

  2. 微信小程序制作下来菜单

    wxml: <view class="phone_one" bindtap="clickPerson"> <view class=" ...

  3. FastAdmin 使用 phpmail 出现 spl_autoload_register 错误

    FastAdmin 使用 phpmail 出现 spl_autoload_register 错误 现象 意思是 __autoload() 已经废弃 问题来源于:https://ask.fastadmi ...

  4. Leetcode908.Smallest Range I最小差值1

    给定一个整数数组 A,对于每个整数 A[i],我们可以选择任意 x 满足 -K <= x <= K,并将 x 加到 A[i] 中. 在此过程之后,我们得到一些数组 B. 返回 B 的最大值 ...

  5. MAC+VS Code+Python+Markdown调试配置

    目录 VS Code官网下载 VS Code插件推荐 VS Code Python环境配置 Markdown配置 VS Code官方文档 VS Code官网下载 VS Code官网下载地址 VS Co ...

  6. JMeter与LoadRunner的对比

    1. 界面.安装.协议支持.函数库.成本.开源 2. 都可以实现分布式负载,相对来说LoadRunner更强大一些 3. 都支持在windows和linux环境的负载生成器.控制台方面,Jmeter跨 ...

  7. 洛谷2501 BZOJ1801中国象棋题解

    题目链接 BZ链接 其实dp只要把状态想好后转移就很好写了(flag*1) f[i][j][k]表示到了第i行,有j列放了一个跑,有k列放了两个跑的方案总数 然后大力讨论,转移即可 # include ...

  8. Effective Modern C++:03转向现代C++

    07:在创建对象时注意区分()和{} 自C++11以来,指定初始化值的的方式包括使用小括号,等号,以及大括号: ); // initializer is in parentheses ; // ini ...

  9. 用dreamweaver查找页面位置

    复制页面的一段代码,然后用Dreamweaver在整个项目中查找代码. 找不到的原因:1.查找的内容是从数据库中读出来的.连数据库文件一起查便知. 2.查找的代码是某个函数生成的.

  10. C++中String字符串查找

    在写C++程序中,总会遇到要从一个字符串中查找一小段子字符串的情况,对于在C中,我们经常用到strstr()或者strchr()这两种方法.而对于C++的string,我们往往会用到find(). C ...