用网站做数据库,浏览器网页游戏,建设部网站官网证书查询,模版pptDruid 登陆异常
问题描述#xff1a;页面登陆将请求参数放到请求体中导致无法通过request.getParameter 方式
服务加载流程 通过 DruidStatViewServletConfiguration 中方法 statViewServletRegistrationBean 初始化StatViewServlet
通过 com.alibaba.druid.support.jakarta…Druid 登陆异常
问题描述页面登陆将请求参数放到请求体中导致无法通过request.getParameter 方式
服务加载流程 通过 DruidStatViewServletConfiguration 中方法 statViewServletRegistrationBean 初始化StatViewServlet
通过 com.alibaba.druid.support.jakarta.ResourceServlet中的内部类ResourceHandler 解析tomcat拦截数据页面请求
请求命中
返回错误数据
页面展示 The username or password you entered is incorrect. 处理方案
处理一后端处理druid登陆账号密码通过请求体获取
后端添加这三个类LazyResourceServlet 重写tomcat HttpServlet 新增两个方法获取当前请求体数据然后通过请求体中获取账号、密码 /*** body中的数据类型 loginUsernamedruidloginPassworddruid** return body 中的参数属性*/public static String getParamsFromBody(String paramsKey) {return getRequestParamFromBody().get(paramsKey);}/*** 从body中解析出请求参数** return body中的请求参数*/public static MapString, String getRequestParamFromBody() {// DynamicLazyHttpBodyContextHolder 在 wu-framework-web 中 1.2.0以后的版本都支持当前上下文获取请求中的bodybyte[] requestBodyBytes DynamicLazyHttpBodyContextHolder.peek();// loginUsernamedruidloginPassworddruidString requestBody new String(requestBodyBytes);MapString, String paramMap new HashMap();for (String paramKeyValue : requestBody.split()) {String[] keyValue paramKeyValue.split();if (keyValue.length ! 2) {continue;}paramMap.put(keyValue[0], keyValue[1]);}return paramMap;}原先代码中通过 request.getParameter(PARAM_NAME_USERNAME) 替换成getParamsFromBody(PARAM_NAME_USERNAME);LazyStatViewServlet 重写实现 LazyResourceServlet 通过构造器初始化LazyResourceServlet DruidStatViewServletLoginByBodyConfiguration 初始化 LazyStatViewServlet
登陆效果 处理二前端处理将数据放到请求参数处理暂时不做演示
Lazy ORM框架地址
当前项目案例地址