对web,servlet,JSP基础理解

林信良所著的《Servlet&JSP学习笔记》确实是一本不错的入门书,对原理上的说明还是比较清晰的,容易理解,看了前3章有所收获,记录下来。

1、Tomcat不是一个Http服务器,而是一个web容器,只是Tomcat自带一个服务器,它也可以跟别的服务器一起使用,例如:Apache。

2、所谓web容器本质上是一个java程序,用来管理servlet,对比CGI(Common Gateway Interface),每个CGI会在服务器开启一个进程,所以服务器负荷会很大,而web容器就是由JVM开启的一个进程,其中servlet(本质上是一个java类,只是受web容器管理后成为了"Servlet")是web容器下管理的线程,消耗小很多。

3、JSP跟Servlet实际上可以看作一样东西,例如:在JSP中可以添加java语言程序,在Sevlet中可以输出html语句来展示。JSP实际上最后会转译成Servlet,再运行。

4、JS(JavaScripe)跟Java实际上没有什么关系,JS是运行在客户端的,页面请求时服务器会将JS完整不动地传到客户端,然后再又客户端编译运行,这样的程序称为客户端程序。对应的有服务器端程序,Servlet就是服务器端程序。

5、Web容器的作用概括地说就是管理Servlet的常规操作如:init(),destroy(),配置requset,response等,所以需要每个Web应用都需要配置web.xml(固定名称,固定路径:WEB-INF下)

配置Servlet的基本配置如下

<!--servlet-name中定义该servlet的名字,可取任意名称 -->
<!--servlet-class中指定该servlet对应的实现类,包含包名和类名的完整名称 -->
<servlet>
    <servlet-name>Example</servlet-name>
    <servlet-class>packetName.className<servlet-class>
</servlet>
<!--servlet-name指定要配置匹配url的servlet名字,应该是上述已经定义过的名字 -->
<!--url-pattern指定访问什么url时调用该servlet,理论上可以是任何名字,甚至可以伪装为*.jsp -->
<servlet-mapping>
    <servlet-name>Example</servlet-name>
    <url-pattern>/example</url-pattern>
</servlet-mapping>

6、关于WEB-INF:该路径不能由客户端通过浏览器直接输入URL来访问,也就是该路径下内容对客户端来说是封闭的。所以一些不想客户端直接访问的文件可以放在该目录下。但是可以通过间接方式来访问,例如

//调用HttpServlet的getServletContext()
//再调用getResourceAsStream()获得WEB-INF目录下的jdbc.pdf文件的输入流
this.getServletContext().getResourceAsStream("/WEB-INF/jdbc.pdf");

7、MVC,M(Model)模型,一般是普通java对象,实现封装,业务逻辑功能;V(View)视图,一般就是可视化的部件,Swing,JSP,Html都是;C(Control)控制器,一般就是一个中转站的作用,接受请求,调用模型处理,得到处理结果后返回给视图,不会进行直接的逻辑操作。(与Model2区别就是,MVC能够从控制器直接要求View检查Model有无变化,从而更新View。)

8、实际上结合Servlet使用的是Model2,因为在Http下,没有请求就不会有回应,所以典型的MVC不适用于Http。所以的Model2其实就是JSP担任View,Servlet担任Control,各种各样的普通Java对象担任Model,页面不断通过JSP发出请求,Servlet接收请求然后交给Model处理后反馈给JSP。

理解如此,可能有误,仅加深印象且方便日后重阅借鉴

相关推荐