Mybatis与Servlet的整合

整合步骤

以User业务为例

1.建立pojo实体类,继续建立UserMapper.java接口以及对应的UserMapper.xml(规则要求前面的博文已经讲过)
2.准备工具类

MyBatisUtil.java(自己编写)

public class MyBatisUtil {
	private static SqlSessionFactory factory;
	// 通过静态代码块创建会话工厂
	static{
		try {
			factory = new SqlSessionFactoryBuilder().build(Resources.getResourceAsStream("SqlMapConfig.xml"));
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
	/**
	 * 方法描述:获得会话工厂
	 * @return
	 */
	public static SqlSessionFactory getSqlSessionFactory(){
		return factory;
	}
}
3.编写service层接口及实现类

此处给出UserServiceImpl.java

public class UserServiceImpl implements UserService {
	// 注入会话工厂,通过会话工厂得到Mapper,
	private SqlSessionFactory factory =MyBatisUtil.getSqlSessionFactory();
	@Override
	public User login(User user) {
		// 获取会话
		SqlSession sqlSession = factory.openSession();
		// 创建代理对象
		UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		// 使用mapper对象调用方法执行操作
		User result = mapper.findUserByNameAndPwd(user);
		// 释放资源
		sqlSession.close();
		return result;
	}

	@Override
	public List<User> findAllUser() {
		// 获取会话
		SqlSession sqlSession = factory.openSession();
		// 创建代理对象
		UserMapper mapper = sqlSession.getMapper(UserMapper.class);
		// 使用mapper对象调用方法执行操作
		List<User> allUser = mapper.findAllUser();
		// 释放资源
		sqlSession.close();
		return allUser;
		
	}
}
4.编写UserServlet
package com.hpe.servlet;

import java.io.IOException;
import java.lang.reflect.Method;
import java.util.List;

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 com.hpe.po.User;
import com.hpe.service.UserService;
import com.hpe.service.impl.UserServiceImpl;

@WebServlet("/UserServlet")
public class UserServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
	private UserService  userService = new UserServiceImpl();
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		doPost(request, response);
	}
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 设置编码格式及响应的内容类型
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		String action = request.getParameter("action");
		try {
			Method method = this.getClass().getDeclaredMethod(action, HttpServletRequest.class,HttpServletResponse.class);
			method.invoke(this, request,response);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	// 登录
	public void login(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// 得到用户名和密码
		String username = request.getParameter("username");
		String password = request.getParameter("password");
		// 封装User对象
		User user = new User();
		user.setUsername(username);
		user.setPassword(password);
		// 调用UserServlet中的login方法
		User currUser = userService.login(user);
		if (currUser != null) {
			// 登录成功,将用户信息添加到session域
			request.getSession().setAttribute("user", currUser);
			// 查询所有用户
			response.sendRedirect(request.getContextPath()+"/UserServlet?action=selectAll");
		}else {
			// 登录失败
			request.setAttribute("msg", "<script>alert('用户名或密码错误')</script>");
			// 请求转发到登录页面
			request.getRequestDispatcher("/login.jsp").forward(request, response);
		}
	}
	// 查询所有用户
	public void selectAll(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		List<User> users = userService.findAllUser();
		request.getSession().setAttribute("users", users);
		request.getRequestDispatcher("/index.jsp").forward(request, response);
	}
}
5.编写前端JSP页面调用相关方法(前面的博文已经介绍过)
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值