servlet 接收参数 - 状态 404 [重复]
Posted
技术标签:
【中文标题】servlet 接收参数 - 状态 404 [重复]【英文标题】:servlet receiveing parameters - Status 404 [duplicate] 【发布时间】:2018-06-02 04:57:44 【问题描述】:我有一个包含一些代码的 Song servlet,然后将请求发送到 songList.jsp,并且歌曲的标题在页面中列出。这工作正常。但是,在 songList.jsp 中,我为每首歌曲定义了一个 url,但是当点击 url 时,它会出现:
HTTP Status 404 – Not Found
Description The origin server did not find a current representation for the target resource or is not willing to disclose that one exists.
你知道问题出在哪里吗?
Song Servlet
@WebServlet(name ="Song", urlPatterns = "/Song")
// some code
request.setAttribute("result", result);
// some code then send the request
RequestDispatcher view=request.getRequestDispatcher("songList.jsp");
view.forward(request,response);
// songList.jsp
我正在页面中显示这首歌并且它可以正常工作
<c:forEach items="$result" var="item" varStatus="status">
<a href="/SongPage?name=$item[0].replace(" ","+")&id=$item[1]">$item[0]</a>
</h4>
<p class="card-text">$item[2]</p>
</c:forEach>
此链接应转到显示歌曲信息的页面,格式如下:
"http://localhost:8080/SongPage?name=Achtung&id=70"
但是点击的时候出现404错误。
然后我有一个 SongPage servlet:
@WebServlet(name ="/SongPage", urlPatterns = "/SongPage/name/*/id/*")
public class SongPage extends HttpServlet
public void init()
System.out.println("Song Servlet");
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
String name = request.getParameter("name").replace("+"," ");
String id = request.getParameter("id");
QueryManager qm = new QueryManager();
ArrayList<ArrayList<String>> result = qm.getSongInfo(name, id);
qm.closeConnections();
ArrayList<String> songInfo = result.get(0);
request.setAttribute("result", songInfo);
RequestDispatcher view=request.getRequestDispatcher("songPage.jsp");
view.forward(request,response);
然后我有 songPage.jsp 但对这个问题应该不重要。
【问题讨论】:
【参考方案1】:确实应该是404。@WebServlet(name ="/SongPage", urlPatterns = "/SongPage/name/*/id/*")
比较您上面的 urlPatterns 和您的链接“http://localhost:8080/SongPage?name=Achtung&id=70”。我对 GET 如何发送参数有基本的了解,你会意识到这一点。 ?name=Achtung&id=70
属于GET请求的参数。
@WebServlet(name ="/SongPage", urlPatterns = "/SongPage")
试试
【讨论】:
谢谢,首先我是这样使用的,但它出现了 404 错误,所以我正在寻找解决方案并使用 "/SongPage/name/*/id/*") 进行测试,但也不要工作。 @OzzyW "/SongPage/name/*/id/*" 完全错误,您检查 web.xml servlet 映射了吗?我想知道你为什么不输入@Override
?
感谢您的回答。在 web.xml 我没有任何映射。我使用 urlPatterns,是一样的吗?而@override 在哪一部分?
是的。没关系..@Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
谢谢,但似乎是同样的问题。以上是关于servlet 接收参数 - 状态 404 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
http状态404 - 在jsp中找不到,Tomcat服务器上的servlet [重复]
Java Servlet,http状态404,请求的资源不可用[重复]
Tomcat错误HTTP状态[404] - [未找到] [重复]