个人博客导航页(点击右侧链接即可打开个人博客):大牛带你入门技术栈
记录开发过程以及抄录改写的有意义原生代码(能记录多少是多少,以及当前认知范围内认为正确的东西)
登陆模块
设想:原生servlet编写相关接口,项目会模仿spring的扫描注入,原生JDBC,使用redis存储token
首先idea创建项目maven web project,项目名door,jdk1.8 ,应用服务器tomcat 9
复习一下web项目的流程:
1.应用服务器加载web.xml的context-param 以及 listener
模仿spring容器,先写一个conetxt-param ,context : application-context.xml
接下来实现ServletContextListener,该listener会在应用启动以及死亡的时候调用对应需要的实现方法
在初始化阶段把类似于spring 容器的我命为CONTEXT的一个单例对象进行实例化
@Override public void contextInitialized(ServletContextEvent servletContextEvent) { //获取容器配置并初始化 ServletContext servletContext = servletContextEvent.getServletContext(); String initParameter = servletContext.getInitParameter("context"); Context.setContextPath(initParameter); Context context = Context.getContext(); /* List list = AnnotationScanner.getAnnotationScanner().scanByAnnotation((String) context.getElement("controller-scan"), Controller.class); list.forEach(l->{ System.out.println(l); }); */ }
/** * @author RiceMan * @date 2020/3/19 0019 上午 9:31 */ public class Context { //单例模式 private static Context CONTEXT = null; private static String PATH = null ; private static Map<String ,Object> ELEMENTS = null ; //禁止被其他实例化 private Context(){}; // public static void setContextPath(String path){ PATH = path ; } //创建单例CONTEXT public static Context getContext() { try{ if (null==PATH){ throw new Exception("context-param:context不能为空"); } }catch (Exception e){ e.printStackTrace(); } return null==CONTEXT?init():CONTEXT ; } private static Context init(){ CONTEXT = new Context(); ELEMENTS = new HashMap<String ,Object>(); initContextElements(); return CONTEXT ; } private static void initContextElements() { try { InputStream ins = Context.class.getClassLoader().getResourceAsStream(PATH); SAXReader saxReader = new SAXReader(); Document doc = saxReader.read(ins); Element rootElement = doc.getRootElement(); rootElement.elements().forEach(e->{ System.out.println(e.getName()+e.attributeValue("value")); Context.ELEMENTS.put(e.getName(),e.attributeValue("value")); }); ins.close(); }catch (Exception e){ e.printStackTrace(); } } public Object getElement(String name ){ return ELEMENTS.get(name); } }
附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读/书籍书单大全:
(点击右侧 即可打开个人博客内有干货):技术干货小栈
=====>>①【Java大牛带你入门到进阶之路】<<====
=====>>②【算法数据结构+acm大牛带你入门到进阶之路】<<===
=====>>③【数据库大牛带你入门到进阶之路】<<=====
=====>>④【Web前端大牛带你入门到进阶之路】<<====
=====>>⑤【机器学习和python大牛带你入门到进阶之路】<<====
=====>>⑥【架构师大牛带你入门到进阶之路】<<=====
=====>>⑦【C++大牛带你入门到进阶之路】<<====
=====>>⑧【ios大牛带你入门到进阶之路】<<====
=====>>⑨【Web安全大牛带你入门到进阶之路】<<=====
=====>>⑩【Linux和操作系统大牛带你入门到进阶之路】<<=====天下没有不劳而获的果实,望各位年轻的朋友,想学技术的朋友,在决心扎入技术道路的路上披荆斩棘,把书弄懂了,再去敲代码,把原理弄懂了,再去实践,将会带给你的人生,你的工作,你的未来一个美梦。