javaweb 学习笔记

本文详细介绍了JavaWeb开发中Tomcat服务器的配置与使用,包括server.xml核心配置、webapps目录管理、自定义虚拟目录、war包部署、连接器与引擎原理。同时讲解了Servlet的线程安全、ServletContext通信、资源文件读取、字符编码控制、错误处理页面、四大域对象以及过滤器等关键知识点。
摘要由CSDN通过智能技术生成
1、 Tomcat的所有配置都放在conf文件夹之中,里面的server.xml文件是配置的核心文件。
2、 tomcat服务器会自动管理webapps目录下的所有web应用,并把它映射成虚似目录。换句话说,tomcat服务器webapps目录中的web应用,外界可以直接访问。
3、在tomcat服务器的\conf\Catalina\localhost目录下添加一个以xml作为扩展名的文件,xml文件的名字可以任意取,比如下面的aa.xml。
  注意这一句话"The context path and version will be derived from the base name of the file",这一句话的意思翻译过来就是"context元素的path属性源自于是这个xml文件的名字",上面提到过,Context元素的path属性是用来配置虚似目录的名称的,所以虚似目录的名称就是这个xml文件的名称。
4、在Java中,使用"jar"命令来对将JavaWeb应用打包成一个War包,jar命令的用法如下:jar -cvf javaweb.war javaweb,平时开发完JavaWeb应用后,一般都会将JavaWeb应用打包成一个war包,然后将这个war包放到Tomcat服务器的webapps目录下,当Tomcat服务器启动时,就会自动将webapps目录下的war包解压。
5、Tomcat服务器的启动是基于一个server.xml文件的,Tomcat启动的时候首先会启动一个Server,Server里面就会启动Service,Service里面就会启动多个"Connector(连接器)",每一个连接器都在等待客户机的连接,当有用户使用浏览器去访问服务器上面的web资源时,首先是连接到Connector(连接器),Connector(连接器)是不处理用户的请求的,而是将用户的请求交给一个Engine(引擎)去处理,Engine(引擎)接收到请求后就会解析用户想要访问的Host(host即为访问时的网址如:www.sohu.com,可以在server.xml中配置),然后将请求交给相应的Host,Host收到请求后就会解析出用户想要访问这个Host下面的哪一个Web应用,一个web应用对应一个Context。
6、当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用Servlet的service方法,因此service方法内如果访问了同一个资源的话,就有可能引发线程安全问题
7、由于一个WEB应用中的所有Servlet共享同一个ServletContext对象,因此Servlet对象之间可以通过ServletContext对象来实现通讯
8、读取资源文件的两种方法:1、InputStream in = this.getServletContext().getResourceAsStream("/WEB-INF/classes/db1.properties"); 2、ServletContext context = this.getServletContext(); String path = context.getRealPath("/WEB-INF/classes/itcast.properties");
9、在服务器端,数据是以哪个码表输出的,那么就要控制客户端浏览器以相应的码表打开,比如:outputStream.write("中国".getBytes("UTF-8"));使用OutputStream流向客户端浏览器输出中文,以UTF-8的编码进行输出,此时就要控制客户端浏览器以UTF-8的编码打开,否则显示的时候就会出现中文乱码,那么在服务器端如何控制客户端浏览器以以UTF-8的编码显示数据呢?可以通过设置响应头控制浏览器的行为,例如:response.setHeader("content-type", "text/html;charset=UTF-8");通过设置响应头控制浏览器以UTF-8的编码显示数据。
10、在获取PrintWriter输出流之前首先使用"response.setCharacterEncoding(charset)"设置字符以什么样的编码输出到浏览器,如:response.setCharacterEncoding("UTF-8");设置将字符以"UTF-8"编码输出到客户端浏览器,然后再使用response.getWriter();获取PrintWriter输出流, 这两个步骤不能颠倒
11、在开发过程中,如果希望服务器输出什么浏览器就能看到什么,那么在服务器端都要以字符串的形式进行输出。
12、因此在编写下载文件功能时,要使用OutputStream流,避免使用PrintWriter流,因为OutputStream流是字节流,可以处理任意类型的数据,而PrintWriter流是字符流,只能处理字符数据,如果用字符流处理字节数据,会导致数据丢失。
13、jsp可以在一条page指令的import属性中引入多个类或包,其中的每个包或类之间使用逗号(,)分隔。
14、可以在web.xml文件中使用<error-page>元素为整个Web应用程序设置错误处理页面,定制的错误页面的size最好超过1024bytes(解决IE错误页面的不显示问题)。 
<error-page>元素有3个子元素,<error-code>、<exception-type>、<location> 
<error-code>子元素指定错误的状态码,例如:<error-code>404</error-code> 
<exception-type>子元素指定异常类的完全限定名,例如:<exception-type>java.lang.ArithmeticException</exception-type> 
<location>子元素指定以“/”开头的错误处理页面的路径,例如:<location>/ErrorPage/404Error.jsp</location>
15、如果没有设置isErrorPage="true",那么在jsp页面中是无法使用exception对象的,因为在Servlet的_jspService方法中不会声明一个exception对象
16、jsp里面有四大域,作用域从小到大分别是page域,request域,session域,application(servletContext)域,域也可以称为属性范围
17、使用Filter 时,在chain.doFilter() 方法前添加方法,对request进行预处理。在chain.doFilter()方法后添加方法对response结果进行处理(如压缩输出文件)
18、数组因为是连续分配的内存空间,所以通过下标能确定访问的地址
19、Java的访问权限控制修饰符,从最大权限到最小权限依次是:public、protected、包访问权限(默认,没有关键字)和private。对于类的访问权限只能是:public和包访问权限(但内部类可以是private或protected的);对于类中的成员的访问权限可以是上述的四种,内部类的成员方法是属于外部类的(对象)所有。
20、使用jmap -histo:live命令查询系统中的对象实例个数。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值