目录
案例说明
一、创建MavenWeb项目
二、导入相关依赖
1、导入maven编译插件
2、导入tomacat插件
3、导入servlet依赖
4、导入druid数据库连接池依赖
5、导入mysql依赖
6、导入mybatis依赖
7、导入junit依赖
8、导入mybatis核心配置文件mybatis-config.xml
三、使用Mapper代理
导入MySql映射文件 XXXMapper.xml
创建mapper接口
四、IDEA配置tomcat
五、创建数据库
六、开始编码
1、创建实体类User
2、在mapper接口中定义用户操作
3、在mapper接口对应的SQL映射文件创建SQL语句
4、创建一个工具类
5、创建servlet包,处理登陆注册的业务逻辑
登陆操作:
注册操作:
七、项目展示
个人博客欢迎访问 --- 猿客栈
完成用户登录和用户注册逻辑,与后端数据库联系
点击新建模块,勾选使用骨架快速搭建。
在pom.xml文件中删除无用的代码,导入项目需要的依赖。设置打包方式位war包
声明编译的jdk版本,如果不导入插件,会报不支持发行版本5的错误
org.apache.maven.plugins
maven-compiler-plugin
2.3.2
1.8
使maven可以直接编译tomcat的项目插件,选择性安装,只能支持到tomcat7
org.apache.tomcat.maven
tomcat7-maven-plugin
2.2
80
javax.servlet
javax.servlet-api
3.1.0
provided
com.alibaba
druid
1.1.12
mysql
mysql-connector-java
5.1.34
org.mybatis
mybatis
3.5.9
junit
junit
3.8.2
test
放入resources资源文件夹下。
文件名称为(操作的pojo实体类对象名称+Mapper).xml 放入resources资源文件夹下。
在java文件夹下创建一个mapper包,包下创建与SQL映射文件同名的mapper接口,在接口中声明操作数据库的方法,可以安装MyBatisX插件,实现方法与映射文件间的快速跳转。
同时要在resource文件夹下创建一个与mapper接口包名 同名的文件夹,将SQL映射文件放入。
完成Mapper代理
在 Web核心 中有明确说明,注意要配置Deployment,导入war包。
id user_name password tel
public class User {
private Integer id;
private String username;
private String password;
private String tel;
public User() {
}
public User(String username, String password,String tel) {
this.username = username;
this.password = password;
this.tel = tel;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = 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 getTel() {
return tel;
}
public void setTel(String tel) {
this.tel = tel;
}
}
public interface UserMapper {
//根据用户名和密码查询用户对象
User select(@Param("username") String username, @Param("password") String password);
//注册用户
int add(User user);
//根据用户名查找是否存在
User selectByName(@Param("username") String username);
}
insert into login(user_name,password,tel) values(#{username},#{password},#{tel});
由于整个的会话工厂只需要一个,避免代码冗余,创建会话工厂工具类用来得到会话工厂。
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 (Exception e) {
e.printStackTrace();
}
}
public static SqlSessionFactory getSqlSessionFactory(){
return sqlSessionFactory;
}
}
@WebServlet("/loginServlet")
public class LoginServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//1、接收用户名和密码
String username = req.getParameter("username");
String password = req.getParameter("password");
//2、使用Mybatis操作数据库
//1、加载mybatis核心配置文件获取SqlSessionFactory
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
//2、开启SqlSession对象
//SqlSession不能写在工具类,因为SqlSession代表用户与数据库的连接,如果放在工具类,则所有用户共用同一个连接
//这样无法管理事务,使多个用户之间产生影响
SqlSession sqlSession = sqlSessionFactory.openSession();
//3、获取Mapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//4、执行接口方法(执行SQL语句)
User user = userMapper.select(username,password);
//5、释放资源
sqlSession.close();
//3、查看输出结果响应给用户
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
if (user != null){
writer.write("登陆成功
");
}else {
writer.write("登录失败
");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
@WebServlet("/addServlet")
public class AddServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//解决post获取请求数据中文乱码问题
req.setCharacterEncoding("UTF-8");
//1、接收用户名、密码和手机号
String username = req.getParameter("username");
String password = req.getParameter("password");
String tel = req.getParameter("tel");
User user1 = new User(username,password,tel);
//2、使用Mybatis操作数据库
//1、加载mybatis核心配置文件获取SqlSessionFactory
SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
//2、开启SqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//3、获取Mapper接口的代理对象
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
//4、执行接口方法(执行SQL语句)
//先检查账户是否被注册
int i = 0;
User user = userMapper.selectByName(username);
if (user == null){
i = userMapper.add(user1);
sqlSession.commit();
}
//5、释放资源
sqlSession.close();
//3、查看输出结果响应给用户
resp.setContentType("text/html;charset=utf-8");
PrintWriter writer = resp.getWriter();
if (i > 0){
writer.write("注册成功
");
}else {
writer.write("注册失败,账户已存在
");
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
this.doGet(req,resp);
}
}
需要前端资源请私信