我有一个使用批注的简单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。 你能告诉我这段代码有什么问题吗?
答案 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);
}