servlet无法跳转_第七章 Servlet高级编程

1.在 Servlet 内实现跳转

在前面的章节中已经提到,Servlet 是充当控制者(Controller)的角色的,可以用来处理来自 JSP 页面的输入参数,以及从 JavaBean 中读取来自数据库的数据,最后跳转到目标页面。因此,Servlet 为了实现控制者的这一角色,必须要能够实现跳转

2.常用的 Servlet 内跳转有 2 种

(1) 重定向(对应 JSP 内置对象中的 sendRedirect)

response.sendRedirect("URL 地址");

(2)服务器内 跳转(对应 JSP 中的 forward 标签)

ServletContext application = this.getServletContext();

RequestDispatcher rd = application.getRequestDispatcher("URL 地址");

rd.forward(request, response);

这两种在 Servlet 内的跳转与 JSP 中提到的跳转是等效的。只是因为一个是位于 JSP 页面中,一个是位于 Servlet 内。需要注意的是,两种情况下的 URL 地址写法不一样。在第一种中,如果写绝对路径,必须将虚拟目录根目录写在里面,如prj07/page.jsp;第二种方法中,不需要将虚拟目录根目录写在里面,如/page.jsp

  1. 以“初始化servlet”为例。很多网站中,首页上就存在很多从数据库中查询的数据结果,但是查询数据库的代码又不能写在JSP内,因此,可以用servlet查询数据库,得到结果,跳转到JSP显示。
  1. 两种方法的适用场合

重定向redirect:当不需要传递参数或者需要跳转到另一个服务器页面时使用重定向redirect

服务器内跳转forward

当需要从 A 页面跳转到 B 页面时,存在着大量暂态数据(即在 B 页面显示过后就可以不用的数据)时,为了节省内存,可以使用服务器内跳转,可以避免把很多内容存储在 session中,从而导致服务器内存消耗过大的情况

5.ServletContext高级功能

ServletContext 是 application 对象所对应的接口,它具有一些高级功能,其中最常见的是获取绝对路径

ServletContext 能够直接获取当前工程中资源在服务器硬盘上的绝对路径

6.

  1. 使用过滤器

db7a1952e5ba28333b14b29bc0f957d0.png
  1. 需要过滤器的情况
  2. 情况一: 为了解决中文乱码问题
  3. 情况二:很多的门户网站都会有登录页面,这是为了业务需求,同时也是为了使用户控制更加的安全。
  4. 情况三:许多的网站都存在着各种不同的权限,比如,只有管理员才可以对网站的某些数据进行维护和修改,一般的普通用户是无法完成该功能的。

9.过滤器属于一种小巧的、可插入的 Web 组件,它能够对 Web 应用程序的前期处理和后期处理进行控制,可以拦截请求和响应,查看、提取或者以某种方式操作正在客户端和服务器之间进行交换的数据

10.Servlet 过滤器可以当作一个只需要在 web.xml 文件中配置就可以灵活使用、可以重用的模块化组件。它能够对 JSP、HTML、Servlet 文件进行过滤

例(一)在Servlet内实现 跳转==forward服务器内跳转

http://localhost:8088/prj07/servlet/InitServlet

2db3a087cdf16fa40f5fd21bbb517013.png

InitServlet.java

package com.demo;

import java.io.IOException;

import java.io.PrintWriter;

import javax.security.auth.message.callback.PrivateKeyCallback.Request;

import javax.servlet.RequestDispatcher;

import javax.servlet.ServletContext;

import javax.servlet.ServletException;

import javax.servlet.http.HttpServlet;

import javax.servlet.http.HttpServletRequest;

import javax.servlet.http.HttpServletResponse;

public class InitServlet extends HttpServlet {

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

String message="欢迎光临,,";

request.setAttribute("msg", message);

ServletContext application=this.getServletContext();

RequestDispatcher rd=application.getRequestDispatcher("/index.jsp");

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值