gpt4 book ai didi

java - 如何在web.xml中配置参数并在页面上显示?

转载 作者:行者123 更新时间:2023-11-30 08:12:46 31 4
gpt4 key购买 nike

最近在练习java servlet编程,遇到了一个困扰我一段时间的问题。

请查看代码。在下面的代码中,我尝试计算 servlet 被访问的计数。我可以在 web.xml 中预先定义初始值,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" id="WebApp_ID" version="3.1">
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>

<servlet>
<servlet-name>Counter</servlet-name>
<servlet-class>SimpleCounter</servlet-class>
<init-param>
<param-name>initial</param-name>
<param-value>1000</param-value>
</init-param>
</servlet>

</web-app>

我在web.xml中注册了一个名为“Counter”的servlet,并在加载servlet时将参数“initial”配置为1000。并在 servlet 运行时显示 init() 方法中的参数:

package com;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/Counter")
public class SimpleCounter extends HttpServlet {

/**
* @see HttpServlet#HttpServlet()
*/
private static final long serialVersionUID = 1L;

int count;

public void init() throws ServletException{

//No luck with the saved state, check for an init parameter
String initial = this.getInitParameter("initial");
System.out.println(initial);
try{
count = Integer.parseInt(initial);

//print out the parameter
System.out.println(count);

return;
}catch(NumberFormatException e){
//default to initial count of '0'
count = 0;
}

}

protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int local_count;

response.setContentType("text/html");
PrintWriter out = response.getWriter();

synchronized(this){
local_count = count++;
}

out.println("Since loading (and with a possible initialization parameter figured in)");
out.println("SimpleCounterServlet has been accesed " + local_count + " times.");
}

public void destroy(){
super.destroy();
}

}

但是,当servlet加载时,控制台打印出null,我仍然无法找出一些问题。

Q1:如果我在代码中指定了 servlet 注释 @WebServlet("/Counter"),我还应该在 web.xml 文件中指定吗?

问题2:如何显示web.xml文件中配置的参数?

Q3:因为示例代码来自一本书,我不确定web.xml是指WEB-INF下的还是tomcat服务器下的,如下图所示: enter image description here

最佳答案

要打印 web.xml 文件中为 servlet 定义的初始化参数,您可以在 init 方法中使用以下代码片段。

    Enumeration<String> initializationParameters=this.getInitParameterNames();
while(initializationParameters.hasMoreElements()){
String parameterName=initializationParameters.nextElement();
System.out.println("Parameter Name:"+parameterName+" Parameter Value:"+this.getInitParameter(parameterName));
}

关于java - 如何在web.xml中配置参数并在页面上显示?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30137522/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com