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>
相关推荐
蒸蒸yyyyzwd2 小时前
cpp对象模型学习笔记1.1-2.8
java·笔记·学习
程序员徐师兄3 小时前
Windows JDK11 下载安装教程,适合新手
java·windows·jdk11 下载安装·jdk11 下载教程
RANCE_atttackkk3 小时前
[Java]实现使用邮箱找回密码的功能
java·开发语言·前端·spring boot·intellij-idea·idea
五岳3 小时前
DTS按业务场景批量迁移阿里云MySQL表实战(下):迁移管理平台设计与实现
java·应用·dts
zhougl9964 小时前
Java 所有关键字及规范分类
java·开发语言
Python 老手4 小时前
Python while 循环 极简核心讲解
java·python·算法
java1234_小锋4 小时前
Java高频面试题:MyISAM索引与InnoDB索引的区别?
java·开发语言
Mr_Xuhhh4 小时前
MySQL函数详解:日期、字符串、数学及其他常用函数
java·数据库·sql
测试开发Kevin5 小时前
小tip:换行符CRLF 和 LF 的区别以及二者在实际项目中的影响
java·开发语言·python
笨手笨脚の5 小时前
Redis: Thread limit exceeded replacing blocked worker
java·redis·forkjoin·thread limit