JAVA WEB前段应用

在TeacherServlet中使用注解设置Servlet初始化参数(initParams),stuName=“张三”,score = "92";在doGet方法中获取到两个参数信息,并将参数信息作为属性封装在ServletContext中;在StudentServlet中获取ServletContext属性值,并响应到前端web页面中。要求TeacherServlet使用注解进行属性配置,StudentServlet使用web.xml进行属性配置。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
首先,我们需要在TeacherServlet中使用注解设置Servlet初始化参数。这里我们使用@WebInitParam注解来设置initParams。

import javax.servlet.annotation.WebServlet;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.http.HttpServlet;

@WebServlet(name = "TeacherServlet", urlPatterns = "/teacher")
public class TeacherServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    @WebInitParam(name = "stuName", value = "张三")
    @WebInitParam(name = "score", value = "92")
    private String stuName;
    private String score;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.stuName = request.getParameter("stuName");
        this.score = request.getParameter("score");
        // 将参数信息作为属性封装在ServletContext中
        ServletContext context = getServletContext();
        context.setAttribute("stuName", stuName);
        context.setAttribute("score", score);
    }
}

接下来,我们需要在StudentServlet中使用web.xml进行属性配置。

<web-app>
    <!-- 其他配置 -->

    <servlet>
        <servlet-name>StudentServlet</servlet-name>
        <servlet-class>com.example.StudentServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>StudentServlet</servlet-name>
        <url-pattern>/student</url-pattern>
    </servlet-mapping>

    <context-param>
        <param-name>stuName</param-name>
        <param-value>张三</param-value>
    </context-param>

    <context-param>
        <param-name>score</param-name>
        <param-value>92</param-value>
    </context-param>
</web-app>

最后,在StudentServlet的doGet方法中获取ServletContext属性值,并响应到前端web页面中。

import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class StudentServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取ServletContext属性值
        ServletContext context = getServletContext();
        String stuName = (String) context.getAttribute("stuName");
        String score = (String) context.getAttribute("score");

        // 响应到前端web页面中
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        out.println("<!DOCTYPE html>");
        out.println("<html>");
        out.println("<head>");
        out.println("<title>学生信息</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>学生信息</h1>");
        out.println("<p>学号:" + stuName + "</p>");
        out.println("<p>成绩:" + score + "</p>");
        out.println("</body>");
        out.println("</html>");
        out.close();
    }
}

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

【以下回答由 GPT 生成】

首先,可以通过在TeacherServlet中使用@WebServlet注解来设置Servlet的URL映射和初始化参数。示例代码如下:

@WebServlet(urlPatterns = "/teacher", initParams = {
        @WebInitParam(name = "stuName", value = "张三"),
        @WebInitParam(name = "score", value = "92")
})
public class TeacherServlet extends HttpServlet {
    // ...

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取初始化参数的值
        String stuName = getServletConfig().getInitParameter("stuName");
        String score = getServletConfig().getInitParameter("score");

        // 将参数封装在ServletContext中
        ServletContext servletContext = getServletContext();
        servletContext.setAttribute("stuName", stuName);
        servletContext.setAttribute("score", score);

        // ...
    }
}

然后,在StudentServlet中,可以使用web.xml配置属性。在web.xml中添加一个对应的和配置,示例如下:

<servlet>
    <servlet-name>studentServlet</servlet-name>
    <servlet-class>com.example.StudentServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>studentServlet</servlet-name>
    <url-pattern>/student</url-pattern>
</servlet-mapping>

在StudentServlet类中获取ServletContext中的属性值,并响应到web页面中。示例代码如下:

public class StudentServlet extends HttpServlet {
    // ...

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 获取ServletContext中的属性值
        ServletContext servletContext = getServletContext();
        String stuName = (String) servletContext.getAttribute("stuName");
        String score = (String) servletContext.getAttribute("score");

        // 响应到web页面中
        PrintWriter out = response.getWriter();
        out.println("<html>");
        out.println("<head><title>学生信息</title></head>");
        out.println("<body>");
        // ...
        out.println("<p>学生姓名:" + stuName + "</p>");
        out.println("<p>分数:" + score + "</p>");
        // ...
        out.println("</body></html>");
    }
}

这样就可以实现在TeacherServlet中使用注解配置属性,而在StudentServlet中使用web.xml配置属性的需求。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^