JavaWeb コア、包括的なケース (詳細! Web 開発プロセス)

目次

事例の説明

1. MavenWeb プロジェクトを作成する

2. 関連する依存関係をインポートする

1. Maven コンパイル プラグインをインポートする

2. tomacat プラグインをインポートする

3. サーブレットの依存関係をインポートする

4. druid データベース接続プールの依存関係をインポートする

5.mysqlの依存関係をインポートする

6. mybatis の依存関係をインポートする

7. junit 依存関係をインポートする

8. mybatis コア設定ファイル mybatis-config.xml をインポートします。

3.Mapperエージェントを使用する

MySql マッピング ファイル XXXMapper.xml をインポートします。

 マッパーインターフェイスの作成

4. IDEA が Tomcat を構成する

5. データベースの作成

6. コーディングを開始する

1.エンティティクラスUserの作成

 2. マッパーインターフェイスでユーザー操作を定義する

3. マッパーインターフェースに対応するSQLマッピングファイルにSQL文を作成します。

4. ツールクラスを作成する

5. ログインと登録のビジネス ロジックを処理するサーブレット パッケージを作成します。

ログイン操作:

登録操作:

7. プロジェクト表示


個人ブログへようこそ ---  Ape Inn

事例の説明

ユーザー ログインとユーザー登録ロジックを完了し、バックエンド データベースに接続します。

1. MavenWeb プロジェクトを作成する

「新規モジュール」をクリックし、「スケルトンを使用して迅速に構築する」にチェックを入れます。

2. 関連する依存関係をインポートする

pom.xml ファイル内の不要なコードを削除し、プロジェクトに必要な依存関係をインポートします。パッケージングモードの設定 bit war package

1. Maven コンパイル プラグインをインポートする

 コンパイル済みの JDK バージョンを宣言します。プラグインがインポートされていない場合は、リリース バージョン 5 がサポートされていないというエラーが報告されます。

<build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>2.3.2</version>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
</build>

2. tomacat プラグインをインポートする

Maven が Tomcat プロジェクト プラグインを直接コンパイルできるようにし、選択的にインストールし、Tomcat7 のみをサポートします

<plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
        <port>80</port>
     </configuration>
</plugin>

3. サーブレットの依存関係をインポートする

<dependencies>

   <dependency>
     <groupId>javax.servlet</groupId>
     <artifactId>javax.servlet-api</artifactId>
     <version>3.1.0</version>
     <scope>provided</scope>
   </dependency>

4. druid データベース接続プールの依存関係をインポートする

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>druid</artifactId>
     <version>1.1.12</version>
   </dependency>

5.mysqlの依存関係をインポートする

<dependency>
     <groupId>mysql</groupId>
     <artifactId>mysql-connector-java</artifactId>
     <version>5.1.34</version>
   </dependency>

6. mybatis の依存関係をインポートする

<dependency>
     <groupId>org.mybatis</groupId>
     <artifactId>mybatis</artifactId>
     <version>3.5.9</version>
   </dependency>

7. junit 依存関係をインポートする

<dependency>
     <groupId>junit</groupId>
     <artifactId>junit</artifactId>
     <version>3.8.2</version>
     <scope>test</scope>
   </dependency>
</dependencies>

8. mybatis コア設定ファイル mybatis-config.xml をインポートします。

それをリソースリソースフォルダーに置きます。

<?xml version="1.0" encoding="UTF-8" ?>

<!--Mybatis核心配置文件-->
<!DOCTYPE configuration
        PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>

    <!--
    使用typeAliases再进行包扫描,给该包下的所有实体类起别名,直接使用不区分大小写的类名
    例如SQL映射文件下的返回值类型可以直接使用user,而不是com.itheima.pojo.user
    -->
    <typeAliases>
        <package name="com.itheima.pojo"/>
    </typeAliases>

    <!--environments:配置数据库连接环境信息,可以配置多个environment,通过default属性切换不同的environment-->
    <environments default="development">
        <environment id="development">
            <!--事物的管理方式-->
            <transactionManager type="JDBC"/>
            <!--数据库连接池,默认为POOLED-->
            <dataSource type="POOLED">
                <!--数据库连接信息-->
                <property name="driver" value="com.mysql.jdbc.Driver"/>
                <property name="url" value="jdbc:mysql://localhost:3306/users?useSSL=false&amp;userServerPrepStmts=true"/>
                <property name="username" value="root"/>
                <property name="password" value="12345"/>
            </dataSource>
        </environment>
    </environments>
    <mappers>
        <!--加载SQL映射文件,使用包扫描-->
        <package name="com.itheima.mapper"/>
    </mappers>
