目录
前言
JAVA实现网页的登录与注册
一、环境的搭建
1、创建Maven Web工程,参考【JAVA】Web服务器—Tomcat_Lx_Hy_的博客-CSDN博客
2、导入所需要的坐标(servlet、IOUtils工具类、MyBatis、MySQL、tomcat插件)
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.6</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.5</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.32</version>
</dependency>
</dependencies>
<build>
<plugins>
<!--tomcat 插件-->
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8080</port><!--访问端口号-->
<!-- <path>/</path>项目访问路径-->
</configuration>
</plugin>
</plugins>
</build>
3、准备静态页面,因为此项目不侧重前端页面设计所以直接给出HTML
4、在Navicat中创建数据库、tb_user表用于存储用户信息
5、编写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>
<typeAliases>
<package name="com.Server.pojo"/>
</typeAliases>
<environments default="development">
<environment id="development">
<transactionManager type="JDBC"/>
<dataSource type="POOLED">
<property name="driver" value="com.mysql.jdbc.Driver"/>
<property name="url" value="jdbc:mysql:///自己数据库的表名?useSSL=false&useServerPrepStmts=true"/>
<property name="username" value="自己的MySQL用户名"/>
<property name="password" value="自己的MySQL密码"/>
</dataSource>
</environment>
</environments>
<mappers>
<!--扫描mapper-->
<package name="com.Server.mapper"/>
</mappers>
</configuration>
5、创建UserMapper接口
public interface UserMapper {
}
6、定义与SQL映射文件同名的Mapper接口,并且将Mapper接口和SQL映射文件放置在同一目录下(详细可参考【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客)
<?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">
//命名空间:UserMapper所在位置
<mapper namespace="com.Server.mapper.UserMapper">
</mapper>
7、创建Web文件夹及两个功能的实现类
8、创建User实体类
public class User {
private Integer id;
private String username;
private String password;
public Integer getId() {
return id;
}
public void setId(Integer 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 + '\'' +
", passwords='" + password + '\'' +
'}';
}
}
二、功能实现
1、登录功能
在UserMapper接口中编写出登录功能所需的查询接口
//根据用户名和密码查询用户
User selectByConditionSingle_Log(@Param("username") String username, @Param("password") String password);
再在对应的UserMapper.xml中编写出对应的SQL语句,用于在数据库中查询信息
<select id="selectByConditionSingle_Log" resultType="com.Server.pojo.User">
select id, username, password
from tb_user
where username = #{username}
and password = #{password}
</select>
最后在LoginServlet中编写实现方法
(详细可参考【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客 和【JAVA】MyBatis下篇_Lx_Hy_的博客-CSDN博客 【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客、和【JAVA】Servlet_Lx_Hy_的博客-CSDN博客)
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接收用户名和密码
String username = request.getParameter("username");
String password = request.getParameter("password");
//获取SqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取UserMapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//调用方法
User user = userMapper.selectByConditionSingle_Log(username, password);
//释放资源
sqlSession.close();
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
//判断user是否为null
if (user != null) {
//登陆成功
writer.write("登陆成功");
} else {
//登陆失败
writer.write("登陆失败");
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
2、注册功能
在UserMapper接口中编写出注册功能所需的查询接口及添加接口
//判断用户名是否已经存在
User selectByUsername(String username);
//添加用户数据
void add(User user);
再在对应的UserMapper.xml中编写出对应的SQL语句,用于在数据库中查询信息及添加信息
<!--注册查询-->
<select id="selectByUsername" resultType="com.Server.pojo.User">
select id, username, password
from tb_user
where username = #{username}
</select>
<!--注册添加-->
<insert id="add">
insert into tb_user
values (null, #{username}, #{password})
</insert>
最后在RegisterServlet中编写实现方法
(详细可参考【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客 和【JAVA】MyBatis下篇_Lx_Hy_的博客-CSDN博客 【JAVA】MyBatis上篇_Lx_Hy_的博客-CSDN博客、和【JAVA】Servlet_Lx_Hy_的博客-CSDN博客)
@WebServlet("/registerServlet")
public class RegisterServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//接收用户数据
String username = request.getParameter("username");
String password = request.getParameter("password");
//封装用户对象
User user = new User();
user.setUsername(username);
user.setPassword(password);
//获取SqlSessionFactory对象
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取UserMapper
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//调用方法
User u = userMapper.selectByUsername(username);
response.setContentType("text/html;charset=utf-8");
//判断用户对象信息
if (u == null) {
//用户名不存在
userMapper.add(user);
sqlSession.commit();
response.getWriter().write("注册成功");
sqlSession.close();
} else {
//用户名存在给出信息
response.getWriter().write("用户名已存在");
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request, response);
}
}
【注意】
SqlSessionFactory只能创建一次,所以需要将LoginServlet和RegisterServlet中创建的工厂类抽取为一个工具类
【方法】
1、创建一个SqlSessionFactoryUtils
2、在编写静态代码块用来存放SqlSessionFactory的创建,再创建一个public方法用于返回创建的工厂
public class SqlSessionFactoryUtils {
private static SqlSessionFactory sqlSessionFactory;
//静态代码块,只执行一次
static {
try {
String resource = "mybatis-config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
}
}
3、在LoginServlet和RegisterServlet中调用方法来替换原代码
【LoginServlet】
【RegisterServlet】
总结
以上便是JAVA实现网页的登录与注册的全部内容,如有问题,可以私信讨论,感谢阅读!