Ядро JavaWeb, комплексные кейсы (подробности! Процесс веб-разработки)

Оглавление

Описание случая

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

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 и помещается в папку ресурсов ресурсов.

<?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.

 Полный агент Mapper

4. IDEA настраивает Tomcat

В  Web Core есть четкие инструкции.Уделите внимание настройке Deployment и импорту 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. Создайте класс инструмента

Поскольку во избежание избыточности кода необходима только одна фабрика сеансов, для получения фабрики сеансов создается класс инструмента фабрики сеансов.

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