mybatis/request/servlet综合案例

案例:用户登录&用户注册

1.用户登录

image-20220330160732587

首先在我们之前建立了maven插件以及servlet的工程里首先配置好mybatis需要的环境

<properties>
 <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <maven.compiler.source>1.7</maven.compiler.source>
 <maven.compiler.target>1.7</maven.compiler.target>
</properties>

<dependencies>
 <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.11</version>
   <scope>test</scope>
 </dependency>
 <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.46</version>
 </dependency>
 <!--       junit 单元测试-->
 <dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>3.8.2</version>
   <scope>test</scope>
 </dependency>
 <!-- 添加slf4j日志api -->
 <dependency>
   <groupId>org.slf4j</groupId>
   <artifactId>slf4j-api</artifactId>
   <version>1.7.20</version>
 </dependency>
 <!-- 添加logback-classic依赖 -->
 <dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-classic</artifactId>
   <version>1.2.3</version>
 </dependency>
 <!-- 添加logback-core依赖 -->
 <dependency>
   <groupId>ch.qos.logback</groupId>
   <artifactId>logback-core</artifactId>
   <version>1.2.3</version>
 </dependency>
</dependencies>
<build>

接着在目录下创建一个pojo用于存放封装对象的类

 

写好user的属性以及set、get方法

接着写接口和对应的增删改方法(简单的增删改就写注解就好了,不用写配置文件了)

image-20220401202729029

在对应准备好的页面里定义跳转的页面

image-20220401202820643

接着·我们就可以完成对应的servlet的代码(这里要用到servlet,mybatis,request相关的知识)

@WebServlet(name = "loginServlet", value = "/loginServlet")
public class loginServlet extends HttpServlet {
   @Override
   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       request.setCharacterEncoding("UTF-8");
       String username=request.getParameter("username");
       String password=request.getParameter("password");
       String resource = "mybatis-config.xml";
       InputStream inputStream = null;
       try {
           inputStream = Resources.getResourceAsStream(resource);
      } catch (IOException e) {
           e.printStackTrace();
      }
       SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
       SqlSession sqlSession=sqlSessionFactory.openSession();
       UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
       User user=userMapper.select(username,password);
       if(user!=null){
           response.setHeader("content-type","text/html;charset=utf-8");
           //用response 设置响应数据
           response.getWriter().write("<h1>"+username+",欢迎您!<h1>");
      }else{
           response.setHeader("content-type","text/html;charset=utf-8");
           //用response 设置响应数据
           response.getWriter().write(username+"用户不存在或密码错误");
      }
       sqlSession.close();
  }

   @Override
   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       this.doGet(request, response);
  }
}

2.注册界面也是一样的

(1)接口中方法的书写(用注解完成sql语句)

image-20220401203051394

(2)对应html页面写好form属性

image-20220401203226787

(3)servlet完成代码(这是难点)

@WebServlet(name = "registerServlet", value = "/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");
      username=new String(username.getBytes(StandardCharsets.ISO_8859_1),StandardCharsets.UTF_8);
//       username="%"+username+"%";
//       ssw paord="%"+password+"%";
      User user=new User();
      user.setUsername(username);
      user.setPassword(password);
      response.setHeader("content-type","text/html;charset=utf-8");
      String resource = "mybatis-config.xml";
      InputStream inputStream = null;
      try {
          inputStream = Resources.getResourceAsStream(resource);
      } catch (IOException e) {
          e.printStackTrace();
      }
      SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      SqlSession sqlSession=sqlSessionFactory.openSession();
      UserMapper userMapper=sqlSession.getMapper(UserMapper.class);
      User user2=userMapper.select(username,password);
      if(user2!=null){
          //用response 设置响应数据
          response.getWriter().write("用户已存在");
      }else {
          userMapper.insert(user);
          User user1=userMapper.select(username,password);
          if(user1!=null){
              response.getWriter().write(username+"用户注册成功!");
          }
      }
      sqlSession.commit();/*需要手动提交数据才能更改数据库数据*/
      sqlSession.close();
  }

  @Override
  protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      this.doGet(request, response);
  }
}

(注意:如果要更改数据库的数据要在释放前手动提交表单)

其实最容易出错的还是maven环境和mybatis环境的搭建,建议工程开始前先借鉴mybatis快速入门搭建环境看看能否启动成功

而maven环境就用maven插件(安装插件image-20220401203700573再到pom中配置相关maven插件)就好了

<plugins>
<plugin>
  <groupId>org.apache.tomcat.maven</groupId>
  <artifactId>tomcat7-maven-plugin</artifactId>
  <version>2.2</version>
</plugin>
</plugins>

这样就是简单的案例,以后常练习

posted @ 2022-04-01 20:41  Ember00  阅读(149)  评论(0)    收藏  举报