1.tomcat可以理解为一个小型的文件交互系统,其中的ServletRequest,ServletResponse可以当做两种被包装的流,用来接收数据和传输数据,只不过这两种流是基于浏览器的htp协议的流。因为在tomcat中部署的java程序,可以调用静态文件(图片,文本等),也可以查询数据库(数据库其实就是一个封装了的文件系统),然后将查询到的文件以流的形式输送给浏览器,利用html对用户进行数据的展示和交互。
jsp:实质是一种servlet,为了简化编程,将html和servlet进行整合出现了jsp,解放了程序猿,使程序猿不必再使用out.println()逐句的进行打印。jsp首先会转换为类源文件.java,然后在编译为.class文件,下面以我创建的项目TestWeb为例,jsp被编译成的java和class文件被放在“D:\apache-tomcat-7.0.70\work\Catalina\localhost\TestWeb\org\apache\jsp”
目录下。都知道在进行项目打包时,会将项目的.class打包成jar包,但是jsp编译成的class文件会被打包吗,不会。因为jsp编译是由tomcat完成的,每当web客户端发送请求时,服务端tomcat会根据请求将对应的jsp转换为java文件然后编译为class文件,并且每次请求tomcat会将jsp与编译成的class文件进行比较,若是时间戳不一致就会重新编译jsp,那么客户端也就进行了响应的刷新。
存放位置:WebContent(不同的ide可能文件名不一样,我用的是eclipse),直接在浏览器中输入,文件名.jsp,即可直接得到对应结果。若是不写文件名,而是访问http://localhost:8080/TestWeb/,返回结果将是在web.xml中的配置欢迎页,如下将返回index.jsp
WebContent/WEB-INF/:此种路径,浏览器是不可以直接访问的(包括重定向),否则直接报404错误,只能通过转发的方式进行访问,
其中WEB-INF是WEB的安全目录,里面存放着classes,lib(各种jar包),web.xml配置文件,此目录中的内容浏览器是不可以直接访问的,必须进行资源的映射配置。比如在web.xml中配置servlet的映射。
webContent和web-inf存放文件的区别:将jsp放入webconten,浏览器直接访问,程序目录清晰,若想禁止用户访问,需要使用filter过滤拦截所有请求,麻烦。 将jsp放入Web-inf中程序目录结构虽然显得不清晰,但是实现方便,不用再进行代码编写去控制。
例:在webcontent下创建一个index1.jsp文件,按照代码所示路径创建一个index.jsp文件,(为方便起见,我将直接访问和转发写到一起,可以拆开逐一验证即可)
你好,欢迎访问的欢迎页