HttpServletRequest对象代表客户端的请求,当客户端通过HTTP协议访问服务器时,HTTP请求头中的所有信息都封装在这个对象中,开发人员通过这个对象的方法,可以获得客户这些信息。
获得客户机信息:
getRequestURL():返回客户机发出请求时的完整URL
getRequestURI():返回请求行中的资源名部分------用于做权限限定,页面访问统计
getQueryString():返回请求行中的参数部分
getRemoteAddr():返回发出请求的客户机的IP地址
getRemoteHost():返回发出请求的客户机的完整主机名
getRemotePort():返回客户机所使用的网络端口号
getLocalAddr():返回WEB服务器的IP地址
getLocalName():返回WEB服务器的主机名
getMethod():得到客户机的请求方式
获取头相关方法:
getHeader():获取请求头和请求数据
getHeaders()
getHeaderNames():获取所有头名
获取提交的数据(一般都要先检查,再使用):
getParameter(“username”)
getParaterNames():获取提交的所有数据名,返回Enumeration
getParameterValues():获取名称带过来的所有信息
getParameterMap():
获取数据的两种方式:超链接、表单
URL后面如果跟了中文数据,要先编码再提交
提交数据的乱码问题:
get方式:String username=request.getParameter(“username”);
String name1=new String(username.getBytes(“iso-8859-1”),”UTF-8”);
Post方式:request.setCharacterEncoding(“UTF-8”);
注:超链接提交方式都是get方式
Request对象实现请求转发:请求转发指一个web资源收到客户端请求后,通知服务器去调用另外一个web资源进行处理;
请求转发的应用场景:MVC(mode—javabean view—jsp cotroller--servlet)设计模式
Request对象提供了一个getRequestDispatcher()方法,该方法返回一个RequestDispatcher对象,调用这个对象的forward方法可以实现请求转发。
Request对象同样也是一个域对象,开发人员通过request对象在实现转发时,把数据通过request对象带给其他web资源处理:
setAttribute( ):
getAttribute( );
removeAttribute( );
getAttributeNames( );
String data=”aaaaa”;
Request.setAttribute(“data”,data);
Request.getRequestDispatcher(“/message.jsp”).forward(request,response);
注:跳转之后记得return;
forward方法用于将请求转发到RequestDispatcher对象封装的资源。
如果在调用forward方法之前,在Servlet程序中写入的部分内容已经被真正的传送到了客户端,forward方法将抛出IllegalStateException异常;
如果在调用forward方法之前向Servlet引擎的缓冲区(response)中写入了内容,只要写入到缓冲区中的内容还没有被真正输出到客户端,forward方法就可以被正常执行,原来写入到输出缓冲区中的内容将被清空,但是,已写入到HttpServletResponse对象中的响应头字段信息保持有效。
用include实现页面包含!
获取URL资源使用“/”,获取硬盘上的资源使用“\”;
防盗链:
String referrer=request.getHeader(“referer”);
If(referrer==null|| !referer.startsWith(“http://localhost”)){
Response.sendRedirct(“/day06/index.jsp”);
Return;
}
String data=”凤姐日记”;
Response.getWriter().write(data);