Servlet笔记4--ServletConfig接口和ServletContext接口

ServletConfig接口:

 

 

 

ServletContext接口:

  

  代码详解:

  (1)web.xml配置文件:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 3          xmlns="http://java.sun.com/xml/ns/javaee" 
 4          xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" 
 5          id="WebApp_ID" version="2.5">
 6   
 7      <!-- web.xml文件中配置上下文参数,这些信息被自动封装到ServletContext对象中 -->
 8      <context-param>
 9          <param-name>username</param-name>
10          <param-value>admin</param-value>
11      </context-param>
12      
13      <context-param>
14          <param-name>password</param-name>
15          <param-value>123</param-value>
16      </context-param>
17  
18     <servlet>
19         <servlet-name>a</servlet-name>
20         <servlet-class>com.bjpowernode.javaweb.servlet.AServlet</servlet-class>
21         <!-- 初始化参数:被封装到ServletConfig对象中 -->
22         <init-param>
23             <param-name>driver</param-name>
24             <param-value>com.mysql.jdbc.Driver</param-value>
25         </init-param>
26         <init-param>
27             <param-name>url</param-name>
28             <param-value>jdbc:mysql://localhost:3306/bipowernode</param-value>
29         </init-param>
30         <init-param>
31             <param-name>user</param-name>
32             <param-value>root</param-value>
33         </init-param>
34         <init-param>
35             <param-name>password</param-name>
36             <param-value>123</param-value>
37         </init-param>
38     </servlet>
39     <servlet-mapping>
40         <servlet-name>a</servlet-name>
41         <url-pattern>/a</url-pattern>
42     </servlet-mapping>
43     
44     <servlet>
45         <servlet-name>b</servlet-name>
46         <servlet-class>com.bjpowernode.javaweb.servlet.BServlet</servlet-class>
47     </servlet>
48     <servlet-mapping>
49         <servlet-name>b</servlet-name>
50         <url-pattern>/b</url-pattern>
51     </servlet-mapping>
52 </web-app>

    (2) 前端页面:

 1 <html>
 2   <head>
 3     <title>ServletConfig接口</title>
 4   </head>
 5   <body>
 6       <a href="/prj-servlet-04/a">AServlet</a>
 7       <br><br>
 8       <a href="/prj-servlet-04/b">BServlet</a>
 9   </body>
10 </html>

    (3)辅助实体类:

 1 package com.bjpowernode.javaweb.entity;
 2 
 3 public class User {
 4     
 5     private String usercode;
 6     private String username;
 7 
 8     public String getUsercode() {
 9         return usercode;
10     }
11     
12     public void setUsercode(String usercode) {
13         this.usercode = usercode;
14     }
15     
16     public String getUsername() {
17         return username;
18     }
19     
20     public void setUsername(String username) {
21         this.username = username;
22     }
23 
24     @Override
25     public String toString() {
26         return "User [usercode=" + usercode + ", username=" + username + "]";
27     }
28     
29 }

    (4) Servlet程序:

  1 package com.bjpowernode.javaweb.servlet;
  2 
  3 import java.io.IOException;
  4 import java.io.PrintWriter;
  5 import java.util.Date;
  6 import java.util.Enumeration;
  7 
  8 import javax.servlet.Servlet;
  9 import javax.servlet.ServletConfig;
 10 import javax.servlet.ServletContext;
 11 import javax.servlet.ServletException;
 12 import javax.servlet.ServletRequest;
 13 import javax.servlet.ServletResponse;
 14 
 15 import com.bjpowernode.javaweb.entity.User;
 16 
 17 public class AServlet implements Servlet {
 18 
 19     private ServletConfig config;
 20 
 21     public void init(ServletConfig config) throws ServletException {
 22         this.config = config;
 23     }
 24 
 25     public void service(ServletRequest request, ServletResponse response)
 26             throws ServletException, IOException {
 27         
 28         response.setContentType("text/html;charset=UTF-8");
 29         PrintWriter out = response.getWriter();
 30         
 31         //获取ServletConfig
 32         ServletConfig config = getServletConfig();
 33         
 34         //获取Servlet Name
 35         String servletName = config.getServletName();
 36         out.print("<servlet-name>" + servletName + "</servlet-name>" + "<br><br>");
 37         
 38         //获取ServletContext,后面讲什么是ServletContext
 39         ServletContext application = config.getServletContext();
 40         out.print("ASevlet's ServletContext = " + application + "<br><br>");
 41         
 42         //通过当前Servlet初始化参数的name获取value
 43         /*String driver = config.getInitParameter("driver");
 44         String url = config.getInitParameter("url");
 45         String user = config.getInitParameter("user");
 46         String password = config.getInitParameter("password");*/
 47         
 48         //获取当前Servlet所有初始化参数的name,然后再根据name获取value
 49         @SuppressWarnings("unchecked")
 50         Enumeration<String> anames = config.getInitParameterNames();
 51         out.print("AServlet: <br>");
 52         while(anames.hasMoreElements()){
 53             String name = anames.nextElement();
 54             String value = config.getInitParameter(name);
 55             out.print(name + "=" + value);
 56             out.print("<br>");
 57         }
 58         out.print("<br>");
 59         
 60         //获取所有上下文(即当前Servlet的四周环境)初始化参数的name,然后再根据name获取value
 61         @SuppressWarnings("unchecked")
 62         Enumeration<String> snames = application.getInitParameterNames();
 63         out.print("ServletContext: <br>");
 64         while(snames.hasMoreElements()) {
 65             String name = snames.nextElement();
 66             String value = application.getInitParameter(name);
 67             out.print(name + "=" + value);
 68             out.print("<br>");
 69         }
 70         out.print("<br>");
 71         
 72         //获取文件绝对路径,参数必须是WebRoot的下一级目录开始写
 73         String realPath = application.getRealPath("/WEB-INF/resources/db.properties");
 74         out.print(realPath + "<br>");
 75         
 76         //创建User对象
 77         User user = new User();
 78         user.setUsercode("1231");
 79         user.setUsername("jackson");
 80         
 81         //向ServletContext范围中存储User数据
 82         application.setAttribute("userObj", user);
 83         application.setAttribute("time", new Date());
 84         
 85     }
 86     
 87     public void destroy() {
 88 
 89     }
 90     
 91     public ServletConfig getServletConfig() {
 92         return config;
 93     }
 94     
 95     public String getServletInfo() {
 96         return null;
 97     }
 98 
 99 
100 }
 1 package com.bjpowernode.javaweb.servlet;
 2 
 3 import java.io.IOException;
 4 import java.io.PrintWriter;
 5 
 6 import javax.servlet.Servlet;
 7 import javax.servlet.ServletConfig;
 8 import javax.servlet.ServletContext;
 9 import javax.servlet.ServletException;
