软件工程作业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);
}
问题和解决办法
- 数据传输问题
在数据传输的过程中,出现到后端json字符串为空的情况.本来以为是出现了跨域问题,就在拦截其中加入了常规处理跨域问题的代码,但是依然没有解决问题
后来设置了请求的格式用'POST'的方式请求,最后解决问题 - 使用ai不顺利
在ai辅助开发的过程中,我习惯将模板化,套路化,只需要简单修改变量名的一类代码交给ai处理,但当我让ai生成service层的代码时,他使用了spring的技术
来生成代码,我无法使用,后来让他参考我之前的代码来书写,得到了想要的结果 - 在app前端,有不少标签和html不同
比如超链接要用navigator需要注意

浙公网安备 33010602011771号