3.7Servlet忘记实现HttpServlet接口处理【理解】
出现情况
在写Servlet时,忘记了实现HttpServlet接口
导致结果
在反射创建对象后,强转成HttpServlet时,会报类型转换异常
解决方案
在反射创建对象后,强转成HttpServlet前,进行判断如果有实现HttpServlet接口,就进行强转否则抛出一个异常
public class PropertiesParseServletConfig implements ParseServletConfig { @Override public void parse() { try { //1.读取配置文件中的数据 Properties properties = new Properties(); FileReader fr = new FileReader("http‐dynamic‐server/webApp/config/servlet‐info.properties"); properties.load(fr); fr.close(); //2.获取集合中servlet‐info的属性值 String properValue = (String) properties.get("servlet‐info"); // uri,全类名;uri,全类名 //3.解析 String[] split = properValue.split(";"); for (String servletInfo : split) { String[] servletInfoArr = servletInfo.split(","); String uri = servletInfoArr[0]; String servletName = servletInfoArr[1]; //我们需要通过servletName(全类名)来创建他的对象 Class clazz = Class.forName(servletName); //获取该类所实现的所有的接口信息,得到的是一个数组 Class[] interfaces = clazz.getInterfaces(); //定义一个boolean类型的变量 boolean flag = false; //遍历数组 for (Class clazzInfo : interfaces) { //判断当前所遍历的接口的字节码对象是否和HttpServlet的字节码文件对象相同 if(clazzInfo == HttpServlet.class){ //如果相同,就需要更改flag值.结束循环 flag = true; break; } } if(flag){ //true就表示当前的类已经实现了HttpServlet接口 HttpServlet httpServlet = (HttpServlet) clazz.newInstance(); //4.将uri和httpServlet添加到map集合中 ServletConcurrentHashMap.map.put(uri,httpServlet); }else{ //false就表示当前的类还没有实现HttpServlet接口 throw new NotImplementsHttpServletException(clazz.getName() + "NotImplements HttpServlet"); } } } catch (NotImplementsHttpServletException e) { e.printStackTrace(); }catch (Exception e) { System.out.println("解析数据异常....."); e.printStackTrace(); } }}
推荐阅读
- 多年前借鉴b/s优势实现基于.net的c/s框架
- 百度|车位级导航!百度地图助力重庆永川实现“停车自由”
- ipad密码忘记了怎么办?
- 苹果|苹果iOS 16照片新功能亮眼:一步实现抠图 PS弱爆了
- 食疗实现美白祛斑
- 忘记一个人需要屏蔽朋友圈吗?忘了屏蔽某人又不想删除朋友圈
- 拼多多用5年实现年GMV破万亿?拼多多用5年实现年GMV破万亿,但要盈利依然举步维艰
- 离职|为什么清朝无法实现近代化?西方学者:农业压倒一切,精英不在城市
- 保险箱密码忘记了怎么办 保险柜开启方法
- 行李箱密码忘记了怎么办 行李箱密码锁打不开怎么办