我是java的新手,我只是尝试从Deployment Descriptor文件(web.xml)中读取初始化参数,但是出现了上述错误?
我web.xml
和java文件编码编码附加快照.
我的直接结构是
c:\....tomcat\webapps\dd\web-inf\classes
Run Code Online (Sandbox Code Playgroud)
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();
}
}
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
我目前可以看到两个问题......
你目前有:
//定义param1 param1 value1
这不是你定义参数的方式.您应该指定param-name
包含参数名称的元素,而不是将参数的名称用作XML元素名称.
<init-param>
<param-name>logfilename</param-name>
<param-value>...</param-value>
</init-param>
Run Code Online (Sandbox Code Playgroud)
另请注意,这//
不是您在XML中编写注释的方式 - 如果您想要注释,您应该:
<!-- Define the first parameter -->
<init-param>
<param-name>logfilename</param-name>
<param-value>...</param-value>
</init-param>
Run Code Online (Sandbox Code Playgroud)
(该param-value
元素应该是一个提示 - 如果你真的可以只指定自己的元素,我已经预料到<logfilename>value in here</logfilename>
- 将名称指定为元素名称,但使用固定元素名称指定的值param-value
将是一个奇怪的方案.)
目前您的映射是:
<servlet-name> FormServlet</servlet-name>
<url-pattern>/ss/</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)
我怀疑映射不匹配,http://localhost:8080/dd/ss/s.html
因为你没有任何通配符 - 你可能会发现它完全 匹配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>
Run Code Online (Sandbox Code Playgroud)
如果这不起作用http://localhost:8080/dd/ss/s.html
,请查看它是否映射http://localhost:8080/ss/s.html
- 可能是您的引擎未按照您在其他地方的预期配置.
归档时间: |
|
查看次数: |
692 次 |
最近记录: |