<7>ServletConfig 类

ServletConfig是Servlet的配置信息类,用于获取Servlet的别名、初始化参数及ServletContext对象。当Servlet首次被访问时,Tomcat会创建ServletConfig对象。在XML配置中,可以通过servlet-name定义Servlet别名,init-param设置初始化参数。在Servlet中,通过ServletConfig的getServletName()和getInitParameter()方法可以获取这些信息。实验结果显示,ServletConfig成功获取了配置的别名和初始化参数。

1.ServletConfig 类简介

  • ServletConfig 类是 Servlet 程序的配置信息类。
  • Servlet 程序和 ServletConfig 对象都是由 Tomcat 负责创建,我们负责使用。
  • Servlet 程序默认是第一次访问的时候创建,ServletConfig 是每个 Servlet 程序创建时,就创建一个对应的 ServletConfig 对 象

2.ServletConfig 类三大作用

  • 1、可以获取 Servlet 程序的别名 servlet-name 的值
  • 2、获取初始化参数 init-param
  • 3、获取 ServletContext 对象

例如Servlet在XML中的配置为:

 <servlet>
        <servlet-name>HelloServlet03</servlet-name>
        <servlet-class>com.xyh.servlet.HelloServlet03</servlet-class>
		<init-param>
            <!--是参数名-->
            <param-name>username</param-name>
            <!--是参数值-->
            <param-value>root</param-value>
        </init-param>
    </servlet>

    <servlet-mapping>
        <servlet-name>HelloServlet03</servlet-name>
        <url-pattern>/hello3</url-pattern>
    </servlet-mapping>

Servlet 中的代码:

public class HelloServlet03 extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

    }
    @Override
    public void init(ServletConfig config) throws ServletException {
        super.init(config);//这个必须要有
       //1、可以获取 Servlet 程序的别名 servlet-name 的值
        String servletName = config.getServletName();
        System.out.println("HelloServlet03 程序的别名是:" +servletName);

        //2、获取初始化参数 init-param
        String username = config.getInitParameter("username");
        System.out.println("初始化参数 username 的值是;" + username);
    }
}

实验结果:
在这里插入图片描述

messageForm.jsp <%@ page language="java" contentType="text/html; charset=utf-8"%> <html> <body> <% // 获取application中的访问计数器 Integer visitCount = (Integer) application.getAttribute("visitCount"); if(visitCount == null) visitCount = 0; visitCount++; application.setAttribute("visitCount", visitCount); %> <h2>留言板(总访问量:<%=visitCount%>)</h2> <form action="processMessage.jsp" method="post"> 姓名:<input type="text" name="username" /><br><br> 留言:<textarea name="message" rows="4" cols="50"></textarea><br><br> <input type="submit" value="提交留言" /> </form> </body> </html> processMessage.jsp <%@ page language="java" contentType="text/html; charset=utf-8"%> <%@ page import="java.util.List, java.util.ArrayList" %> <html> <body> <% // 设置字符编码 request.setCharacterEncoding("utf-8"); // 使用request对象获取表单数据 String username = request.getParameter("username"); String message = request.getParameter("message"); // 验证数据 if(username == null || username.trim().equals("") || message == null || message.trim().equals("")) { // 使用response对象重定向 response.sendRedirect("messageForm.jsp"); return; } // 使用session对象存储用户信息 session.setAttribute("user", username); // 使用application对象存储留言 List<String> messages = (List<String>) application.getAttribute("messages"); if(messages == null) { messages = new ArrayList<String>(); } messages.add("[" + new java.util.Date() + "] " + username + ": " + message); application.setAttribute("messages", messages); %> <h2>留言提交成功!</h2> <p>3秒后自动跳转到留言列表...</p> <% // 设置自动跳转 response.setHeader("Refresh", "3;url=messageList.jsp"); %> </body> </html> messageList.jsp <%@ page language="java" contentType="text/html; charset=utf-8"%> <%@ page import="java.util.List" %> <html> <head> <title>留言列表</title> </head> <body> <h2>留言列表</h2> <% // 使用application对象获取留言列表(指定泛型) List<String> messages = (List<String>) application.getAttribute("messages"); if(messages == null || messages.size() == 0) { // 使用out对象输出信息 out.println("<p>暂无留言</p>"); } else { // 使用增强for循环输出所有留言 out.println("<ul>"); for(String msg : messages) { out.println("<li>" + msg + "</li>"); } out.println("</ul>"); } %> <br> <a href="messageForm.jsp">返回留言板</a> </body> </html> 使用了哪些JSP对象
09-27
<?xml version="1.0" encoding="utf-8"?> <configuration> <connectionStrings> <add name="MySqlConnString" connectionString="Database=falink300;Data Source=localhost;User ID=root;Password=8888" /> <add name="MyDBType" connectionString="mysql" /> <add name="MyXmlPathString" connectionString="D:\config\File\" /> </connectionStrings> <appSettings> <add key="version" value="4.4.2"></add> <add key="IsLaunchComServer" value="False" /> <add key="FAServiceName" value="FAServer" /> <add key="IsWindowsService" value="False" /> <add key="IsLaunchRemotingServer" value="True" /> <add key="FAConfigurationURL" value="" /> <add key="ConsoleRemotingURL" value="" /> <add key="RecipeApproveLevel" value="1" /> <add key="ctcserver" value="A"></add> <add key="faserver" value="A"></add> <add key="bridgeport" value="9002"></add> <add key="bridgeserver" value="bridgeserver"></add> <add key="RecipeApproveLevel" value="2"></add> <add key="bindTo" value="127.0.0.1"></add> <add key="pjobType" value="default"></add> <add key="Fix2971" value="False"></add> <add key="SubstrateProcessStateOffset" value="1"></add> <add key="commandtype" value="1"></add> <add key="CheckDeviceID" value="False"></add> <add key="ConnectWithoutS1F13" value="False"></add> <add key="EventFireToCTC" value="False"></add> <add key="SpoolMsg" value="6:1,11;"></add> <add key="MaxSpooledCount" value="50"></add> <add key="Heartbeat" value="LinkTest"></add> <add key="EstablishByHeartbeat" value="False"></add> <add key="DownloadRecipeFormat" value="string"></add> <!--<add key="seteventidoffset" value="400000000"></add>--> <!--Chinese: utf-8; English: us-ascii--> <add key="ChineseEncoding" value="us-ascii"></add> <add key="ThreadPoolMinCount" value="30"></add> <add key="S1F3DelayTime" value="1000"></add> <add key="nicid" value="1"></add> <add key="00000000-0000-0000-0000-000000000001" value="3"></add> <add key="00000000-0000-0000-0000-000000000002" value="3"></add> </appSettings> <startup> <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" /> </startup> </configuration>解释这个配置文件,每一行的作用
07-25
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值