Servlet编程(下)

本文介绍了Servlet编程中JSP内置对象(如out、session和application)的获取与使用,以及如何处理中文乱码、使用Filter进行安全验证和URL过滤,同时提到了异常处理和错误页面的配置。
摘要由CSDN通过智能技术生成

Servlet编程

Servlet与JSP内置对象

JSP和Servlet等价,那么在Servlet中也可以使用JSP内置对象

out对象

通过response获取,因为是向客户端发送信息

PrintWriter out=resp.getWriter();

在方法中获取out对象,默认不支持中文,因为没有中文编码

resp.setContentType("text/html;charset = gb2312");

session对象

通过request对象获取,因为是根据当前的请求获取与之关联的HttpSession对象

HttpSession session = req.getSession();

application对象

ServletContext application = this.getServletContext();

可以使用application实现跳转(使用response.sendRedirect重定向)

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

rd.forward(req,resp);

Servlet读取参数

设置全局参数

<context-param>

    <param-name>name</param-name>

    <param-value>Mike</param-value>

</context-param>

所有Servlet都可以访问

设置局部参数

<servlet>

    <servlet-name>WelcomeServlet</servlet-name>

    <servlet-class>org.example.learnServlet</servlet-class>

    <init-param>

        <param-name>name</param-name>

        <param-value>John</param-value>

    </init-param>

</servlet>

只有指定Servlet才能访问

获得全局参数

ServletContext application = this.getServletContext();

String name = application.getInitParameter("name2")

通过application

获得局部参数

String name = this.getInitParameter("name1");

this指Servlet本身

过滤器Filter

可以解决中文乱码问题

可以对网页访问进行安全验证

可以区别用户的管理员

Filter à Web组件

对Web应用前期处理和后期处理进行控制

可以拦截请求和响应、查看提取操作客户端和服务器交换的数据

在web.xml中配置,作用HTML、JSP、Servlet

客户端àFilteràHTML/JSP/Servlet

因为过滤器是后面加入的,对源代码不产生影响,所以适合扩展

创建过滤器

创建一个Java类

public class learnedFilter implements Filter {

    @Override

    public void init(FilterConfig filterConfig) throws ServletException {

    }


    @Override

    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        // 设置请求的字符编码为"gb2312"
    servletRequest.setCharacterEncoding("gb2312");
        // 继续执行过滤器链中的下一个过滤器或目标资源(如Servlet)
filterChain.doFilter(servletRequest,servletResponse);

    }


    @Override

    public void destroy() {

    }

}

实现Filter接口,及其方法

在doFilter方法中解决了客户端传送数据给服务器时,服务器读取中文乱码问题

若不在这里设置,还需要挨个给Servlet中设置

在web.xml中配置过滤器

<filter>

    <filter-name>filter</filter-name>

    <filter-class>org.example.learnedFilter</filter-class>

</filter>

<filter-mapping>

    <filter-name>filter</filter-name>

    <url-pattern>/*</url-pattern>

</filter-mapping>

<filter-name> 指定过滤器名字

<filter-class> 指定过滤器类路径

<filter-mapping>配置过滤器映射

<url-pattern> 指定过滤模式,当URL中包含指定的路径时,触发过滤器

这里/*表示过滤所有文件,以/开头表示根路径

异常处理

一个共享的异常处理页面

创建一个JSP页面,在开头部分添加isErrorPage=“true”

<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>

之后,在web.xml页面中注册

<error-page>

    <location>/error.jsp</location>

    <exception-type>java.lang.Exception</exception-type>

</error-page>

location指定错误页面类路径

exception-type 指定出现什么错误交由错误页面

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值