您好我有一个嵌入式Tomcat java应用程序。 tomcat启动并显示index.jsp。
现在我有一个An 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(字符串,字符串,字符串)方法将servlett添加到Tomcat中?;
如果我在我的webapp的基本文件夹中创建一个login.jsp并且我将ajax请求的url更改为login.jsp,那么它是有效的。
由于
答案 0 :(得分:0)
问题在于extension SignalProducer where SignalProducer.Error: Swift.Error {
static func from(promise: Promise<Value>) -> SignalProducer<Value, Error> {
return SignalProducer { (observer: Observer<Value, Error>, disposable: Disposable) in
promise.then { value -> () in
observer.send(value: value)
observer.sendCompleted()
}.catch { (error: Swift.Error) -> Void in
observer.send(error: error as! Error)
}
}
}
}
调用中的参数url: '/login'
,因为$.ajax()
(斜杠符号)在http://localhost:8080/login
中发出请求。
您很可能期望它像/
。要实现此目的,请从http://localhost:8080/MyServletApp/login
删除/
。
ajax函数调用如下所示:
url
答案 1 :(得分:0)
问题解决了 首先,我发现Annotation的Web.xml版本高于3.0。所以我试图将我的Web.xml版本设置为3.1。 Tomcat拒绝接受,所以我在web.xml中进行了servlet映射