response响应 request对象 及获取请求方式 解决中文乱码 request域对象 转发 三层架构 理论基础

response 响应

设置响应行setStatus(int a)

设置响应头 addHeader(Strign key,String value)

设置响应体 getWriter();

重定向 ------ 转发

文件下载

验证码

1 Request对象 了解

​ 获取客户端请求的数据 Request 接口ServletRequest 子接口HttpServletRequest

​ HttpServletRequest接口实现类 由tomact创建

2 Request对象获取请求行 ****

​ 2.1 获取请求方式 getMethod() get post

​ getRequestURI() 请求参数的服务器路径

​ request.getQueryString(); 获取请求行的参数

​ request.getContextPath() 获取WEB应用名称

   String method = request.getMethod();
        System.out.println(method);
        //   获取请求服务器路径
        String requestURI = request.getRequestURI();
        StringBuffer requestURL = request.getRequestURL();
        System.out.println("uri"+requestURI);
        System.out.println("urL"+requestURL);
        //  获取请求行的参数
        String queryString = request.getQueryString();
        System.out.println(queryString);
        // 获取WEB应用名称
        String contextPath = request.getContextPath();
        System.out.println("a"+contextPath);

3 Reuest对象获取请求头 ****

 //  获取请求头   getHeader
//        String header = request.getHeader("User-Agent");
//        String header1 = request.getHeader("Referer");
//        System.out.println(header1);
        //   Enumeration    集合   迭代器
        //  集合Iterator   haxNext()    next()
        // 枚举  Enumeration  hasMoreElement   nextElement()
        Enumeration<String> enums = request.getHeaderNames();
        System.out.println(enums);
        while (enums.hasMoreElements()){
            String s = enums.nextElement();
            String v = request.getHeader(s);
            System.out.println(s+"="+v);

3 .1 解决post提交中文乱码

package cn.lijun.request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author lijun
 * @date 2019/7/9 15:25
 */
@WebServlet(urlPatterns = "/chinese")
public class ChineseServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        response.setContentType("text/html;charset=utf-8");
        // 提交参数有中文乱码
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");
        System.out.println(username);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }


}

4 Request域对象对象 重点

​ Request 域对象的作用域 范围小 一次请求

​ 域对象存数据

​ setAttribute(Strign key,Object value)

​ getAttribut(key)

​ removeAttribut(key);

​ 5 转发

package cn.lijun.request;

import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author lijun
 * @date 2019/7/9 15:52
 */
@WebServlet(urlPatterns = "/servlet1")
public class Servlet1 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        // 1  向请求域中存数据
        request.setAttribute("9502","我爱java");
        //2 转发  获取转发器   参数是地址
        RequestDispatcher dis = request.getRequestDispatcher("/servlet2");
        //转发器有方法  forward
        dis.forward(request,response);
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }


}







package cn.lijun.request;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * @author lijun
 * @date 2019/7/9 15:55
 */
@WebServlet(urlPatterns = "/servlet2")
public class Servlet2 extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("servlet2    "+request.getAttribute("9502"));
        response.getWriter().write("servlet2");
    }

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }


}

转发和重定向的区别

​ 转发:浏览器一次请求

​ 浏览器地址栏不变

​ 转发是服务器内部行为 浏览器不知道 转发不需要写web应用名

重定向:浏览器两次请求

​ 浏览器地址栏变

​ 重定向可以到外网去

​ 重定向需要写web应用名

6 三层架构 开发模式 MVC 重点

​ 三层架构

​ 表现层 web 层 包含两个层展示层和控制层处理用户请求和响应 用的技术:Servlet

​ 采用MVC设计模式进行设计

​ 业务层 :service 层 处理业务逻辑 编写事物的 spring

​ 持久层: dao 层 数据的增删改查 技术 jdbc dbutils jdbcTemplate MyBatis spring data

、 MVC: Model View Controller 模型视图控制器

​ model 数据模型 domain(pojo)

​ View: 视图 html css js

​ Controller:控制层 servlet 处理请求和响应

7 用户注册 重点

​ 步骤 1 创建数据库

​ 2 创建Module

​ 3 复制页面到web

​ 4 创建包

​ 5 编写功能

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值