这是过滤器方法
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest)req; HttpServletResponse response = (HttpServletResponse)resp; HttpSession session = request.getSession(); String path = request.getRequestURI(); if(path.contains("login.jsp") || path.contains("/login") ||path.contains("register.jsp") ||path.contains("register") || path.contains("/DrawValidateCode") || path.contains("/layui") || path.contains("/image")){ chain.doFilter(req, resp); //登录页面,登录请求,验证码请求,前端资源和图片一律放行 }else{ String username = (String)session.getAttribute("username"); if (username == null){ //用户不存在一律重定向到登录页 response.sendRedirect(request.getContextPath() + "/login.jsp"); }else { chain.doFilter(req, resp); } } }
这个注册 @WebServlet(urlPatterns = "/addUser") public class RegisterServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.printf("1111111111111");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setCharacterEncoding("utf-8");
String jsonRegistration = RequestUtil.getRequestBody(req);
Gson gson = new Gson();
JsonObject jsonObject = new JsonParser().parse(jsonRegistration).getAsJsonObject();
String username = jsonObject.get("username").getAsString();
String password = jsonObject.get("password").getAsString();
resp.setContentType("application/json");
BaseResponse<Integer> baseResponse = new BaseResponse<Integer>();
boolean registrationSuccess = AdminDao.insertAdministrator(username, password);
if (registrationSuccess) {
baseResponse.setCode(200);
baseResponse.setMsg("注册成功");
resp.sendRedirect(req.getContextPath() + "/login.jsp");
} else {
baseResponse.setCode(500);
baseResponse.setMsg("注册失败,请重试");
}
PrintWriter out = resp.getWriter();
out.print(gson.toJson(baseResponse));
out.flush();
out.close();
}
}
前端就 layui' <script> layui.use(['form'], function(){ var form = layui.form;
form.on('submit(registrationForm)', function(data){
var formData = {
username: data.field.username,
password: data.field.password
};
$.ajax({
url: '/addUser',
type: 'POST',
data: JSON.stringify(formData),
success: function(res) {
if(res.code === 200) {
layer.msg('注册成功!');
window.location.href = '/login.jsp';
} else {
layer.msg('注册失败!');
}
},
error: function(error) {
layer.msg('注册请求失败:' + error.statusText);
}
});
return false;
});
});
</script>
就是进不了这个放 addUser 打断也调试了看不出问题
1
mgzu 2023-12-19 17:24:32 +08:00
github 整个 demo 先,这没法看
|
2
hemingyang OP |
3
hemingyang OP @mgzu 我上传了,大佬看看
|
4
fiveStarLaoliang 2023-12-19 18:38:37 +08:00
写惯了 springboot 项目, 现在遇到一个 jsp 的项目, 直接懵逼了, 都忘了怎么跑起来了
|
5
hemingyang OP @fiveStarLaoliang 我也是看得头大,哈哈,用 idea 摸索了会才运行起来
|
6
undeflife 2023-12-19 18:52:03 +08:00
不确定是不是这个原因
https://stackoverflow.com/questions/26089902/webservlet-annotation-doesnt-work-with-tomcat-8 web-app version 要大于 3 |
7
hemingyang OP @undeflife 不是这个原因,我就新加了注册方法,其实其他请求都正常,我怀疑
https://github.com/hemingyang/studentManagement/blob/main/src/main/java/com/zcx/studentManagement/filter/LoginFilter.java 这个过滤器的原因 |
8
fiveStarLaoliang 2023-12-19 19:12:01 +08:00
你把 path 打印一下呗, 看看请求的具体路径是什么
|
9
taogen 2023-12-19 19:22:52 +08:00
你请求的路径是什么?有没有加 Context Path ?
request URI = Context Path + Servlet Path + Path Info + Query String e.g. http://localhost:8080/myproject/myservlet/remove?id=1 - Context Path: `/myproject` - Servlet Path: `/myservlet` - Path Info: `/remove` - Query String: `?id=1` |
10
chanchan 2023-12-19 19:32:17 +08:00
看响应 404 ?估计路径不对
|
11
zoharSoul 2023-12-19 19:51:47 +08:00
要不咱还是整个 spring 吧
|
12
siweipancc 2023-12-19 21:11:18 +08:00
哇塞, 够原始, 我喜欢
|
13
javak 2023-12-19 22:51:49 +08:00 1
@hemingyang 这 demo 给的太不负责了啊。 整成 maven 或者 gradle 或者 ant 的项目,把依赖弄齐,然后说明怎么跑起来了。直接丢源码,让我们自己去补全依赖。
|
14
ikas 2023-12-19 23:30:44 +08:00
jdk17 加 tomcat8.5 测试了,可以访问到 addUser ,get 与 post 都可以
|
15
hemingyang OP |
16
hemingyang OP @ikas 我就想加个注册功能不知道为啥就是进不了方法
|
17
xuanbg 2023-12-20 08:30:52 +08:00
后端方法进不去可以肯定是路径的问题,盲猜是文件没有访问权限
|
18
hemingyang OP @xuanbg https://mjj.today/i/8TMDkO 这是请到后台的信息
|
19
hemingyang OP 解决了 直接改成了
<form class="layui-form" method="post" id="registrationForm" action="/addUser"> 原生的 action 没有 layui <script> layui.use(['form'], function(){ var form = layui.form; form.on('submit(registrationForm)', function(data){ var formData = { username: data.field.username, password: data.field.password }; $.ajax({ url: '/addUser', type: 'POST', data: JSON.stringify(formData), success: function(res) { if(res.code === 200) { layer.msg('注册成功!'); window.location.href = '/login.jsp'; } else { layer.msg('注册失败!'); } }, error: function(error) { layer.msg('注册请求失败:' + error.statusText); } }); return false; }); }); </script> |