JSP中的@WebInitParam值为null

时间:2019-03-19 13:41:40

标签: java jsp servlets

我有一个使用批注的简单servlet,我要做的就是使用servlet初始化参数设置初始值。

SimpleServlet.java

@WebServlet(
        description = "A simple servlet", 
        urlPatterns = { 
                "/SimpleServlet"
        }, loadOnStartup=1, initParams = {
                @WebInitParam(name="maximum", value="1000")
        })
public class SimpleServlet extends HttpServlet {

@Override
    public void init(ServletConfig config) {
        System.out.println(config.getInitParameter("maximum"));
    }
}

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

index.jsp

<%@ page language="java" contentType="text/html; charset=US-ASCII"
    pageEncoding="US-ASCII"%>
<%
   out.print(config.getInitParameter("maximum"));
%>

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>Simple Servlet</display-name>
</web-app>

init方法将打印正确的1000。但是index.jsp输出null。 你能告诉我这段代码有什么问题吗?

1 个答案:

答案 0 :(得分:0)

@WebInitParam将为此Servlet初始化一个参数。因此,当您访问此servlet时,您具有param值,但是当您直接访问jsp时,该值为null。 因此,您应该通过访问URL /SimpleServlet通过servlet访问jsp页面。这将为您提供帮助:

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.getRequestDispatcher("/index.jsp").forward(request,response);
    }