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>
相关推荐
ok!ko2 小时前
设计模式之原型模式(通俗易懂--代码辅助理解【Java版】)
java·设计模式·原型模式
2402_857589362 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
吾爱星辰3 小时前
Kotlin 处理字符串和正则表达式(二十一)
java·开发语言·jvm·正则表达式·kotlin
哎呦没3 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
编程、小哥哥4 小时前
netty之Netty与SpringBoot整合
java·spring boot·spring
IT学长编程5 小时前
计算机毕业设计 玩具租赁系统的设计与实现 Java实战项目 附源码+文档+视频讲解
java·spring boot·毕业设计·课程设计·毕业论文·计算机毕业设计选题·玩具租赁系统
莹雨潇潇5 小时前
Docker 快速入门(Ubuntu版)
java·前端·docker·容器
杨哥带你写代码5 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
郭二哈6 小时前
C++——模板进阶、继承
java·服务器·c++
A尘埃6 小时前
SpringBoot的数据访问
java·spring boot·后端