最近学习Servlet,遇到一些问题,然后解决了,发出来希望能帮到遇到同样问题的人。
编译器idea,maven管理,服务器tomcat
首先有一个登录页面,我们希望获得用户在其表单中输入的值
login.html代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<form action="/lesson/cookieServlet" method="get">
<b>username: </b><input type="text" name="username"><br>
<b>password: </b><input type="password" name="password" ><br>
<input type="submit" value="登录"><br>
</form>
</body>
</html>
点击提交后会访问我们创建的servlet(我这个类的名字时cookieServlet,不过和cookie没关系,我就是乱起名字的)然后写上注解/cookieServlet(注解是自定义的)
package com.demo.homework;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
@WebServlet("/cookieServlet")
public class CookieServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html;charset=UTF-8");
String username = req.getParameter("username");
String password = req.getParameter("password");
System.out.println("username:"+username);
System.out.println("password:"+password);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
}
然后呢我遇到的问题是,最开始的时候在action这个地方写的是注解,没有加项目名,出现了错误
错误表现出来的样子就是,你填写了表单点提交之后,发现不能跳转到servlet,浏览器说没有找到页面,然后看url,发现url里面没有项目名,这个时候在url中加入项目名就可以跳转了,奇怪的事情就是,我在网络上搜索的时候,一般都是直接下面的第一种情况,但是我用第二种情况才能成功,具体的原因还不知道。(下面两种情况是填在action引号里面不同的内容,第一种错误,第二种正确)
lesson/cookieServlet
/lesson/cookieServlet
网上都说在action中/开头就是绝对地址,直接写注解名字就是相对地址,总之如果你遇到了相同的问题,然后刚好看到了我这篇文章的话,能帮到你很开心。
如果你也是初学JavaWeb的话,遇到一些其他的问题可以发在评论区,如果我知道的话会继续发帖子,大家都加油加油!
我也是初学,不是很懂,如果我的贴子里面有错误,希望可以指出。