servlet-response(响应)-重定向

response响应

response 响应

响应:(信息写回至浏览器)

作用:往浏览器写信息

组成部分:响应行 响应头 响应体

操作响应行

格式:协议/版本 状态码 状态码说明

状态码:

1xx:已发送请求

2xx:已完成响应

200:正常响应

3xx:还需浏览器进一步操作

302:重定向 配合响应头:location

304:读缓存

4xx:用户操作错误

404:用户操作错误

405:访问的方法不存在

5xx:服务器错误

500:内部异常

常用方法:

setStatus(int 状态码):针对于 1xx 2xx 3xx

了解 :sendError(int 状态码):针对于 4xx和5xx

操作响应头:

格式:key/value(value可以是多个值)

了解方法[HttpServletResponse类里]:

1).setHeader(String key,String value):设置字符串形式的响应头

了解:setIntHeader(String key,int value):设值整形的响应头

了解:setDateHeader(String key,long value):设值时间的响应头

2).addHeader(String key,String value):添加置字符串形式的响应头,之前设置过则追加,若无设置则设置

了解:addIntHeader(String key,int value):添加整形的响应头

了解:addDateHeader(String key,long value):添加时间的响应头

响应头:

location:重定向(掌握)

refresh:定时刷新

content-type:设置文件的 mime 类型[( Multipurpose Internet Mail Extensions )多用途

互联网邮件扩展类型],设置响应流的编码及告诉浏览器用什么编码方式打开

重定向:

方式1:

response.sendRedirect("/xxxweb/login");(掌握)

方式2:

response.setStatus(302);

respooen.setHeader("location","/xxxweb/login");

操作响应体:

页面上展示内容(如写入一个 table,回写信息之后浏览器则会显示这个 table 信息):

常用方法:

Writer getWriter():字符流

ServletOutputStream getOutputStream() :字节流

*:自己写的东西用字符流(使用较多),其他一概用字节流.

处理响应中文乱码(#前面项目编写一直也基于用这个设置)[掌握]:

response.setContentType("text/html;charset=utf-8");

页面index.jsp

html 复制代码
<%--  <%=request.getContextPath()%> 当前项目的路径--%>
  <a href="<%=request.getContextPath()%>/redirectServlet">servlet的重定向</a>

RedirectServlet

java 复制代码
//使用注解配置浏览器资源路径
@WebServlet("/redirectServlet")
public class RedirectServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
		//重定向,如果注释下一行,则跳转第一个界面
        response.sendRedirect(request.getContextPath()+"/two.jsp");
        //自动跳转到two页面,以下不显示
        response.getWriter().append("第一个界面");
    }

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

    }
}

Two

java 复制代码
@WebServlet(value = "/two")
public class Two extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
                request.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");
        response.getWriter().append("第二个界面:重定向");

        SimpleDateFormat sdf = new SimpleDateFormat();// 格式化时间
        sdf.applyPattern("yyyy-MM-dd HH:mm:ss a");// a为am/pm的标记
        Date date = new Date();// 获取当前时间
        //System.out.println("现在时间:" + sdf.format(date)); // 输出已经格式化的现在时间(24小时制)
        response.setHeader("date", sdf.format(date));
        response.getWriter().append("时间回显:" + sdf.format(date));
    }


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

    }
}

测试

如果不使用注解配置资源路径,就要配置web.xml

xml 复制代码
    <servlet>
        <servlet-name>RedirectServlet</servlet-name>
        <servlet-class>com.controller.RedirectServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>RedirectServlet</servlet-name>
        <url-pattern>/redirectServlet</url-pattern>
    </servlet-mapping>
        <servlet>
        <servlet-name>Two</servlet-name>
        <servlet-class>com.lx.controller.Two</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>Two</servlet-name>
        <url-pattern>/tow</url-pattern>
    </servlet-mapping>
相关推荐
丶小鱼丶3 分钟前
并发编程之【优雅地结束线程的执行】
java
市场部需要一个软件开发岗位8 分钟前
JAVA开发常见安全问题:Cookie 中明文存储用户名、密码
android·java·安全
忆~遂愿12 分钟前
GE 引擎进阶:依赖图的原子性管理与异构算子协作调度
java·开发语言·人工智能
MZ_ZXD00116 分钟前
springboot旅游信息管理系统-计算机毕业设计源码21675
java·c++·vue.js·spring boot·python·django·php
PP东19 分钟前
Flowable学习(二)——Flowable概念学习
java·后端·学习·flowable
ManThink Technology24 分钟前
如何使用EBHelper 简化EdgeBus的代码编写?
java·前端·网络
invicinble28 分钟前
springboot的核心实现机制原理
java·spring boot·后端
人道领域36 分钟前
SSM框架从入门到入土(AOP面向切面编程)
java·开发语言
大模型玩家七七1 小时前
梯度累积真的省显存吗?它换走的是什么成本
java·javascript·数据库·人工智能·深度学习
CodeToGym1 小时前
【Java 办公自动化】Apache POI 入门:手把手教你实现 Excel 导入与导出
java·apache·excel