今天我们将利用mms,做一个云笔记项目。
首先,展示项目结构
public class User implements Serializable{
private String username; //用户名
private String password;//密码
private String name;//姓名
private int age; //年龄
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User [username=" + username + ", password=" + password + ", name=" + name + ", age=" + age + "]";
}
}
public interface UserDao {
//登录
public List<User> login(User user);
/**
* 查找是否有用户名重复
* @param user
* @return
*/
public List<User> getUserByUsername (User user);
/**
* 用户注册信息
*/
public int addUser(User user);
}
public interface UserService {
@Autowired
//登录
public User login(User user);
/**
* 通过前台传过来的用户名来和数据库中的比较,是否有重复
* @param user 前台的username
* @return 返回的数据
*/
public User getUserByUsername (User user);
/**
* 用户注册信息
*/
public int addUser(User user);
}
@Service
public class UserImpl implements UserService{
@Autowired
UserDao userDao;
//登录
public User login(User user) {
//System.out.println(user);
List<User> list=userDao.login(user);
if(list==null || list.isEmpty()) {
System.out.println("用户名、密码不匹配");
return null;
}else {
System.out.println(list.get(0));
return list.get(0);
}
}
//看是否有重复的用户名
@Override
public User getUserByUsername(User user) {
List<User> list = userDao.getUserByUsername(user);
if(list == null || list.isEmpty()) {
System.out.println("用户名重复");
return null;
}
return list.get(0);
}
@Override
public int addUser(User user) {
return userDao.addUser(user);
}
}
@Controller //注解,组件扫描加入到spring容器中
@RequestMapping("/user") //类controller的映射路径
@Resource
public class UserController {
private Logger logger = LogManager.getLogger(UserController.class);
@Autowired
UserService userService;
//========================登录功能========================================//
@RequestMapping("/login") //方法的映射路径
@ResponseBody //将返回信息输送到网页端
public Object login(User user) {
logger.info("登录:"+user.getUsername());
try {
user.setPassword(MD5.md5(user.getPassword(), "nihao"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//System.out.println(user.toString());
User userResult = userService.login(user);
JsonResult jsonResult;
if(userResult!= null) {
jsonResult = new JsonResult(JsonResult.STATE_SUCCESS,"成功",userResult);
}else {
jsonResult = new JsonResult(JsonResult.STATE_ERROR,"用户名或密码错误",null);
}
//person.say();
return jsonResult;
}
//========================注册功能========================================//
@RequestMapping("/register")
@ResponseBody
public Object zhuce(User user) {
System.out.println(user);
User userResultByusername = userService.getUserByUsername(user);
try {
user.setPassword(MD5.md5(user.getPassword(), "nihao"));
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
JsonResult jsonResult = null;
//第一步,判断用户名是否重复,
if(userResultByusername == null) {
//第二步,如果不重复,就可以注册信息
int userResult = userService.addUser(user);
if(userResult == 1) {
jsonResult = new JsonResult(JsonResult.STATE_SUCCESS,"注册成功",null);
}else {
jsonResult = new JsonResult(JsonResult.STATE_ERROR,"注册失败",null);
}
}else {
jsonResult = new JsonResult(JsonResult.STATE_ERROR,"用户名重复",null);
}
return jsonResult;
}
}
6.不要捉急,先歇一下,解释一下
public class MD5 {
// 带秘钥加密
public static String md5(String text, String key) throws Exception {
// 加密后的字符串
String md5str = DigestUtils.md5Hex(text + key);
return md5str;
}
}
//其中的‘nihao’为盐值,也就是Key ,这是为了密码的安全性着想,
user.setPassword(MD5.md5(user.getPassword(), "nihao"));
7.注册的信息要保存在数据中,所以项目必须和数据库有所连接,以便传送数据
8.在src/main/resource定义一个名为conf的文件夹,下面写一个名为jdbc.properties 文件
driver=com.mysql.cj.jdbc.Driver
url=jdbc:mysql://localhost:3306/noteserver?characterEncoding=utf- 8&serverTimezone=UTC
username=root
password=root
9.接着,在写一个名为spring-mybaits.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
<!-- 读取配置文件 -->
<util:properties id="jdbc" location="classpath:conf/jdbc.properties"></util:properties>
<!-- 配置数据库连接池 -->
<bean id="dataSouce" class="org.apache.commons.dbcp2.BasicDataSource">
<property name="driverClassName" value="#{jdbc.driver}"></property>
<property name="password" value="#{jdbc.password}"></property>
<property name="url" value="#{jdbc.url}"></property>
<property name="username" value="#{jdbc.username}"></property>
</bean>
<!-- 创建sqlsession会话,用于操作数据库 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSouce"></property>
<property name="mapperLocations" value="classpath:mapper/*.xml"></property>
</bean>
<!-- 配置Mapper接口组件扫描 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.whc.noteserver.dao"></property>
</bean>
</beans>
10.不要忘了spring-service.xml
<?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:context="http://www.springframework.org/schema/context"
xmlns:jdbc="http://www.springframework.org/schema/jdbc"
xmlns:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:util="http://www.springframework.org/schema/util"
xmlns:jpa="http://www.springframework.org/schema/data/jpa"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.2.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.2.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.2.xsd
http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa-1.3.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.2.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.2.xsd">
<!-- <bean id="date" class="java.util.Date"></bean>
<bean id="person" class="com.whc.noteserver.test.Person">
name就是person里的fanDian ref就是指向spring-servie.xml中id为fanDian的bean
<property name="fanDian" ref="fanDian"></property>
</bean> -->
<!-- <context:component-scan base-package="com.whc.noteserver.test"></context:component-scan> -->
<bean id="person" class="com.whc.noteserver.test.Person">
<property name="personname" value="zhangsan"></property>
</bean>
<!-- 包扫描 -->
<context:component-scan base-package="com.whc.noteserver"></context:component-scan>
<!-- 启动注解版的Spring MVC -->
<mvc:annotation-driven></mvc:annotation-driven>
</beans>
11.与conf文件夹同级,取名为mapper,用于sql语句,取名为UseMapper.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//ibatis.apache.org//DTD Mapper 3.0//EN"
"http://ibatis.apache.org/dtd/ibatis-3-mapper.dtd">
<mapper namespace="com.whc.noteserver.dao.UserDao">
<select id="login" parameterType="com.whc.noteserver.entity.User" resultType="com.whc.noteserver.entity.User">
select * from note_t_users where username=#{username} and password=#{password}
</select>
<select id="getUserByUsername" parameterType="com.whc.noteserver.entity.User" resultType="com.whc.noteserver.entity.User">
select * from note_t_users where username=#{username}
</select>
<insert id="addUser" parameterType="com.whc.noteserver.entity.User" >
insert into note_t_users (username,password,name,age) values (#{username},#{password},#{name},#{age})
</insert>
</mapper>
12.JsonResult 文件
public class JsonResult implements Serializable{
/**
*
*/
private static final long serialVersionUID = -8479395982393447848L;
public static String STATE_SUCCESS = "1";
public static String STATE_ERROR = "-1";
//状态
private String state;
//信息
private String message;
//数据
private Object data;
public JsonResult (String state,String message,Object data) {
this.data = data;
this.message = message;
this.state = state;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
@Override
public String toString() {
return "JsonResult [state=" + state + ", message=" + message + ", data=" + data + "]";
}
}