java web学习第十八天——Servlet

Day18

请求转发和请求包含

是一个请求,至少包含两个Servlet,请求方法不可以有响应体,只可以有响应头,

请求转发:

response.setHeader("404","cuowu");//可以传过去

              response.getWriter().print("响应体");//传不过去

              RequestDispatcher re= request.getRequestDispatcher("/Bservlet");

              //使用request调用getRequestDispatcher()方法,方法的参数是转发或包含的Servlet路径

              re.forward(request,response);

     

请求包含:响应体可以传过去re.include(request,response);

 

Request域对象

在一个请求时间的有效,所以在重定向之后request就消失了。

包含的方法:

Void setAttribute(String name , Object value);封装参数

Object getAttribute(String name);获取参数

Void removeAttribute(String name );删除参数

 

转发和重定向的区别:****

转发是一个请求,一次响应,重定向是两次请求,两次响应

转发地址栏不会变化,重定向地址栏会变化

请求转发只能在本项目中的Servlet,重定向可以转发到任何项目中

转发是服务器端行为,只需给出转发的Servlet路径,重定向需要给出requestURI

请求的效率更高

 

编码

国际通用UTF-8, 系统默认,支持中文的(gb2312gbk)

服务器需要设置编码,setCharacterEncoding(“tuf-8”);然后浏览器有默认的编码,gbk,需要保持一致,name就需要定义浏览器的编码格式了

使用response.setHeader("Content-Type","text/html;charset=utf-8");既可以设置服务器的编码格式,也可以设置浏览器的编码格式。

便捷方法:response.setContentType(“text/html;charset=utf-8”);                 

总结:想要不出现乱码,在使用getWrite()之前使用便捷方法

 

请求编码:

POST请求:使用getAttribute等方法之前使用

reqponse.setCharacterEncoding(UTF-8);

GET请求:因为浏览器传给服务器的是utf-8,而浏览器默认接收使用的是ISO所有需要在Tomcat中的conf/server.xml中加上一句话来定义服务器的默认编码

(URIEncoding=”UTF-8”,一般不用)

可以使用byte[]bytes = name.getBytes(“ISO-8859-1”);反编码

然后使用name= new String(bytes ,”UTF-8”);

 

关于路径

1 web.xml中的<url-pattern>路径(一般叫做Servlet的路径)

2转发和请求包:以“/”开头,相对于当前路径,直接加上Servlet路径

3重定向路径(客户端路径,必须加项目名)

以“/”来头,就像相对于当前主机,所以可以省略http://localhost:8080/

直接用项目名/Servlet名就可以了

4页面中找链接路径和表单路径(和重定向相同都是客户端路径,都要加项目名)

绝对路径都是以“/”开头 相对路径都是不以“/”开头
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值