request中文乱码/请求转发mvc/地址写法/防盗链

request的中文乱码问题

浏览器以什么码表打开网页 就用什么码表提交数据
接受数据前加上
request.setCharacterEncoding("UTF-8");
只对post提交有效
get要手动修改  <a>标签都是get提交
username = new String(username.getBytes("ios8859-1"),"UTF-8");
改服务器配置处理乱码(不推荐用)
server.xml中修改服务器配置
在<Connector>中加上URIEncoding="UTF-8"
或useBodyEncodingForURI="true"会使request.setCharacterEncoding("UTF-8")对get也有效

request对象实现请求转发

指一个web资源收到客户端请求后,通知服务器去调用另一个web资源进行处理(request也可以实现转发)
应用场景:MVC设计模式
M model       javabean 封装数据
V  view         jsp           输出数据
C cotroller    servlet     控制器收到请求产生数据
分工 各司其职


request对象提供了一个getRequestDispatcher方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发
forward方法用于将请求转发到RequestDispatcher对象封装的资源
如果在调用forward方法之前,在Servlet程序中写入的部分内容已经被真正的传送到了客户端,foward方法将抛出IllegalStateException异常
如果Servlet引擎缓冲区(response)写入了内容,只要没输出到客户端,foward会执行且清空缓冲区内容(已写入HttpServletResponse对象的响应头字段信息保持有效)
养成好习惯 跳转之后加return不执行后面代码
特点:
1.客户端只发一次请求服务器有多个资源调用 
2.客户端浏览地址不变
include方法实现页面包含
被包含页面不要出现全局架构标签


request对象同时是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其他web资源处理
setAttribute()
getAttribute()
removeAttribute()
getAttributeNames()

web工程中各类地址的写法

request.getRequestDispatcher("/1.html").forward(request,response);给服务器用

response.sendRedirect("/xxx/1.html");给浏览器用

this.getServletContext().getRealPath("/1.html");给服务器用

this.getServletContext().getResourceAsStream("/1.html")给服务器用

<a href="/xxx/1.html">xxx</a>给浏览器用
<form action="/xxx/1.html"></form>给浏览器用

书写顺序:
先写一个/
给服务器用 写WEB应用名
给浏览器用 写网站名(加上项目名称)
uri上资源     /  http://

硬盘上资源 \\  c:\\

不能用/的时候 写相对目录 此时具体情况具体分析

防盗链

String referer = request.getHeader("referer");//获取来访的地址
if(referer==null || !referer.startsWith("http://localhost")){
//判断来访的地址,为空(直接复制网址访问)或不是从主页来访的,使其重定向到主页面
response.sendRedirect("/xxx/index.jsp");
return;//使后面不执行
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值