javaweb

如果是servlet 则可以通过servletContext 读取web资源文件

如果不是servlet则只能通过类装载器去读取了(类装载器有弊端,文件不能太大,二不能及时更新)

web工程中,对于java类我们是无法直接读取web资源的,因此如果想要java程序读取web资源,我们通常使用类装载器(UserDao)为任意src下的java文件

java文件运行的话,服务器通过类装载器去装载classes目录下的所有java类(src目录下的内容发布的时候会发布到web工程下的classes目录中)的所有资源文件

我们可以通过UserDao.class.getClassLoader().getResourceAdStream("fileName");/、通过任何一个类,我们可以获得加载该类的类装载器,通用的应该只有一个吧????,可以加载所有的资源文件


对于某些资源,如数据库连接的数据,我们只需要加载一次就可以了,这是我们可以把加载数据库相关的代码,放到静态代码块中




在web工程中,类装载器对类的加载只加载一次,如果以前加载过该类并且没有销毁,则不会再次加载该类

注意以下两种方式的区别,第一种是类加载器的方式,第二种是普通的输入流的方式,如果在程序运行期间改变properties中的内容,第一种方式获取是还是以前的内容,第二种方式是改变后的内容



程序以什么码表输出到客户端,就在respond中指定客户端浏览器以什么样的编码读取这些数据



<meta>标签可以模拟http相应头,我们可以用<meta>标签来控制浏览器的行为

,如指定编码格式

out.write("<meta http-wquiv='content-type' content='text/html' cahrset=UTF-8>");这和在respond添加header头信息是一样的(如上图)

respond.setHeader("content-type","text/html.charset=UTF-8")//注意这样写访问servlet时会下载文本


printWriter 字符流输出,只能输出字符串

outputStream 字节流,可以输出所有的内容形式


setContentType("text/html;charset=UTF-8")//这句话可以代替上边两句话,内部调用了上边两个函数.解决乱码问题

第一句话控制respond以什么编码格式写出数据

第二句话控制浏览器以什么编码格式打开返回的数据


  服务端向客户端游览器发送文件时,如果是浏览器支持的文件类型,一般会默认使用浏览器打开,比如txt、jpg等,会直接在浏览器中显示,如果需要提示用户保存,就要利用Content-Disposition进行一下处理,关键在于一定要加上attachment:

Response.AppendHeader("Content-Disposition","attachment;filename=FileName.txt");


文件下载时,如果文件文成是中文,则需要把中文经过URL编码

URLEncoder.encode(filename,encodetype);

URLEncoder.encode(filename,"UTF-8");



重定向:

respond.setStatus(302);

respond.setHeader("location","/error.html");

OR

respond.setRedirect("error.html");//特点放两次请求,地址会变

注意重定向和转发的区别,转发不会改变地址栏,

重定向的用处,登陆和购买



获取rquest数据的几种方式





web    servlet一般不输出数据跳转到jsp输出数据, 跳转后一定要return,否则可能出现异常


forword时会清空respond 中的数据,respond头信息仍然有效


respond可以实现转发,

request也可以实现转发




web中各种地址的写法

书写地址时主要看改地址是谁要使用

对于1,我们知道是请求转发,转发到另一个servlet中处理,因此是在web工程中使用,因此书写时应相对于当前web应用根目录

2,sendRedirect我们知道是重定向,让浏览器去发送另一个请求,是浏览器要调用改资源地址,因此是相对于tomcat容易而言的

3,4相对于web应用根目录而言的

5表单,点击是浏览器发送一个请求,是浏览器调用的,因此是相对于tomcat目录而言的



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值