• JavaWeb核心、综合案例(详细!Web开发流程)


    目录

    案例说明

    一、创建MavenWeb项目

    二、导入相关依赖

    1、导入maven编译插件

    2、导入tomacat插件

    3、导入servlet依赖

    4、导入druid数据库连接池依赖

    5、导入mysql依赖

    6、导入mybatis依赖

    7、导入junit依赖

    8、导入mybatis核心配置文件mybatis-config.xml

    9、导入MySql映射文件

    三、使用Mapper代理

    四、IDEA配置tomcat

    五、创建数据库

    六、开始编码

    1、创建实体类User

     2、在mapper接口中定义用户操作

    3、在mapper接口对应的SQL映射文件创建SQL语句

    4、创建一个工具类

    5、创建servlet包,处理登陆注册的业务逻辑

    登陆操作:

    注册操作:

    七、项目展示


    案例说明

    完成用户登录和用户注册逻辑,与后端数据库联系

     

    一、创建MavenWeb项目

    点击新建模块,勾选使用骨架快速搭建。

    二、导入相关依赖

    在pom.xml文件中删除无用的代码,导入项目需要的依赖。设置打包方式位war包

    1、导入maven编译插件

     声明编译的jdk版本,如果不导入插件,会报不支持发行版本5的错误

    1. <build>
    2. <plugins>
    3. <plugin>
    4. <groupId>org.apache.maven.pluginsgroupId>
    5. <artifactId>maven-compiler-pluginartifactId>
    6. <version>2.3.2version>
    7. <configuration>
    8. <source>1.8source>
    9. <target>1.8target>
    10. configuration>
    11. plugin>
    12. plugins>
    13. build>

    2、导入tomacat插件

    使maven可以直接编译tomcat的项目插件,选择性安装,只能支持到tomcat7

    1. <plugin>
    2. <groupId>org.apache.tomcat.mavengroupId>
    3. <artifactId>tomcat7-maven-pluginartifactId>
    4. <version>2.2version>
    5. <configuration>
    6. <port>80port>
    7. configuration>
    8. plugin>

    3、导入servlet依赖

    1. <dependencies>
    2. <dependency>
    3. <groupId>javax.servletgroupId>
    4. <artifactId>javax.servlet-apiartifactId>
    5. <version>3.1.0version>
    6. <scope>providedscope>
    7. dependency>

    4、导入druid数据库连接池依赖

    1. <dependency>
    2. <groupId>com.alibabagroupId>
    3. <artifactId>druidartifactId>
    4. <version>1.1.12version>
    5. dependency>

    5、导入mysql依赖

    1. <dependency>
    2. <groupId>mysqlgroupId>
    3. <artifactId>mysql-connector-javaartifactId>
    4. <version>5.1.34version>
    5. dependency>

    6、导入mybatis依赖

    1. <dependency>
    2. <groupId>org.mybatisgroupId>
    3. <artifactId>mybatisartifactId>
    4. <version>3.5.9version>
    5. dependency>

    7、导入junit依赖

    1. <dependency>
    2. <groupId>junitgroupId>
    3. <artifactId>junitartifactId>
    4. <version>3.8.2version>
    5. <scope>testscope>
    6. dependency>
    7. dependencies>

    8、导入mybatis核心配置文件mybatis-config.xml

    放入resources资源文件夹下。

    1. configuration
    2. PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-config.dtd">
    4. <configuration>
    5. <typeAliases>
    6. <package name="com.itheima.pojo"/>
    7. typeAliases>
    8. <environments default="development">
    9. <environment id="development">
    10. <transactionManager type="JDBC"/>
    11. <dataSource type="POOLED">
    12. <property name="driver" value="com.mysql.jdbc.Driver"/>
    13. <property name="url" value="jdbc:mysql://localhost:3306/users?useSSL=false&userServerPrepStmts=true"/>
    14. <property name="username" value="root"/>
    15. <property name="password" value="12345"/>
    16. dataSource>
    17. environment>
    18. environments>
    19. <mappers>
    20. <package name="com.itheima.mapper"/>
    21. mappers>
    22. configuration>

    9、导入MySql映射文件

    放入resources资源文件夹下。

    1. mapper
    2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. <mapper namespace="com.itheima.mapper.UserMapper">
    5. mapper>

    三、使用Mapper代理

    在java文件夹下创建一个mapper包,包下创建与SQL映射文件同名的mapper接口,在接口中声明操作数据库的方法,可以安装MyBatisX插件,实现方法与映射文件间的快速跳转。

     同时要在resource文件夹下创建一个与mapper接口包名 同名的文件夹,将SQL映射文件放入。

     完成Mapper代理

    四、IDEA配置tomcat

     Web核心 中有明确说明,注意要配置Deployment,导入war包。

    五、创建数据库

    id user_name password tel

     

    六、开始编码

    1、创建实体类User

    1. public class User {
    2. private Integer id;
    3. private String username;
    4. private String password;
    5. private String tel;
    6. public User() {
    7. }
    8. public User(String username, String password,String tel) {
    9. this.username = username;
    10. this.password = password;
    11. this.tel = tel;
    12. }
    13. public String getPassword() {
    14. return password;
    15. }
    16. public void setPassword(String password) {
    17. this.password = password;
    18. }
    19. public Integer getId() {
    20. return id;
    21. }
    22. public void setId(Integer id) {
    23. this.id = id;
    24. }
    25. public String getUsername() {
    26. return username;
    27. }
    28. public void setUsername(String username) {
    29. this.username = username;
    30. }
    31. public String getTel() {
    32. return tel;
    33. }
    34. public void setTel(String tel) {
    35. this.tel = tel;
    36. }
    37. }

     2、在mapper接口中定义用户操作

    1. public interface UserMapper {
    2. //根据用户名和密码查询用户对象
    3. User select(@Param("username") String username, @Param("password") String password);
    4. //注册用户
    5. int add(User user);
    6. //根据用户名查找是否存在
    7. User selectByName(@Param("username") String username);
    8. }

    3、在mapper接口对应的SQL映射文件创建SQL语句

    1. mapper
    2. PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
    3. "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    4. <mapper namespace="com.itheima.mapper.UserMapper">
    5. <resultMap id="userResultMap" type="user">
    6. <result column="user_name" property="username">result>
    7. resultMap>
    8. <select id="select" resultMap="userResultMap">
    9. select * from login where user_name=#{username} and password=#{password};
    10. select>
    11. <insert id="add" >
    12. insert into login(user_name,password,tel) values(#{username},#{password},#{tel});
    13. insert>
    14. <select id="selectByName" resultMap="userResultMap">
    15. select * from login where user_name=#{username};
    16. select>
    17. mapper>

    4、创建一个工具类

    由于整个的会话工厂只需要一个,避免代码冗余,创建会话工厂工具类用来得到会话工厂。

    1. public class SqlSessionFactoryUtils {
    2. //静态代码块随着类的创建而创建,且只创建一次,由于会话工厂只需要一个,所以用静态代码块
    3. //登录与注册的代码逻辑相同,采用工具类获取会话工厂,避免冗余
    4. private static SqlSessionFactory sqlSessionFactory;
    5. //静态代码块不能抛异常,使用异常捕获
    6. static {
    7. try {
    8. String resource = "mybatis-config.xml";
    9. InputStream inputStream = Resources.getResourceAsStream(resource);
    10. sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
    11. } catch (Exception e) {
    12. e.printStackTrace();
    13. }
    14. }
    15. public static SqlSessionFactory getSqlSessionFactory(){
    16. return sqlSessionFactory;
    17. }
    18. }

    5、创建servlet包,处理登陆注册的业务逻辑

    登陆操作:

    1. @WebServlet("/loginServlet")
    2. public class LoginServlet extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    5. //1、接收用户名和密码
    6. String username = req.getParameter("username");
    7. String password = req.getParameter("password");
    8. //2、使用Mybatis操作数据库
    9. //1、加载mybatis核心配置文件获取SqlSessionFactory
    10. SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
    11. //2、开启SqlSession对象
    12. //SqlSession不能写在工具类,因为SqlSession代表用户与数据库的连接,如果放在工具类,则所有用户共用同一个连接
    13. //这样无法管理事务,使多个用户之间产生影响
    14. SqlSession sqlSession = sqlSessionFactory.openSession();
    15. //3、获取Mapper接口的代理对象
    16. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    17. //4、执行接口方法(执行SQL语句)
    18. User user = userMapper.select(username,password);
    19. //5、释放资源
    20. sqlSession.close();
    21. //3、查看输出结果响应给用户
    22. resp.setContentType("text/html;charset=utf-8");
    23. PrintWriter writer = resp.getWriter();
    24. if (user != null){
    25. writer.write("

      登陆成功

      "
      );
    26. }else {
    27. writer.write("

      登录失败

      "
      );
    28. }
    29. }
    30. @Override
    31. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    32. this.doGet(req,resp);
    33. }
    34. }

    注册操作:

    1. @WebServlet("/addServlet")
    2. public class AddServlet extends HttpServlet {
    3. @Override
    4. protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    5. //解决post获取请求数据中文乱码问题
    6. req.setCharacterEncoding("UTF-8");
    7. //1、接收用户名、密码和手机号
    8. String username = req.getParameter("username");
    9. String password = req.getParameter("password");
    10. String tel = req.getParameter("tel");
    11. User user1 = new User(username,password,tel);
    12. //2、使用Mybatis操作数据库
    13. //1、加载mybatis核心配置文件获取SqlSessionFactory
    14. SqlSessionFactory sqlSessionFactory = SqlSessionFactoryUtils.getSqlSessionFactory();
    15. //2、开启SqlSession对象
    16. SqlSession sqlSession = sqlSessionFactory.openSession();
    17. //3、获取Mapper接口的代理对象
    18. UserMapper userMapper = sqlSession.getMapper(UserMapper.class);
    19. //4、执行接口方法(执行SQL语句)
    20. //先检查账户是否被注册
    21. int i = 0;
    22. User user = userMapper.selectByName(username);
    23. if (user == null){
    24. i = userMapper.add(user1);
    25. sqlSession.commit();
    26. }
    27. //5、释放资源
    28. sqlSession.close();
    29. //3、查看输出结果响应给用户
    30. resp.setContentType("text/html;charset=utf-8");
    31. PrintWriter writer = resp.getWriter();
    32. if (i > 0){
    33. writer.write("

      注册成功

      "
      );
    34. }else {
    35. writer.write("

      注册失败,账户已存在

      "
      );
    36. }
    37. }
    38. @Override
    39. protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    40. this.doGet(req,resp);
    41. }
    42. }

    七、项目展示

     

    需要前端资源请私信

  • 相关阅读:
    MOOS程序解析记录(6)uSimMarine解析2
    大语言模型的关键技术(二)
    关于python多线程的一些理解
    QT使用MSVC编译器时中文报错问题
    LeetCode --- 1967. Number of Strings That Appear as Substrings in Word 解题报告
    Spring Boot 的创建和运行
    人工智能/虚拟现实技术的工程伦理分析:以电影《头号玩家》为例
    通信原理板块——脉冲编码调制(PCM)
    C语言程序设计——题目:一个整数,它加上100后是一个完全平方数,再加上168又是一个完全平方数,请问该数是多少?
    【Java】实验二
  • 原文地址:https://blog.csdn.net/m0_56044262/article/details/126331989