</configuration>

3.Mapperエージェントを使用する

MySql マッピング ファイル XXXMapper.xml をインポートします。

ファイル名は(操作pojoエンティティクラスオブジェクト名+Mapper).xmlで、resourcesリソースフォルダーに配置されます。

<?xml version="1.0" encoding="UTF-8" ?>
<!--SQL映射文件-->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--mapper根标签  namespace必须要指定名称-->
<mapper namespace="com.itheima.mapper.UserMapper">

</mapper>

 マッパーインターフェイスの作成

Javaフォルダーにマッパーパッケージを作成し、その配下にSQLマッピングファイルと同名のマッパーインターフェースを作成し、そのインターフェース内でデータベースの操作方法を宣言します。MyBatisXプラグインをインストールすることでクイックジャンプを実現できます。メソッドとマッピング ファイルの間。

 同時にリソースフォルダー配下にマッパーインターフェースパッケージ名と同名のフォルダーを作成し、その中にSQLマッピングファイルを置きます。

 完全なマッパーエージェント

4. IDEA が Tomcat を構成する

 Web Coreには明確な手順が記載されているので、デプロイメントの構成と war パッケージのインポートに注意してください。

5. データベースの作成

ID ユーザー名 パスワード 電話番号

6. コーディングを開始する

1.エンティティクラスUserの作成

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;
    }
}

 2. マッパーインターフェイスでユーザー操作を定義する

public interface UserMapper {
    //根据用户名和密码查询用户对象
    User select(@Param("username") String username, @Param("password") String password);

    //注册用户
    int add(User user);

    //根据用户名查找是否存在
    User selectByName(@Param("username") String username);
}

3. マッパーインターフェースに対応するSQLマッピングファイルにSQL文を作成します。

<?xml version="1.0" encoding="UTF-8" ?>
<!--SQL映射文件-->
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<!--mapper根标签  namespace必须要指定名称-->
<mapper namespace="com.itheima.mapper.UserMapper">

    <resultMap id="userResultMap" type="user">
        <!--resultMap有两个常用属性 id:设置主键字段的映射  result:设置一般字段的映射-->
        <!--column表的列名 property实体类的属性名-->
        <result column="user_name" property="username"></result>
    </resultMap>

    <!--根据用户名和密码登录-->
    <select id="select" resultMap="userResultMap">
        select * from login where user_name=#{username} and password=#{password};
    </select>


    <!--用户注册-->
    <insert id="add" >
        insert into login(user_name,password,tel) values(#{username},#{password},#{tel});
    </insert>

    <!--根据用户名判断账户是否存在-->
    <select id="selectByName" resultMap="userResultMap">
        select * from login where user_name=#{username};
    </select>
</mapper>

4. ツールクラスを作成する

コードの冗長性を避けるために必要なセッション ファクトリは 1 つだけであるため、セッション ファクトリを取得するためにセッション ファクトリ ツール クラスが作成されます。

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;
    }
}

5. ログインと登録のビジネス ロジックを処理するサーブレット パッケージを作成します。

ログイン操作:

@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("<h1>登陆成功</h1>");
        }else {
            writer.write("<h1>登录失败</h1>");
        }

    }

    @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("<h1>注册成功</h1>");
        }else {
            writer.write("<h1>注册失败,账户已存在</h1>");
        }
    }

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

7. プロジェクト表示

 

フロントエンドのリソースが必要な場合は、プライベート メッセージを送信してください

おすすめ

転載: blog.csdn.net/m0_56044262/article/details/126331989