SSM项目整合第一步 注册登陆实现
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项目整合第一步 注册登陆实现的更多相关文章
- SSM项目整合基本步骤
SSM项目整合 1.基本概念 1.1.Spring Spring 是一个开源框架, Spring 是于 2003 年兴起的一个轻量级的 Java 开发框架,由 Rod Johnson 在其著作 ...
- SSM项目整合Quartz
一.背景 SSM项目中要用到定时器,初期使用Timer,后来用spring 的schedule,都比较简单,所以功能比较单一而且他们不能动态的配置时间.后来就研究quartz,准备整合到项目中.Qua ...
- SSM 项目整合
SSM整合:spring + springmvc + mybatis 1.1 生成Maven项目:ar_ssm 1.2 添加jar包 <dependencies> <!-- 单元测试 ...
- SSM项目整合纪实
一 前 言 本来是为了探究一些功能性问题,需要一套完整的项目架构,本以为SSM用过那么多了,轻松搭建不在话下,但是过程中还是遇到一些问题,踩到一些未曾料想的坑.博文以搭建极简架构为目的,附带一些关键阐 ...
- Solr专题(三)SSM项目整合Solr
一.环境配置 所需要的jar包: org.apache.solr.solr-solrj maven依赖: <!-- https://mvnrepository.com/artifact/org. ...
- ssm项目整合shiro
pom.xml <properties> <shiro.version>1.2.2</shiro.version> </properties> < ...
- 基于maven的ssm框架整合
基于maven的ssm框架整合 第一步:通过maven建立一个web项目. 第二步:pom文件导入jar包 (1 ...
- SpringMVC详解及SSM框架整合项目
SpringMVC ssm : mybatis + Spring + SpringMVC MVC三层架构 JavaSE:认真学习,老师带,入门快 JavaWeb:认真学习,老师带,入门快 SSM框架: ...
- IDEA + Maven + SSM 框架整合步骤
因为前段时间自己想写个SSM的demo,然而不知怎么回事,配置完之后出现错误,怎么都调不好.最后从朋友那里拷了一个SSM的demo过来搭建成功,写这篇东西也是为了以后如果还有需要可以方便的查阅,并且也 ...
随机推荐
- hack 记录
0.寻找信号强的wifi,对于隐藏ssid 的可通过嗅探 1.wifi密码:wifi万能钥匙.minidwep-gtk.aircrack-ng 2.对于绑定mac地址的安全设置,可通过对活动的客户端网 ...
- 微信小程序制作下来菜单
wxml: <view class="phone_one" bindtap="clickPerson"> <view class=" ...
- FastAdmin 使用 phpmail 出现 spl_autoload_register 错误
FastAdmin 使用 phpmail 出现 spl_autoload_register 错误 现象 意思是 __autoload() 已经废弃 问题来源于:https://ask.fastadmi ...
- Leetcode908.Smallest Range I最小差值1
给定一个整数数组 A,对于每个整数 A[i],我们可以选择任意 x 满足 -K <= x <= K,并将 x 加到 A[i] 中. 在此过程之后,我们得到一些数组 B. 返回 B 的最大值 ...
- MAC+VS Code+Python+Markdown调试配置
目录 VS Code官网下载 VS Code插件推荐 VS Code Python环境配置 Markdown配置 VS Code官方文档 VS Code官网下载 VS Code官网下载地址 VS Co ...
- JMeter与LoadRunner的对比
1. 界面.安装.协议支持.函数库.成本.开源 2. 都可以实现分布式负载,相对来说LoadRunner更强大一些 3. 都支持在windows和linux环境的负载生成器.控制台方面,Jmeter跨 ...
- 洛谷2501 BZOJ1801中国象棋题解
题目链接 BZ链接 其实dp只要把状态想好后转移就很好写了(flag*1) f[i][j][k]表示到了第i行,有j列放了一个跑,有k列放了两个跑的方案总数 然后大力讨论,转移即可 # include ...
- Effective Modern C++:03转向现代C++
07:在创建对象时注意区分()和{} 自C++11以来,指定初始化值的的方式包括使用小括号,等号,以及大括号: ); // initializer is in parentheses ; // ini ...
- 用dreamweaver查找页面位置
复制页面的一段代码,然后用Dreamweaver在整个项目中查找代码. 找不到的原因:1.查找的内容是从数据库中读出来的.连数据库文件一起查便知. 2.查找的代码是某个函数生成的.
- C++中String字符串查找
在写C++程序中,总会遇到要从一个字符串中查找一小段子字符串的情况,对于在C中,我们经常用到strstr()或者strchr()这两种方法.而对于C++的string,我们往往会用到find(). C ...