Web开发的小知识点

时间:2022-08-16 08:48:51

ServletConfig:用于读取配置文件信息

ServletContext:这是一个容器,代表一个web应用程序,多个Servlet可以通过这个容器共享数据信息(注意:这样的数据共享有线程安全问题,解决办法是
用request域来转发数据)当tomcat服务器启动时就会为每个web应用创建一个ServletContext
用例:ServletContext可以读取配置文件信息 :
in= this.getServletContext().getResourceAsStream("/WEB-INF/classes/db.properties");
Properties props=new Properties();
props.load(in);
String url=props.getProperty("url");
web工程读取配置文件要注意:如果不是用ServletContext()读取配置文件,我们写的配置文件地址是相对于java虚拟机,当项目发布到tomcat服务器中时只好把配置文件写
到tomcat目录中的bin文件夹中了,如果用ServletContext()读取配置文件,我们是相对于项目工程,所以写上WEB-INF/classes/xx.properties
如果读取资源文件的程序不是Servlet的话,只能通过类装载器取读了:
InputStream in=XXClass.class.getClassLoader().getResourceAsStream(db.properties);
如果web.xml文件中配置了<init-param></init-param> 代表为一个Servlet配置了参数信息
如果web.xml文件中配置了<context-param></context-param>代表为整个web应用配置参数信息

乱码问题:response乱码: 在Servlet中用outputStream输出中文时,程序以什么码表输出,程序就一定控制浏览器以什么码表打开
输出数据给response对象: response.getOutputStream().wirte(data.getBytes("UTF-8"));
控制浏览器输出格式:response.setHeader("content-type","text/html;charset=UTF-8");
如果调用response.getWriter().write(data);则需要设置response.setCharacterEncoding("UTF-8");
注意:response.getOutputStream()(二进制方式)和response.getWriter()(文本字符串方式)互斥

request乱码:;如果是post请求,则只需要设置request.setCharacterEncoding("UTF-8");
如果是get请求,则要自定义转换 username=new String(username.getBytes("iso8859-1"),"UTF-8");

uri和URL的区别:
uri是父亲,代表某一资源,URL代表互联网上的固定资源,是完整路径

Response和Request常用方法:
response.setHead("","");返回响应头信息

request.getRequestURL()返回完整请求路径
request.getRequestURI()返回资源名部分
request.getQueryString()返回请求行中的参数部分
request.getRemotoAddr()返回客户机的ip地址
request.getRemotoHost()返回客户机的完整主机名
request.getRemotoPort()返回客户机的网络端口号
request.getMethod()得到客户机的请求方式
request.getLocalAddr()返回web服务器的ip地址
request.getLocalName()返回web服务器的主机名

在web开发中,数据的传递主要是同过ServletContext,request,Session这三个域(容器)进行的.
当数据在页面表示后,没有别的地方在用到,就用request

Web开发的小知识点