IDEA实现前端页面登录,注册、增、删、改、查操作

您所在的位置:网站首页 idea怎么返回到登录界面 IDEA实现前端页面登录,注册、增、删、改、查操作

IDEA实现前端页面登录,注册、增、删、改、查操作

2024-07-03 00:05| 来源: 网络整理| 查看: 265

分层思想: entity层:存放实体类 vo层:消息模型(重复使用的一些属性) mapper层:接口(写方法的) mapper.xml:MyBatis与数据库相关的一些内容 controller(web)层: 接收前端传回的参数 调用service层,返回结果 转发、响应结果(跳转页面) service层: 业务逻辑判断,写方法的. utils层: 工具类:写通用的方法、类。 test包: 测试类、测试方法(测试代码) MyBatis-config.xml: 连接数据库的

pom.xml: 导入相关依赖

4.0.0 com.hsd Servlet_Maven 1.0-SNAPSHOT war Servlet_Maven Maven Webapp http://www.example.com UTF-8 1.7 1.7 com.fasterxml.jackson jackson-datatype-json-org 1.8.0 jstl jstl 1.2 org.mybatis mybatis 3.5.5 taglibs standard 1.1.2 mysql mysql-connector-java 5.1.34 javax.servlet.jsp jsp-api 2.2 javax.servlet javax.servlet-api 3.1.0 junit junit 4.11 test src/main/java **/*.properties **/*.xml true Servlet_Maven maven-clean-plugin 3.1.0 maven-resources-plugin 3.0.2 maven-compiler-plugin 3.8.0 maven-surefire-plugin 2.22.1 maven-war-plugin 3.2.2 maven-install-plugin 2.5.2 maven-deploy-plugin 2.8.2

MyBatis-config.xml: 连接数据库

utils层: GetSessionUtil类:

