JavaWeb---Request,Response

HttpServletRequest类:

每次有请求进入服务器时,服务器就会把请求过来的Http协议信息解析好封装到Request对象中,然后传递到service方法中。我们可以通过HttpServletRequest对象,去获取相关信息

    常用方法:
        1getRequestURI()           :获取请求的资源路径
        2getRequestURL()           :获取请求的统一资源定位符(绝对路径)
        3getRemoteHost()           :获取客户端的ip地址
        4getHeader()               :获取请求头
        5getParameter()            :获取请求参数
        6getParameterValues()      :获取请求参数(多个值时使用)
        7getMethod()               :获取请求方式(Get,Post)
        8setAttribute()            :设置域数据
        9getAttribute()            :获取域数据
        10getRequestDispatcher()   :获取请求转发对象

例子:

public class FourClass extends HttpServlet {
    //在请求体内有中文字符时,有可能会出现乱码
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //设置请求体的字符集为UTF-8,解决Post请求的中文乱码问题
        request .setCharacterEncoding("UTF-8");
        doGet(request,response);
    }

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

        //1,getRequestURI()           :获取请求的资源路径
        System.out.println("getRequestURI:"+request.getRequestURI());
        //2,getRequestURL()           :获取请求的统一资源定位符(绝对路径)
        System.out.println("getRequestURI:"+request.getRequestURL());
        //3,getRemoteHost()           :获取客户端的ip地址
        System.out.println("getRemoteHost:"+request.getRemoteHost());
        //4,getHeader()               :获取请求头
        System.out.println("getHeader:"+request.getHeader("User-Agent"));
        //5,getParameter()            :获取请求参数
        System.out.println("getParameter Name:"+request.getParameter("name"));
        //6,getParameterValues()      :获取请求参数(多个值时使用)
        String[] hobbies = request.getParameterValues("hobby");
        System.out.println("getParameterValues:"+ Arrays.asList(hobbies));
        //7,getMethod()               :获取请求方式(Get,Post)
        System.out.println(request.getMethod());
//        request.setAttribute();
//        System.out.println(request.getAttribute());
//        System.out.println(request.getRequestDispatcher());
    }
}

访问页面

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    <form action="http://localhost:8080/WebDemo_war/four" method="post">
        Name:<input type="text" name="name"><br/>
        age:<input type="text" name="age"><br/>
        hobby:<input type="checkbox" name="hobby" value="java">Java
        <input type="checkbox" name="hobby" value="python">Python
        <input type="checkbox" name="hobby" value="kotlin">Kotlin<br/>
        <input type="submit">
    </form>
</body>
</html>

请求转发

概念:服务器收到请求后,从一次资源跳转到另一个资源的操作叫请求转发
在这里插入图片描述

请求转发特点:

  • 1,浏览器地址没有变化
  • 2,他们是一次请求
  • 3,他们共享Request域中的数据
  • 4,可以转发WEB-INF目录下

例子:

public class Servlet1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

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


        request.setAttribute("name","Tom");
        RequestDispatcher requestDispatcher = request.getRequestDispatcher("/servlet2");

        requestDispatcher.forward(request,response);
    }
}
public class Servlet2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println(request.getAttribute("name"));
    }
}

直接访问Servlet1,然后转发访问Servlet2,如果直接访问Servlet2,name的值为null


HttpServletResponse类

每次进来Servlet,服务器都会创建一个Response对象传递给Servlet程序使用。HttpServletResponse表示所有响应的信息,如果需要设置返回给客户端的信息,都可以通过Response对象进行设置

如何响应给客户端?
	通过流的方式:
	    字节流:
    		getOutputStream():常用于下载,传递二进制数据
		字符流:
   		 	getWrite():常用于回传字符串

字节流和字符流只能同时使用一个(也就是说Response对象用了getWrite方法后就不能用getOutputStream方法)

例子:

public class FiveClass extends HttpServlet {

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

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        
        //得到响应字符集
        System.out.println(response.getCharacterEncoding());
        //设置响应头,设置服务器使用UTF-8字符集
        response.setCharacterEncoding("UTF-8");
        //通过响应头,设置浏览器使用UTF-8字符集
        response.setHeader("Content-type","text/html;charset=UTF-8");

        //它会同时设置服务器和客户端都是用UTF-8字符集,还设置响应头
//        response.setContentType("text/html;charset=UTF-8");

        PrintWriter writer = response.getWriter();
        writer.println("Hello 世界");
//        writer.write("Hello World");
    }
}
(推荐使用)
//它会同时设置服务器和客户端都是用UTF-8字符集,还设置响应头
response.setContentType("text/html;charset=UTF-8");
	
	相当于:
//设置响应头,设置服务器使用UTF-8字符集	
response.setCharacterEncoding("UTF-8");
//通过响应头,设置浏览器使用UTF-8字符集
response.setHeader("Content-type","text/html;charset=UTF-8");	

浏览器默认使用ISO-8859-1字符集,响应中文时会乱码

请求重定向

概念:指客户端给服务器发请求,然后服务器告诉客户端 一个地址,让客户端访问该地址
在这里插入图片描述

请求重定向特点:

  • 1,浏览器地址栏会发生变化
  • 2,两次请求
  • 3,不共享Request域中数据
  • 4,不能访问WEB-INF下的资源
  • 5,可以访问工程外的资源

例子:

public class Servlet1 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

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

        System.out.println("经过Servlet1");
        //设置响应码302,表示重定向
        response.setStatus(302);

        //设置响应头,新的地址在哪里
        response.setHeader("Location","http://localhost:8080/WebDemo_war/servlet2");
		
		//response.sendRedirect("http://www.baidu.com");
    }
}
public class Servlet2 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        System.out.println("重定向到Servlet2");
    }
}
        //设置响应码302,表示重定向
        response.setStatus(302);

        //设置响应头,新的地址在哪里
        response.setHeader("Location","http://localhost:8080/WebDemo_war/servlet2");
		
		相当于:		
		(推荐使用)
		response.sendRedirect("http://www.baidu.com");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
牙科就诊管理系统利用当下成熟完善的SSM框架,使用跨平台的可开发大型商业网站的Java语言,以及最受欢迎的RDBMS应用软件之一的Mysql数据库进行程序开发。实现了用户在线查看数据。管理员管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等功能。牙科就诊管理系统的开发根据操作人员需要设计的界面简洁美观,在功能模块布局上跟同类型网站保持一致,程序在实现基本要求功能时,也为数据信息面临的安全问题提供了一些实用的解决方案。可以说该程序在帮助管理者高效率地处理工作事务的同时,也实现了数据信息的整体化,规范化与自动化。 管理员在后台主要管理病例管理、字典管理、公告管理、药单管理、药品管理、药品收藏管理、药品评价管理、药品订单管理、牙医管理、牙医收藏管理、牙医评价管理、牙医挂号管理、用户管理、管理员管理等。 牙医列表页面,此页面提供给管理员的功能有:查看牙医、新增牙医、修改牙医、删除牙医等。公告信息管理页面提供的功能操作有:新增公告,修改公告,删除公告操作。公告类型管理页面显示所有公告类型,在此页面既可以让管理员添加新的公告信息类型,也能对已有的公告类型信息执行编辑更新,失效的公告类型信息也能让管理员快速删除。药品管理页面,此页面提供给管理员的功能有:新增药品,修改药品,删除药品。药品类型管理页面,此页面提供给管理员的功能有:新增药品类型,修改药品类型,删除药品类型。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值