当前位置: 首页 > news >正文

项目进度

变为负进度了,还是要用baseservlet,我就又重新写了一部分,看了好几遍视频,突然就想明白了,感觉每次要上课,就时间不连续思路总是断,今天晚自习算是搞懂了怎么写了,就是代码有点多,写的有点慢一开始那个构架也挺难理解的(对我来说)


这是我cotroller类的代码,注册部分:

@WebServlet("/register") // 定义Servlet的URL映射
@MultipartConfig
public class RegisterController1 extends BaseServlet {SomeMethod someMethod=new SomeMethod();@ReturnType(ResponseType.JSON)@POST(value = "AddUser")public String AddUser(@FormData("username") String username, @FormData("password") String password, @FormData("email") String email) throws IOException, NoSuchAlgorithmException {RegisterMethod registerMethod=new RegisterMethod();return registerMethod.AddUser(username,password,email);

这是baseservlet部分:


@MultipartConfig
public class BaseServlet extends HttpServlet {@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {req.getQueryString();req.setCharacterEncoding("UTF-8");//用字符串记录发过来的请求(包括很多很多)String uri=req.getRequestURI();String methodName = new String(uri.substring(uri.lastIndexOf("/") + 1)).toString(); // 从 URI 中提取方法名System.out.println("获得的方法:"+methodName);Method method=null;//通过反射获取被继承的类里面的所有方法Method[] methods=this.getClass().getDeclaredMethods();//获取请求头,方便及进行接下来的操作String contentType =req.getContentType();ObjectMapper objectMapper=new ObjectMapper();JsonNode jsonNode = null;if (contentType != null && contentType.startsWith("multipart/form-data")){System.out.println("如果是文件就不进行改变");}else {
//处理JSON 数据部分jsonNode = objectMapper.readTree(req.getReader());}for (Method method1 : methods){if("POST".equals(req.getMethod())){System.out.println("进入了POST请求"+"获取到的方法名为:"+methodName);if(method1.getAnnotation(POST.class)==null) {continue;}if(method1.getAnnotation(POST.class).value().equals(methodName)){System.out.println("进入了具体的方法里面");method = method1;Parameter[] parameters = method.getParameters();System.out.println("参数列表为:"+ parameters.length)Object[] args = new Object[parameters.length];for(int i=0;i<parameters.length; i++){Annotation[] annotations = parameters[i].getAnnotations();if(annotations == null || annotations.length == 0) {if (parameters[i].getType() == HttpServletRequest.class) {args[i] = req;} else if (parameters[i].getType() == HttpServletResponse.class) {args[i] = resp;}}else {for(Annotation annotation:annotations){if(annotation instanceof Param){String name=((Param)annotation).value();args[i]= request.getParameter(name);System.out.println(args[i]);

方法类:


public class SomeMethod {public User addUser(String UserName, String Email, String Password) throws IOException {//新增账号User user = new User();user.setUserName(UserName);user.setEmail(Email);user.setPassword(Password);//1.获取SqlSessionFactory//1.加载mybatis的核心配置文件,获取SqlSessionFaxtoryString resource = "mybatis-config.xml";InputStream inputStream = Resources.getResourceAsStream(resource);SqlSessionFactory sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);//2.获取SqlSession 对象,用它来执行sqlSqlSession sqlSession = sqlSessionFactory.openSession();//在这里面其实是可以写true或者false的没写为f表示要手动提交//3.1获取UserMapper接口的代理对象UserMapper userMapper = sqlSession.getMapper((UserMapper.class));userMapper.add(user);//提交事务sqlSession.commit();//5.释放资源sqlSession.close();return user;}

http://www.lryc.cn/news/436579.html

相关文章:

  • Android的内核
  • Github Wiki 超链接 转 码云Gitee Wiki 超链接
  • Android10源码刷入Pixel2以及整合GMS
  • wpf触发与模板的使用示例:批量生产工具
  • brew install node提示:Error: No such keg: /usr/local/Cellar/node
  • 记录一下gitlab社区版的安装教程
  • 20. 如何在MyBatis中处理多表关联查询?常见的实现方式有哪些?
  • 【百日算法计划】:每日一题,见证成长(013)
  • PCL 读取和保存点云
  • js | TypeError: Cannot read properties of null (reading ‘indexOf’) 【解决】
  • 微信小程序-formData使用
  • 潜在语义分析(Latent Semantic Analysis,LSA)—无监督学习方法、非概率模型、判别模型、线性模型、非参数化模型、批量学习
  • 【安全漏洞】MySQL 8.0.33 、CVE-2023-22102
  • Flutter 响应式框架
  • 电脑AE特效软件 After Effects软件2017中文版下载安装指南 (Win/Mac)
  • C#中的装箱和拆箱是什么
  • 在 Debian 12 上安装中文五笔输入法
  • 整流器制造5G智能工厂物联数字孪生平台,推进制造业数字化转型
  • 算法知识点——常用输入输出数据的方式
  • 如何构建大数据治理平台,助力企业数据决策
  • Playwright与Selenium的对比:谁是更适合你的自动化测试工具?
  • Netty 相关问题
  • JAVA中线程池的详解
  • 【PyTorch单点知识】深入了解 nn.ModuleList和 nn.ParameterList模块:灵活构建动态网络结构
  • vscode创建Python虚拟环境无法激活问题处理
  • 【Go】Go语言中的基本数据类型与类型转换
  • 【Python中导入Tkinter模块创建计算器界面】
  • 中关村科金推出得助音视频鸿蒙SDK,助力金融业务系统鸿蒙化提速
  • 如何实现视频数据的PES打包和传输?
  • 【软考】程序设计语言基础