package com.hsd.utils; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder; import java.io.IOException; import java.io.InputStream; public class GetSessionUtil { public static SqlSession SqlSession(){ InputStream inputStream=null; SqlSessionFactory sqlSessionFactory=null; SqlSession sqlSession=null; //获取MyBatis的配置文件 try { String resources="MyBatis-config.xml"; //通过输入流拿到MyBatis-config.xml的配置文件 inputStream=Resources.getResourceAsStream(resources); //MyBatis通过读取配置文件信息,构造出sqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream); //获取sqlSession sqlSession=sqlSessionFactory.openSession(); return sqlSession; }catch (IOException e){ e.printStackTrace(); return null; } } //测试配置环境无问题 public static void main(String[] args) { System.out.println(SqlSession()); } }

test包: UserTest类:

package com.hsd.test; import com.hsd.entity.User; import com.hsd.mapper.UserMapper; import com.hsd.utils.GetSessionUtil; import org.apache.ibatis.session.SqlSession; public class UserTest { public static void main(String[] args) { //获取sqlSession SqlSession sqlSession= GetSessionUtil.SqlSession(); //获取mapper UserMapper mapper=sqlSession.getMapper(UserMapper.class); //调用mapper的方法 User user = mapper.selectByUsername("aaa"); // System.out.println(user); } }

登录: 1.数据库建表user 2.前端页面:user.jsp 登录表单: (1)form表单,创建账号和密码的输入框 (2)将登陆按钮绑定点击事件 (3)获取用户名和密码的值 (4)判断账号是否为空 若为空,就提示“账号不能为空”(赋值给span标签)并return返回 (5)判断密码是否为空 若为空,就提示“密码不能为空”(赋值给span标签)并return返回 (6)若都不为空,提交表单,跳转到后端 3.后端代码: (1)接收客户端请求(账号、密码) (2)调用service中的登录方法 (3)判断账号是否存在 若账号不存在,就提示“用户账号不存在”,返回到登录页面继续登录。 (4)判断密码是否有误 若密码有误,就提示“用户密码有误”,返回到登录页面继续登录。 (5)若都没问题就跳转到首页 controller层:(接收请求、响应结果) 1、接收客户端请求(账号、密码) 2、调用service中的登录方法 3、判断是否登录成功,成功的话跳转到首页,失败的话继续登录 service层:(业务逻辑) 1、创建消息模型对象(状态、提示信息、回显数据) 2、判断账号是否存在 若账号不存在,就提示“用户账号不存在”,回显数据到消息模型对象中,返回消息模型对 象 3、判断密码是否有误 若密码有误,就提示“用户密码有误”,回显数据到消息模型对象中,返回消息模型对象 4、若无问题就将用户信息放到消息模型中 mapper层: mapper接口:定义对应的接口 mapper.xml:写对应的sql语句 entity层: vo层:消息模型(重复使用的一些属性,写在MessageModel类中) student.jsp:首页 

1.数据库建表user

CREATE TABLE USER( id INT PRIMARY KEY AUTO_INCREMENT, username VARCHAR(20), PASSWORD VARCHAR(20) ); INSERT INTO USER(username,PASSWORD)VALUE ('admin','123');

 entity层:User类 

package com.hsd.entity; public class User { private int id; private String username; private String password; public User() { } public User(int id, String username, String password) { this.id = id; this.username = username; this.password = password; } public int getId() { return id; } public void setId(int id) { this.id = id; } 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; } @Override public String toString() { return "User{" + "id=" + id + ", username='" + username + '\'' + ", password='" + password + '\'' + '}'; } }

 entity层:Student类

package com.hsd.entity; //学生实体类 public class Student { private int id;//编号 private String name;//姓名 private int age;//年龄 private String sex;//性别 private String hobby;//爱好 private String time;//日期 public Student() { } public Student(int id, String name, int age, String sex, String hobby, String time) { this.id = id; this.name = name; this.age = age; this.sex = sex; this.hobby = hobby; this.time = time; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getSex() { return sex; } public void setSex(String sex) { this.sex = sex; } public String getHobby() { return hobby; } public void setHobby(String hobby) { this.hobby = hobby; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } @Override public String toString() { return "Student{" + "id=" + id + ", name='" + name + '\'' + ", age=" + age + ", sex='" + sex + '\'' + ", hobby='" + hobby + '\'' + ", time='" + time + '\'' + '}'; } }

 2.前端页面:user.jsp

登录 登录页面 账号: 密码: ${messageModel.msg} 登录 注册 $("#but").click(function () { //通过id选择器获取账号和密码 var username=$("#username").val(); var password=$("#password").val(); //判断用户名和密码是否为空,若为空返回true,不为空返回false function isEmpty(str) { if(str==null||str.trim()==""){ return true; } return false; } //判断账号是否为空 if(isEmpty(username)) { //若账号为空,提示并返回: $("#div").html("账号不能为空!") return; }if(isEmpty(password)){ /* //若密码为空,提示并返回:*/ $("#div").html("密码不能为空!") return; } $("#userForm").submit() });

 相关的MessageModel类:entity层:-->vo层-->消息模型:写入重复使用的一些属性。

package com.hsd.entity.vo; public class MessageModel { private int code=1;//状态码(1:成功。0:失败。默认为1) private String msg="成功";//提示信息(成功和失败,默认成功,失败提示错误信息) private Object object;//回显对象(基本数据类型、引用数据类型、数组、集合) public MessageModel() { } public MessageModel(int code, String msg, Object object) { this.code = code; this.msg = msg; this.object = object; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public Object getObject() { return object; } public void setObject(Object object) { this.object = object; } }

 3.后端代码:controller层:UserServlet类

package com.hsd.controller; import com.hsd.entity.vo.MessageModel; import com.hsd.service.UserService; import javax.servlet.ServletException; import javax.servlet.annotation.WebServlet; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /*controller层:(接收请求、响应结果) 1、接收客户端请求(账号、密码) 2、调用service中的登录方法 3、判断是否登录成功,成功的话跳转到首页,失败的话继续登录*/ @WebServlet("/UserServlet") public class UserServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { //获取UserService对象 UserService userService=new UserService(); // 1、接收客户端请求(账号、密码) String username=req.getParameter("username"); String password=req.getParameter("password"); //2、调用service中的登录方法 MessageModel messageModel=userService.selectByUsername(username,password); //3、判断是否登录成功,成功的话跳转到首页,失败的话继续登录 if(messageModel.getCode()==1){ //成功,将消息模型存到req中,并重定向到首页 //转发(req) req.getSession().setAttribute("messageModel",messageModel); //重定向(resp) //路径不加‘/’ resp.sendRedirect("StudentServlet"); }else{ //失败,将消息模型存到req中,并转发到登录页面 req.setAttribute("messageModel",messageModel); //路径加‘/’ req.getRequestDispatcher("/user.jsp").forward(req,resp); } } }

service层:UserService类

package com.hsd.service; import com.hsd.entity.User; import com.hsd.entity.vo.MessageModel; import com.hsd.mapper.UserMapper; import com.hsd.utils.GetSessionUtil; import org.apache.ibatis.session.SqlSession; /*1、创建消息模型对象(状态、提示信息、回显数据) 2、判断账号是否存在 若账号不存在,就提示“用户账号不存在”,回显数据到消息模型对象中,返回消息模型对象 3、判断密码是否有误 若密码有误,就提示“用户密码有误”,回显数据到消息模型对象中,返回消息模型对象 4、若无问题就将用户信息放到消息模型中*/ public class UserService { public MessageModel selectByUsername(String username, String password) { //1、创建消息模型对象(状态、提示信息、回显数据) MessageModel messageModel=new MessageModel(); //回显数据,当账号和密码输入错误时,不会自动清空账号和密码,仍保留。 User u=new User(); u.setUsername(username); u.setPassword(password); //将回显的数据放在回显对象中 messageModel.setObject(u); //获取sqlSession对象 SqlSession sqlSession= GetSessionUtil.SqlSession(); //调用UserMapper的登录方法 UserMapper mapper=sqlSession.getMapper(UserMapper.class); User user=mapper.selectByUsername(username); //2、判断账号是否存在 if(user==null){ //若账号不存在,就提示“用户账号不存在”,回显数据到消息模型对象中,返回消息模型对象 messageModel.setCode(0);//修改状态为0 messageModel.setMsg("该账号不存在"); return messageModel; } //3、判断密码是否有误 if(!password.equals(user.getPassword())){ messageModel.setCode(0);//修改状态为0 messageModel.setMsg("密码有误"); return messageModel; } //4、若无问题就将用户信息放到消息模型中 messageModel.setObject(user); //释放资源 sqlSession.close(); return messageModel; } /*service层:(业务逻辑) 1、创建消息模型对象(状态、提示信息、回显数据) 2、判断账号是否存在 若账号存在,就提示“用户账号已存在不能注册”,回显数据到消息模型对象中,返回消息模型对象 3、若无问题就将用户信息放到消息模型中*/ public MessageModel Register(User user) { // 1、创建消息模型对象(状态、提示信息、回显数据) MessageModel messageModel = new MessageModel(); //回显数据 User u = new User(); u.setUsername(user.getUsername()); u.setPassword(user.getPassword()); //将回显的数据存到数据模型中 messageModel.setObject(u); //获取sqlSession SqlSession sqlSession = GetSessionUtil.SqlSession(); //获取mapper UserMapper mapper = sqlSession.getMapper(UserMapper.class); //调用mapper中查找用户名的方法 User user1 = mapper.selectByUsername(user.getUsername()); //2、判断账号是否存在 if(user1!=null){ //若账号存在,就提示“用户账号已存在不能注册”, messageModel.setCode(0);//消息模型的状态修改为0 messageModel.setMsg("该账号已存在不能注册");//提示信息 return messageModel;//将错误的信息返回给messageModel } //不存在,3、若无问题就将用户信息放到消息模型中 //调用mapper中的注册方法 mapper.Register(user); messageModel.setObject(user); //提交事务:添加时需要提交,查询时不需要提交 //将数据放到数据库时,需要提交事务;从数据库中取出数据时,不需要提交事务 sqlSession.commit(); return messageModel; //释放资源 } }

mapper层:UserMapper

package com.hsd.mapper; import com.hsd.entity.User; import org.apache.ibatis.annotations.Select; public interface UserMapper { //@Select("select * from user") User selectByUsername(String name); void Register(User user); }

 UserMapper.xml

select * from user where username=#{username}; insert into user value (null,#{username},#{password});

 设置xml:File-->Settings-->Editor-->Code Style-->File and Code Templates:点击'+'号,设置:Name:Mapper,Extension:xml-->Apply-->OK

 

 注册:

1.前端页面register.jsp 注册表单:

(1)form表单,账号、密码、重复密码和注册的按钮

(2)将注册按钮绑定点击事件

(3)获取账号、密码、重复密码的值

(4)判断账号是否为空 若为空,就提示“账号不能为空”(赋值给div标签)并return返回 (5)判断密码是否为空 若为空,就提示“密码不能为空”(赋值给div标签)并return返回 (6)判断重复密码是否为空 若为空,就提示“重复密码不能为空”(赋值给div标签)并return返回

(7)判断密码和重复密码是否一致

(8)判断密码长度是否符合要求(>3&&3&&



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3