发表于: 2017-10-09 23:34:07
8 977
今天完成的事:
1.对web体系结构以及流程有了基本的了解
首先客户端发送一个请求过来,web服务器交给web容器,web容器根据请求的是一个serlvet还是静态资源的请求来进行响应操作,如果是静态资源那么只需要找到相应的资源响应给web服务器,web服务器响应客户端即可。如果是servlet会通过URL公共的映射名去找真实的servlet文件并开启一个新的线程对servlet进行实例化,调用相应的方法doPost(),doGet()以及将请求对象和响应对象传递给方法。通过请求对象可以得到请求中的参数,通过响应对象可以响应内容。
上述语句理解起来可能会不太好理解,下图贴代码:
上图中是首页的一个html文档,之所以命名为index是因为如果只输入路径不输入文件或servlet的URL的话默认是请求当前目录下的index.html或index.jsp.
上图中有个表单,使用了属性为method="post",是表明以post的方法来提交表单,action表明的是提交请求到URL映射名为/getUserInformation的Servlet
下面贴出,配置的web.xml
上图中的<servlet>标签是定义一个内部的映射名,通过名称映射到实际的servlet文件
<servlet-mapping>是将给用户使用的URL地址映射到一个实际的servlet文件,通过实际servlet文件定义的内部映射名。
下图是一个servlet,servlet是一个控制器,如果使用mvc模式的话,servlet仅仅起到一个消息传递的功能,它并不处理数据和做业务逻辑(下图使用的是mvc)
刚开始时,说过流程,客户端提交一个请求,会发送给web服务器,web服务器发送给web容器,web容器看请求的是一个servlet还是静态资源来进行操作,如果是servlet就会通过URL名来找到内部映射Servlet名,然后找内部映射名实际映射的Servlet文件(也就是上图中的select类)并开启一个新的线程并实例化调用相应的方法(如果是post请求,调用doPost,如果是get调用doGet,调用时会将请求对象和响应对象作为参数传递)
上图中首先来通过请求对象来获取值,然后调用MoDel层进行业务逻辑处理,处理完毕调用View层来进行响应视图的操作,操作完毕(也就是doPost方法执行方法),web容器销毁实例并释放进程,将视图层处理后的视图响应给web服务器,web服务器响应客户端。
2.编写了Maven Web的Demo并使用了Mvc模式,能够通过客户端(浏览器)来对数据库(使用mybatis框架)进行相应的增删改查操作
先展示一下:
如果有兴趣可以点开下面的 github链接自行下载,推荐一个直接下载仓库中一个目录或单个文件的网站DownGit
明天准备完成的事:
1.给写的maven webDemo加上jsp功能,对jsp有个基本的使用经验
2.继续看Head first servlet&jsp这本书
3.如果有时间,再学学spring-mvc
遇到的困难:
1.刚建议maven web项目时无法直接建立java文件,在陈昊师兄的帮助下发现没有对文件夹进行类似标注的操作吧。
主要就是没有对文件夹进行一个标注,表明是存放什么类型资源的文件夹,Sources是源代码,Tests是测试代码,Resources是资源文件,TestResources是测试资源文件。
2.web.xml文件中处理莫名奇怪的错误,后来发现是自己没有按规定的顺序使用标签,如下图
规定是<servlet>标签在<servlet-mapping>标签之前,但我将<servlet-mapping>放到了<servlet>标签之前,所以报错
收获:
对于web的体系结构,各个文件的作用,以及流程有了一个清晰的认识。
注:附上github链接
评论