我是java的新手,我只是尝试从Deployment Descriptor文件(web.xml)中读取初始化参数,但是出现了上述错误?
我的web.xml
和附带快照的java文件编码编码。
我的指导结构是
c:\....tomcat\webapps\dd\web-inf\classes
java类文件中没有错误。
成功编译的Java文件代码
import java.io.*;
import java.net.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class MyServlet2 extends HttpServlet {
String fileName;
public void init(ServletConfig config) throws ServletException {
super.init(config);
fileName = config.getInitParameter("logfilename");
}
protected void doGet(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
processRequest(request, response);
}
protected void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException, IOException {
processRequest(request, response);
}
protected void processRequest(HttpServletRequest request,HttpServletResponse
response)throws ServletException, IOException {
PrintWriter out = response.getWriter();
out.println(fileName);
out.close();
}
}
的web.xml
<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app>
<servlet>
<servlet-name>MyServlet2</servlet-name>
<servlet-class>MyServlet2</servlet-class>
<init-param>
<param-name>logfilename</param-name>
<param-value>value1</param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>MyServlet2</servlet-name>
<url-pattern>/mc11</url-pattern>
</servlet-mapping>
</web-app>
答案 0 :(得分:5)
目前我可以看到两个问题......
您目前有:
//定义param1 参数1 值1
这不是你如何定义参数。您应该指定包含参数名称的param-name
元素,而不是将参数名称用作XML元素名称。
<init-param>
<param-name>logfilename</param-name>
<param-value>...</param-value>
</init-param>
另请注意,//
不是您在XML中撰写评论的方式 - 如果您想要评论,则应该:
<!-- Define the first parameter -->
<init-param>
<param-name>logfilename</param-name>
<param-value>...</param-value>
</init-param>
(param-value
元素应该是一个提示 - 如果你真的可以指定自己的元素,我预期<logfilename>value in here</logfilename>
- 将名称指定为元素名称,但是使用固定元素名称param-value
指定的值将是一个奇怪的方案。)
目前您的映射是:
<servlet-name> FormServlet</servlet-name>
<url-pattern>/ss/</url-pattern>
</servlet-mapping>
我怀疑地图不匹配http://localhost:8080/dd/ss/s.html
,因为你没有任何通配符 - 你可能会发现它与完全匹配 {{1 }}。我不清楚http://localhost:8080/dd/ss/
部分的来源,但我认为这是您配置的一个独立部分。你应该试试:
dd
如果这不适用于<!-- I would recommend removing the space from the servlet
- name *everywhere*. -->
<servlet-name>FormServlet</servlet-name>
<url-pattern>/ss/*</url-pattern>
</servlet-mapping>
,请查看它是否映射http://localhost:8080/dd/ss/s.html
- 可能是您的引擎未按其他方式进行配置。
答案 1 :(得分:0)
代码没有问题,我尝试使用net beans工具并在上面的代码的帮助下完成了任务。之前可能是tomcat中的问题。