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>
相关推荐
程序员泠零澪回家种桔子19 分钟前
Spring AI框架全方位详解
java·人工智能·后端·spring·ai·架构
CodeCaptain27 分钟前
nacos-2.3.2-OEM与nacos3.1.x的差异分析
java·经验分享·nacos·springcloud
Anastasiozzzz1 小时前
Java Lambda 揭秘:从匿名内部类到底层原理的深度解析
java·开发语言
骇客野人1 小时前
通过脚本推送Docker镜像
java·docker·容器
铁蛋AI编程实战2 小时前
通义千问 3.5 Turbo GGUF 量化版本地部署教程:4G 显存即可运行,数据永不泄露
java·人工智能·python
晚霞的不甘2 小时前
CANN 编译器深度解析:UB、L1 与 Global Memory 的协同调度机制
java·后端·spring·架构·音视频
SunnyDays10112 小时前
使用 Java 冻结 Excel 行和列:完整指南
java·冻结excel行和列
摇滚侠2 小时前
在 SpringBoot 项目中,开发工具使用 IDEA,.idea 目录下的文件需要提交吗
java·spring boot·intellij-idea
云姜.2 小时前
java多态
java·开发语言·c++
李堇2 小时前
android滚动列表VerticalRollingTextView
android·java