Jsp Servlet错误:请求的资源不可用
我想手动部署和执行web应用程序 目录结构: webapps>Simple程序(包含Servlet和JSP文件)>WEB\u-INF(包含WEB.xml)>classes(包含类) Servlet:ServletClassCalledJsp Servlet错误:请求的资源不可用,jsp,servlets,http-status-code-404,Jsp,Servlets,Http Status Code 404,我想手动部署和执行web应用程序 目录结构: webapps>Simple程序(包含Servlet和JSP文件)>WEB\u-INF(包含WEB.xml)>classes(包含类) Servlet:ServletClassCalled import java.io.IOException; import javax.servlet.http.*; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServle
import java.io.IOException;
import javax.servlet.http.*;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.*;
import java.io.PrintWriter;
import java.util.*;
@WebServlet("/ServletClassCalled")
public class ServletClassCalled extends HttpServlet {
private static final long serialVersionUID = 1L;
public void doGet (HttpServletRequest request,HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
String username = request.getParameter("username");
String chkValues[] = request.getParameterValues("chk1");
pw.write("Success");
pw.write(username);
pw.write("Chk Val 1 "+chkValues[0]+" Chk Val 2 "+chkValues[1]);
}
public void doPost (HttpServletRequest request,HttpServletResponse response) throws IOException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
Enumeration headerNames = request.getHeaderNames();
while(headerNames.hasMoreElements()) {
String paramName = (String)headerNames.nextElement();
out.print(paramName);
String paramValue = request.getHeader(paramName);
out.println(paramValue);
}
}
}
JSP:index.JSP
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Insert title here</title>
</head>
<body>
<h1>Simple App</h1>
<form method="get" action="ServletClassCalled">
User Name : <input type="text" name="username" /><br/>
Hobbies: <input type="checkbox" name="chk1" value="Coding" /> Coding <input type="checkbox" name="chk1" value="Sleeping" /> Sleeping<br/>
<input type="submit" name="submit" value="submit" />
</form>
<hr/>
<form method="post" action="ServletClassCalled">
<input type="submit" name="submit" value="submit" />
</form>
</body>
</html>
在此处插入标题
简单应用程序
用户名:
爱好:编码睡眠
部署描述符:web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
version="3.0"
metadata-complete="true">
<!-- Define servlets that are included in the example application -->
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>ServletClassCalled</servlet-name>
<servlet-class>ServletClassCalled</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>ServletClassCalled</servlet-name>
<url-pattern>/ServletClassCalled</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>GetHeader</servlet-name>
<servlet-class>GetHeader</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GetHeader</servlet-name>
<url-pattern>/GetHeader</url-pattern>
</servlet-mapping>
</web-app>
index.jsp
ServletClassCalled
ServletClassCalled
ServletClassCalled
/ServletClassCalled
GetHeader
GetHeader
GetHeader
/GetHeader
由于我在欢迎列表中列出了索引文件,所以它显示正确,但当我尝试提交表单时,它显示错误
我忘了关闭web.xml中的标记。现在它工作正常。对于更新的Servlet版本3.0 它提供了使用包在内部映射servlet的特性
- javax.servlet.annotation.WebServlet李>
- @WebServlet(“/ServletClassCalled”)
因此,如果您正在使用servlet 3.0,则无需在web.xml文件中编写servlet的映射。请检查发布操作的URL。@LuiggiMendoza:在提交的表单上。我做错了吗?好的,那么请发布stacktrace或您收到的其他错误消息。另外,如果您使用的是Servlet 3.0,则不需要两次声明Servlet:使用注释或在web.xml中以不同的名称声明它?它的类文件位于deloyed webapp结构中的何处?为什么要使用web.xml和注释来定义和映射servlet(可以完全删除web.xml文件)@JBNizet:我已经给出了上述问题中的目录结构。