软件工程作业01---问题和解决办法

软件工程作业01---问题和解决办法

本次作业是要实现一个简单的登录页面和注册功能,难度不大,但是在实际开发中遇到了一些问题,下面详细介绍

1.项目介绍

本次开发主要实现登录和注册的功能,要求能够开发出app,前端的基本界面,实现后端对于数据库的操作,
前段用到了request, toNavigator,navigator,的基本知识来实现页面之间的跳转以及数据的传输

2.代码展示

在后端依然使用servlet技术分别书写pojo类.mapper层,service层以及servlet的代码,实现后端的业务逻辑.同时这里使用了ai辅助生成,来加快开发速度.

点击查看代码
package com.stdu.servlet;

import com.alibaba.fastjson.JSON;
import com.stdu.mapper.UserMapper;
import com.stdu.pojo.User;
import com.stdu.service.UserService;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.BufferedReader;
import java.io.IOException;

@WebServlet("/user/*")
public class UserServlet extends BaseServlet {
        UserService userService=new UserService();
    public void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        resp.setContentType("text/html;charset=utf-8");
        System.out.println("收到");
        BufferedReader reader = req.getReader();

        String json= reader.readLine();

        User user= JSON.parseObject(json,User.class);

        System.out.println(json);

        if(user==null||user.getUsername()==null||user.getPassword()==null){

            resp.getWriter().write("fail");

            return ;
        }
        user.setType("0");
       User user1 = userService.selectByUsername(user.getUsername());


        if(user1==null){

            resp.getWriter().write("fail");

            return ;

        }

        if(user.getPassword().equals(user1.getPassword())){
            System.out.println("hhhhahahah");
            resp.getWriter().write("success");

        }
         return ;

    }

    public void register(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        resp.setContentType("text/html;charset=utf-8");

        BufferedReader reader = req.getReader();

        String json= reader.readLine();

        User user= JSON.parseObject(json,User.class);
        user.setType("0");
        if(user==null||user.getUsername()==null||user.getPassword()==null){
            resp.getWriter().write("fail");
        }
        else {
            userService.addUser(user);
            resp.getWriter().write("success");
        }

    }


}

点击查看代码
package com.stdu.service;

import com.stdu.mapper.UserMapper;
import com.stdu.pojo.User;
import com.stdu.util.SqlSessionFactoryUtils;
import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import java.util.List;

public class UserService {

    private final SqlSessionFactory factory = new SqlSessionFactoryUtils().getSqlSessionFactory();

    // 查询所有用户
    public List<User> selectAllUsers() {
        try (SqlSession session = factory.openSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            return mapper.selectAllUsers();
        } // try-with-resources自动关闭session
    }

    // 添加用户(带重复检查)
    public void addUser(User user) {
        try (SqlSession session = factory.openSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);

            // 检查用户名是否已存在
            User existUser = mapper.selectByUsername(user.getUsername());
            if (existUser != null) {
                throw new RuntimeException("用户名已存在: " + user.getUsername());
            }

            mapper.insertUser(user);
            session.commit();
        }
    }

    // 根据用户名删除用户
    public void deleteUser(String username) {
        try (SqlSession session = factory.openSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            mapper.deleteByUsername(username);
            session.commit();
        }
    }

    // 更新用户信息
    public void updateUser(User user) {
        try (SqlSession session = factory.openSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);

            // 验证用户存在性
            User existUser = mapper.selectByUsername(user.getUsername());
            if (existUser == null) {
                throw new RuntimeException("用户不存在: " + user.getUsername());
            }

            mapper.updateUser(user);
            session.commit();
        }
    }

    // 按用户名查询
    public User selectByUsername(String username) {
        try (SqlSession session = factory.openSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            return mapper.selectByUsername(username);
        }
    }

    // 按类型查询
    public List<User> selectUsersByType(String type) {
        try (SqlSession session = factory.openSession()) {
            UserMapper mapper = session.getMapper(UserMapper.class);
            return mapper.selectUsersByType(type);
        }
    }

}

点击查看代码
package com.itheima.mapper;

import com.itheima.pojo.Brand;
import org.apache.ibatis.annotations.*;

import java.util.List;

public interface BrandMapper {
    @Select("select * from tb_brand")
    @ResultMap("brandResultMap")
    List<Brand> SelectAll();
    @Insert("INSERT INTO tb_brand (brand_name, company_name, ordered, description, status) VALUES (#{brandName}, #{companyName}, #{ordered}, #{description}, #{status})")
    void addBrand(Brand brand);

    @Delete("delete from tb_brand where brand_name=#{brandName}")
    void deleteBrand(Brand brand);
    @Update("UPDATE tb_brand SET brand_name = #{brandName}, company_name = #{companyName}, ordered = #{ordered}, description = #{description}, status =#{status} WHERE brand_name = #{brandName}")

    void changeBrand(Brand brand);

}

问题和解决办法

  1. 数据传输问题
    在数据传输的过程中,出现到后端json字符串为空的情况.本来以为是出现了跨域问题,就在拦截其中加入了常规处理跨域问题的代码,但是依然没有解决问题
    后来设置了请求的格式用'POST'的方式请求,最后解决问题
  2. 使用ai不顺利
    在ai辅助开发的过程中,我习惯将模板化,套路化,只需要简单修改变量名的一类代码交给ai处理,但当我让ai生成service层的代码时,他使用了spring的技术
    来生成代码,我无法使用,后来让他参考我之前的代码来书写,得到了想要的结果
  3. 在app前端,有不少标签和html不同
    比如超链接要用navigator需要注意
posted @ 2025-03-12 12:01  元始天尊123  阅读(19)  评论(0)    收藏  举报