创建Servlet的方式之一:继承HttpServlet类(经常使用)
如果请求方式为get请求则调用doGet()方法;
如果请求方式为post请求则调用doPost()方法。
开发中通常不会在两个方法中写重复的代码,会造成代码冗余。
Request
一、获取请求行数据
        //获取请求方式
        String method = req.getMethod();
        System.out.println(method);
        //获取get方式参数
        String queryString  = req.getQueryString();
        System.out.println(queryString);
        //解析请求参数
        String name = req.getParameter("name");
        System.out.println(name);
        String age = req.getParameter("age");
        System.out.println(age);
        //获取请求URL
        String url = req.getRequestURI();
        System.out.println(url); 

二、获取请求头的数据
 //通过请求头的名称,获取请求头的值
        Enumeration<String> headers =  req.getHeaderNames();
        while (headers.hasMoreElements()){
            String header = headers.nextElement();
            String value = req.getHeader(header);
            System.out.println(header + ":" + value);
        } 

三、取请求体数据
请求体:只有post请求方式才有请求体,在请求体中封装了post请求的请求参数(get、post都可以用)
String getParameter(String name) 根据参数名获取参数值 username = yt & age=22
String[] getParameterValues(String name) 根据参数名称获取参数值数组
Enumeration getParameterNames() 获取所有请求的参数名称
Map<String, String[]> getParameterMap() 获取所有参数的Map集合
-  
乱码问题
get方式,tomcat已经处理了
post方式,设置request.setCharacterEncoding("utf8")
 
四、请求转发
一种服务器内部资源跳转的方法,servlet之间的跳转
步骤:
-  
通过request请求对象获取请求转发器对象
 -  
通过RequestDispatcher对象进行转发
 
req.getRequestDispatcher("/student").forward(req,resp); 
特点:
- 浏览器地址路径不发生变化
 - 只能转发到服务器内部资源
 - 转发是一次请求
 
五、、共享数据
//        存储数据
        req.setAttribute("age",18);
        System.out.println(req.getAttribute("age"));
        ServletContext servletContext = req.getServletContext();
        servletContext.setAttribute("name","yt");
        System.out.println(servletContext.getAttribute("name")); 
-  
域对象:一个有作用范围的对象,可以在范围内共享数据
 -  
request域:代表一次请求范围,一般用于请求转发的多个资源数据
 
![[前端基础]websocket协议](https://img-blog.csdnimg.cn/8d13bc87c4854523bf94b119db37b7e3.png)


















