耐心到最后!定有收获!
创建server类,(main)
工作流程:这个类启动Serversocket 服务器,网页点击登录,
(server类)
创建Request对象(使用输入流对网页的内容进行分解,获取到url,name的值,输入的密码的值,知道了是get请求还是post请求)
(request类)
创建Respons对象(传入了流,然后构造回馈网页的头文件)
(response类)
再调用WebAPP的得到url的方法(通过Request得到网页中的url,再与WebApp读取XML的url-pattern比较,然后得到对应的Class,知道了这个class是对应的LoginServer登录的功能,然后反射得到LoginServer对象)
两个实体类:Entity和Mapping,WebDom4j类读取XML,WebContext类有两个map集合可以存放两个对应的实体类,WebApp对WebDom4j的类进行提取,然后存放到WebContext,再创建对应的url--class:反射创建对象:server类和它的子类Loginservelet类
通过得到LoginServer对象,使用里面的写死的值进行判断,判断里面的值是否与自己定义的值的内容相同,成功返回登陆成功,将结果内容反馈到Respons的方法中进行打印,再用输出流输出到网页中,关闭。
每个类的详解:
首先需要建立对应的实体类 Entity 和 Mapping 类:
Entity 实体类的属性是(String) login 和 (String)class。
Mapping 实体类的属性是(String)login 和 (List) url。
我们需要写一个XML文件,上面的 serverletname 对应 serverletClass ,下面的 serverletname 对应多个 urlpattern
如图所示,这个时候就有些人会问我,我想要干什么,我想要做的是:
通过 url-pattern 获取到对应的 servelet-name,
再通过下面的 servelet-name 获取到上面名字相同的 servelet-name
最后通过 servelet-name 获取到 servelet-class 。然后再通过反射创建 对应的 servelet 对象
创建WebDom4j对XML的信息进行读取,
将上面的信息存入List<Entity>entityList集合中
将下面的信息存入 List<Mapping>mappingList集合中
创建ServeletContext类,这个类的作用是判断Entity和Mapping对应的关系(他们之间的联系是有相同的serverlet-name)
在这个类中创建两个map集合:
private Map<String, String>entityMap;//键:位 servelet-name value:servelet-class都存在与Entity中。
private Map<String, String>mappingMap;//键:url-pattern value:servelet-name(Mapping中)多个url-pattern对应同一个serverlet-name
创建WebApp类,这个类就是可以判断出不同的url,然后创建不同的serverlet对象,执行不同的功能
webApp是干什么的?
一:就是把WebDom4j读取XML文件的两个list,准确的关联到ServerletContext类里,因为Webdom4j读取的上面的的XML文 件,存取为一个EntityList,WebApp把这个EntityList拿出来,存放到ServerletContext 的 entityMap 集合里,一个 Serverlet-name 对应 Serverlet-class,所以键为Serverlet-name,值为Serverlet-class。
同理WebApp把WebDom4j读取的XML文件存取的MappingList的集合,把这个集合拿出来,存放到 ServerletContext 的mappingMap的集合里:这里多个 url-pattern 对应同一个 Serverlet-name ,所以键为url-pattern,值为 Serverlet-name。
二:写一个方法,根据传进来的url,先得到mappingMap的集合的Serverlet-name,在 通过这个Serverlet-name得到对应的 entityMap 集合的Serverlet-class。
写一个html文件:
创建Request类,对传进来的参数进行分别区分,分解得到方法(是GET还是POST的请求),得到参数(姓名:文本框输入的内容,密码:密码框输入的内容,爱好:文本框选择的内容),获取URL(判断是/log 还是别的 就是xml对应的 url-pattern)。
创建Response类,这个类就是对浏览器起到回馈作用,就是点击完登录,会按照我们的要求往浏览器数据传输一定的格式的内容,浏览器就会做出响应。
创建servelet抽象类,里面有服务方法,参数为响应和回馈
创建LoginServelet类,继承servelet类,重写服务方法,能够写死一个值,判断我们输入的和这个值相等不相等。