servlet 接收参数 - 状态 404
servlet receiveing parameters - Status 404
我有一个带有一些代码的 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.
你知道问题出在哪里吗?
歌曲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>
这 link 应该转到显示歌曲信息的页面,并具有以下格式:
"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 但对于这个问题应该不重要。
确实应该是404。@WebServlet(name ="/SongPage", urlPatterns = {"/SongPage/name/*/id/*"})
比较上面的 urlPatterns 和 link“http://localhost:8080/SongPage?name=Achtung&id=70”。如果您对 GET 如何发送参数有基本的了解,您就会意识到这一点。 ?name=Achtung&id=70
属于GET请求的参数。
尝试 @WebServlet(name ="/SongPage", urlPatterns = {"/SongPage"})
我有一个带有一些代码的 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.
你知道问题出在哪里吗?
歌曲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>
这 link 应该转到显示歌曲信息的页面,并具有以下格式:
"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 但对于这个问题应该不重要。
确实应该是404。@WebServlet(name ="/SongPage", urlPatterns = {"/SongPage/name/*/id/*"})
比较上面的 urlPatterns 和 link“http://localhost:8080/SongPage?name=Achtung&id=70”。如果您对 GET 如何发送参数有基本的了解,您就会意识到这一点。 ?name=Achtung&id=70
属于GET请求的参数。
尝试 @WebServlet(name ="/SongPage", urlPatterns = {"/SongPage"})