


getContextPath() 会用的比较多
请求体中方法代码:
BufferedReader br =req.getReader();
String line =br.readline();
sout(line);
就可以得到请求体了



Servlet模板可以在file settings editer files and template 点other 下拉到web 找到使用注解创建Servlet的那个模板就可以修改了





用resp.sendRedirect()就是简化了前面的两步




loginServlet:
@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");
//调用mybatis完成查询
//加载核心配置文件 获取sqlSessionFactory对象
String resource = "mybatis_config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取brandMapper接口的代理对象 执行语句
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user =userMapper.select(username,password);
//释放资源
sqlSession.close();
//获取字符输出流,并设置content type
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);
}
}
简易HTML
登录系统
没有账号?点击注册

注册的servlet:
@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);
//调用mybatis完成查询
//加载核心配置文件 获取sqlSessionFactory对象
String resource = "mybatis_config.xml";
InputStream inputStream = Resources.getResourceAsStream(resource);
SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
//获取sqlSession对象
SqlSession sqlSession = sqlSessionFactory.openSession();
//获取brandMapper接口的代理对象 执行语句
UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
User user1 =userMapper.selectByUsername(username);
//获取字符输出流,并设置content type
response.setContentType("text/html;charset=utf-8");
PrintWriter writer = response.getWriter();
//判断user是否为null
if (user1==null){
//用户名不存在,添加数据
userMapper.add(user);
writer.write("注册成功");
//提交事务
sqlSession.commit();
//释放资源
sqlSession.close();
}else {
writer.write("用户名已存在");
}
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
this.doGet(request,response);
}
}
UserMapper:
public interface UserMapper {
//根据用户名跟密码查询对象
@Select("select * from tb_user where username=#{username} and password=#{password}")
User select(@Param("username") String username, @Param("password")String password);
@Select("select * from tb_user where username=#{username}")
User selectByUsername(@Param("username") String username);
@Insert("insert into tb_user (username, password) values (#{username},#{password})")
void add(User user);
}
简易html:
注册
已有账号?点击登录

也就是将这三行,包装成一个工具类,因为只创建一次,所以就使用静态代码块
静态代码块无法抛出异常,我们可以用try catch
代码:创建工厂对象
public class SqlSessionFactoryUtils {
private static final SqlSessionFactory sqlSessionFactory;
//静态代码块随着类的加载自动执行,且只执行一次
static {
String resource = "mybatis_config.xml";
InputStream inputStream = null;
try {
inputStream = Resources.getResourceAsStream(resource);
} catch (IOException e) {
throw new RuntimeException(e);
}
sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
}
public static SqlSessionFactory getSqlSessionFactory() {
return sqlSessionFactory;
}
}
后续要使用的时候,直接用 SqlSessionFactoryUtils.getSqlSessionFactory就可以了