gpt4 book ai didi

Java servlet 映射

转载 作者:行者123 更新时间:2023-11-28 23:21:14 25 4
gpt4 key购买 nike

您好,我有一个嵌入式 Tomcat Java 应用程序。 tomcat启动并显示index.jsp。

现在我有一个如下所示的 ajax 请求:

function auth(){
username = document.getElementById('login_username').value;
password = document.getElementById('login_pw').value;

if(username.length > 0 && password.length > 0){
$.ajax({
method: "POST",
url: '/login',
data: 'username=' + username + '&password=' + password
}).done(function(response){
console.log(response);
response = response.split(',');
if(response.length == 2){
window.location = response[1];
}
});
}

auth() 有效。但是每次我收到 404 错误。

应该获取请求的 servlet 如下所示:

@WebServlet(
name="login",
urlPatterns = {"/login","sites/login","login"}
)
public class LoginServlet extends HttpServlet{
private static final long serialVersionUID = 1L;
private ServletContext context;

public LoginServlet(){
super();
}

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Log.log("get");
resp.setContentType("text/html");
PrintWriter out=resp.getWriter();
Page p = new Page();
p.getBody().setContent("GET");
out.print(p.create());
}

@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
Log.log("Post");
resp.setContentType("text/html");
PrintWriter out=resp.getWriter();
Page p = new Page();
p.getBody().setContent("POST");
out.print(p.create());
}

public void init(ServletConfig config)throws ServletException{
this.context = config.getServletContext();
Log.log("Login servlet Initialized");
}
}

我的问题是,为什么这不起作用。我必须使用 tomcat.addServlet(string,string,string) 方法将 servlett 添加到 Tomcat 吗?;

如果我在我的 web 应用程序的基础文件夹中创建一个 login.jsp,并且如果我将 ajax 请求的 url 更改为 login.jsp,它就会工作。

谢谢

最佳答案

问题在于 $.ajax() 调用中的参数 url: '/login'http://localhost 中发出请求:8080/login 因为开头有 /(斜杠符号)。

您很可能期望它类似于 http://localhost:8080/MyServletApp/login。为此,请从 url 中删除 /

ajax 函数调用如下所示:

$.ajax({
method: "POST",
url: 'login',
data: 'username=' + username + '&password=' + password
}).done(function(response){
console.log(response);
response = response.split(',');
if(response.length == 2){
window.location = response[1];
}
});

关于Java servlet 映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43442605/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com