JavaWeb核心、综合案例(详细!Web开发流程)
作者:mmseoamin日期:2023-12-25

目录

案例说明

一、创建MavenWeb项目

二、导入相关依赖

1、导入maven编译插件

2、导入tomacat插件

3、导入servlet依赖

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

5、导入mysql依赖

6、导入mybatis依赖

7、导入junit依赖

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

三、使用Mapper代理

导入MySql映射文件 XXXMapper.xml

 创建mapper接口

四、IDEA配置tomcat

五、创建数据库

六、开始编码

1、创建实体类User

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

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

4、创建一个工具类

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

登陆操作:

注册操作:

七、项目展示


个人博客欢迎访问 ---  猿客栈

案例说明

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

一、创建MavenWeb项目

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

二、导入相关依赖

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

1、导入maven编译插件

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


    
      
        org.apache.maven.plugins
        maven-compiler-plugin
        2.3.2
        
          1.8
          1.8
        
      
    

2、导入tomacat插件

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


    org.apache.tomcat.maven
    tomcat7-maven-plugin
    2.2
    
        80
     

3、导入servlet依赖


   
     javax.servlet
     javax.servlet-api
     3.1.0
     provided
   

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


     com.alibaba
     druid
     1.1.12
   

5、导入mysql依赖


     mysql
     mysql-connector-java
     5.1.34
   

6、导入mybatis依赖


     org.mybatis
     mybatis
     3.5.9
   

7、导入junit依赖


     junit
     junit
     3.8.2
     test
   

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

放入resources资源文件夹下。





    
    
        
    
    
    
        
            
            
            
            
                
                
                
                
                
            
        
    
    
        
        
    

三、使用Mapper代理

导入MySql映射文件 XXXMapper.xml

文件名称为(操作的pojo实体类对象名称+Mapper).xml  放入resources资源文件夹下。






 创建mapper接口

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

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

 完成Mapper代理

四、IDEA配置tomcat

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

五、创建数据库

id user_name password tel

六、开始编码

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、在mapper接口中定义用户操作

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

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






    
        
        
        
    
    
    
    
    
        insert into login(user_name,password,tel) values(#{username},#{password},#{tel});
    
    
    

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、创建servlet包,处理登陆注册的业务逻辑

登陆操作:

@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("

登陆成功

"); }else { writer.write("

登录失败

"); } } @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("

注册成功

"); }else { writer.write("

注册失败,账户已存在

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

七、项目展示

 

需要前端资源请私信