Servlet中的HttpServletRequest
Servlet中的HttpServletRequest
1、获取请求行
@WebServlet(name = "requestServlet01", urlPatterns = "/requestServlet01")
public class RequestServlet01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//1、获取请求行//获取请求的资源路径System.out.println(req.getRequestURI());//资源路径(哪个项目):/day033/requestServlet01System.out.println(req.getRequestURL().toString());//完整路径:http://localhost:8080/day033/requestServlet01//获取请求方式System.out.println("请求方式"+req.getMethod());//获取get请求参数System.out.println("get的请求参数"+req.getQueryString());//获取客户机的ip和浏览器的端口System.out.println("远程地址:"+req.getRemoteAddr()+"远程端口:"+req.getRemotePort());}
2、获取请求头
常见的请求头
@WebServlet(name = "requestServlet01", urlPatterns = "/requestServlet01")
public class RequestServlet01 extends HttpServlet {@Overrideprotected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//2、获取请求头// 获取指定的请求头——getHeader里面写需要获取的请求头的key,根据key拿到请求头里的value——String value = req.getHeader("User-Agent");System.out.println(value);//批量获取请求头Enumeration<String> names = req.getHeaderNames();while (names.hasMoreElements()) {String name = names.nextElement();System.out.println(name + ":" + req.getHeader(name));}}
3、获取请求体
getParamter为了获取请求参数
@WebServlet(name = "requestServlet01", urlPatterns = "/requestServlet01")
public class RequestServlet01 extends HttpServlet {@Overrideprotected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//获取请求体//单个获取请求值System.out.println(req.getParameter("username"));System.out.println(req.getParameter("password"));//获取指定名称的值,但是他的值有多个String[] names = req.getParameterValues("username");System.out.println(names);String[] passwords = req.getParameterValues("password");System.out.println(passwords);//批量获取name和值Map<String, String[]> map = req.getParameterMap();//map的迭代Set<Map.Entry<String, String[]>> entries = map.entrySet();System.out.println(entries);for (Map.Entry<String, String[]> entry : entries) {String key = entry.getKey();String[] value = entry.getValue();System.out.println("name:" + key + "-value:" + Arrays.toString(value));}}
}
4、重定向
@WebServlet(name = "requestServlet03", urlPatterns = "/requestServlet03")
public class RequestServlet03 extends HttpServlet {//重定向@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {//设置相应行resp.setStatus(302);//设置响应头--告诉浏览器重定向地址resp.setHeader("location","");//简写req.setAttribute("name", "zs");resp.sendRedirect("http://localhost:8080/day033/requestServlet02");}
5、转发
@WebServlet(name = "requestServlet04", urlPatterns = "/requestServlet04")
public class RequestServlet04 extends HttpServlet {//转发@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {System.out.println("我要转发了");req.setAttribute("name","准备转发");//转发到另一个资源,服务器内部行为req.getRequestDispatcher("/requestServlet02").forward(req,resp);}
}
6、防盗链
通过超链接点击网站会携带这个头,请求的来源
而直接访问网址,是没有这个东西的
请求头中的referer这个头可以用来限制请求方式,例如,只能通过超链接进行访问,则比较请求头里携带的referer是否是所规定的,限制用户不可以通过其他方式或者直接访问网址的方式进行访问。
@WebServlet(name = "requestServlet05", urlPatterns = "/requestServlet05")
public class RequestServlet05 extends HttpServlet {//重定向@Overrideprotected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {resp.setContentType("text/html;charser=utf-8");//获取请求头里的referer的值String referer = req.getHeader("referer");//判断referer是否为null,是否有上级页面if (referer == null || referer.trim().equals("")){//动态的获取网站的前缀:req.getContextPath()resp.sendRedirect(req.getContextPath()+"/demo1.html");return;}//判断referer的地址是否是我们指定的网页链接if(!referer.startsWith("")){System.out.println("非法访问");resp.sendRedirect(req.getContextPath()+"/demo1.html");return;}resp.getWriter().write("访问成功");}
}
最新文章
- java反射机制是什么
- 数据库主键到底是用自增长(INT)好还是UUID好?
- [设计模式](十):策略模式(Strategy)与模板模式(Template)详解及二者间区别介绍(两种父子类行为模式)
- 破解SQLyog 30天试用
- CStdioFile 一些基本用法
- C++中的fstreamifstreamofstream和MFC中的CFileCStdioFile
- Linux:NFS服务器
- matlab 解目标函数,对分法求解目标函数最优解函数MATLAB实现
- 请描述你对测试的了解, 内容可以涉及测试流程, 测试类型, 测试方法, 测试工具等。
- EmguCV学习(三)
- python反爬虫原理与绕过实战pdf
- 文本数据分析:删除停用词
- CentOS7安装教程,简单几步,小白也能上手装!
- 一个人在家怎么做自媒体?4个靠谱平台,门槛低、变现很简单
- 做自媒体18个月,倒欠38万,一个自媒体创作者的自述
- PTA 乙级难点(全部)
- RBAC权限设计
- JavaScript 函数 Call的使用
- MySQL 空间分析函数
- jscript和javascript区别