10 import javax.servlet.ServletRequest;
11 import javax.servlet.ServletResponse;
12 
13 public class BServlet implements Servlet {
14 
15     private ServletConfig config;
16     
17     public void init(ServletConfig config) throws ServletException {
18         this.config = config;
19     }
20 
21     public void service(ServletRequest request, ServletResponse response)
22             throws ServletException, IOException {
23         
24         response.setContentType("text/html;charset=UTF-8");
25         PrintWriter out = response.getWriter();
26         
27         //init的时候已经获取过了config
28         out.println("BServlet's ServletConfig = " + config + "<br>");
29         
30         ServletContext application = config.getServletContext();
31         
32         Object obj1 = application.getAttribute("userObj");
33         Object obj2 = application.getAttribute("time");
34         out.print(obj1 + "<br>");
35         out.print(obj2 + "<br>");
36     }
37     
38     public void destroy() {
39 
40     }
41     
42     public ServletConfig getServletConfig() {
43         return config;
44     }
45     
46     public String getServletInfo() {
47         return null;
48     }
49 
50 
51 }

转载于:https://www.cnblogs.com/qjjazry/p/6370257.html

以下是对提供的参考资料的总结,按照要求结构化多个要点分条输出: 4G/5G无线网络优化与网规案例分析: NSA站点下终端掉4G问题:部分用户反馈NSA终端频繁掉4G,主要因终端主动发起SCGfail导致。分析显示,在信号较好的环境下,终端可能因节能、过热保护等原因主动释放连接。解决方案建议终端侧进行分析处理,尝试关闭节电开关等。 RSSI算法识别天馈遮挡:通过计算RSSI平均值及差值识别天馈遮挡,差值大于3dB则认定有遮挡。不同设备分组规则不同,如64T和32T。此方法可有效帮助现场人员识别因环境变化引起的网络问题。 5G 160M组网小区CA不生效:某5G站点开启100M+60M CA功能后,测试发现UE无法正常使用CA功能。问题原因在于CA频点集标识配置错误,修正后测试正常。 5G网络优化与策略: CCE映射方式优化:针对诺基亚站点覆盖农村区域,通过优化CCE资源映射方式(交织、非交织),提升RRC连接建立成功率和无线接通率。非交织方式相比交织方式有显著提升。 5G AAU两扇区组网:与三扇区组网相比,AAU两扇区组网在RSRP、SINR、下载速率和上传速率上表现不同,需根据具体场景选择适合的组网方式。 5G语音解决方案:包括沿用4G语音解决方案、EPS Fallback方案和VoNR方案。不同方案适用于不同的5G组网策略,如NSA和SA,并影响语音连续性和网络覆盖。 4G网络优化与资源利用: 4G室分设备利旧:面对4G网络投资压减与资源需求矛盾,提出利旧多维度调优策略,包括资源整合、统筹调配既有资源,以满足新增需求和提质增效。 宏站RRU设备1托N射灯:针对5G深度覆盖需求,研究使用宏站AAU结合1托N射灯方案,快速便捷地开通5G站点,提升深度覆盖能力。 基站与流程管理: 爱立信LTE基站邻区添加流程:未提供具体内容,但通常涉及邻区规划、参数配置、测试验证等步骤,以确保基站间顺畅切换和覆盖连续性。 网络规划与策略: 新高铁跨海大桥覆盖方案试点:虽未提供详细内容,但可推测涉及高铁跨海大桥区域的4G/5G网络覆盖规划,需考虑信号穿透、移动性管理、网络容量等因素。 总结: 提供的参考资料涵盖了4G/5G无线网络优化、网规案例分析、网络优化策略、资源利用、基站管理等多个方面。 通过具体案例分析,展示了无线网络优化中的常见问题及解决方案,如NSA终端掉4G、RSSI识别天馈遮挡、CA不生效等。 强调了5G网络优化与策略的重要性,包括CCE映射方式优化、5G语音解决方案、AAU扇区组网选择等。 提出了4G网络优化与资源利用的策略,如室分设备利旧、宏站RRU设备1托N射灯等。 基站与流程管理方面,提到了爱立信LTE基站邻区添加流程,但未给出具体细节。 新高铁跨海大桥覆盖方案试点展示了特殊场景下的网络规划需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值