Java servlett-Mapping

时间:2017-04-16 22:00:32

标签: java ajax tomcat servlets

您好我有一个嵌入式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,那么它是有效的。

由于

2 个答案:

答案 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映射