JSP/Servlet应用:笔记

37 篇文章 0 订阅
35 篇文章 11 订阅

1、JSP页面引用CSS和JS文件。

2、Servlet中页面跳转URL的写法。

3、Servlet过滤器(Filter)不过滤登录页面、JS和CSS文件。

4、一个Servlet类处理多个方法。

5、Servlet返回字符串或JSON内容。

 

1、JSP页面引用CSS和JS文件

<link href="${pageContext.request.contextPath}/CSS/base.css" rel="stylesheet" type="text/css">
<script src="${pageContext.request.contextPath}/JS/base.js" type=""></script>

说明:${ }是EL表达式语言,通过EL的隐含对象 pageContext 获取页面上下文对象为pageContext,用于访问JSP内置对象(例如request、response、out、session、exception和page等,但不能用于获取application、config和pageContext对象)和servletContext。在获取到这些内置对象后,就可以获取其属性值。

 

2、Servlet中页面跳转URL的写法

response.sendRedirect(request.getContextPath() + "/User/UserList.jsp");

HttpServletRequest接口的 getContextPath() 方法返回请求的上下文路径,此路径以“/”开头。

 

3、Servlet过滤器(Filter)不过滤登录页面、JS和CSS文件

// 过滤处理方法
@Override
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException
{
    HttpServletRequest httpServletRequest = (HttpServletRequest) request;
    String servletPath = httpServletRequest.getServletPath();  //获取客户端所请求的脚本文件的文件路径
    //不过滤处理:登录页面、JS和CSS文件
    if (!servletPath.equals("/login.jsp") && !servletPath.equals("/servlet/LoginServlet")
            && !servletPath.endsWith(".js") && !servletPath.endsWith(".css"))
    {
        //省略校验代码...
    }

    // 传递给下一过滤器
    chain.doFilter(request, response);
}

 

4、一个Servlet类处理多个方法

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/**
 * 用户Servlet类
 * @author pan_junbiao
 */
@WebServlet(name = "UserServlet", urlPatterns = "/servlet/UserServlet")
public class UserServlet extends HttpServlet
{
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        //获取参数,识别用户想请求的方法
        String methodName = request.getParameter("method");
        if (methodName == null || methodName.isEmpty())
        {
            throw new RuntimeException("没有传递method参数");
        }

        switch (methodName)
        {
            case "list":
            {
                getUserList(request, response);
                break;
            }
            case "detail":
            {
                getUserDetail(request, response);
                break;
            }
            default:
                break;
        }
    }

    /**
     * 获取用户列表
     */
    public void getUserList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        // 忽略中间代码...
    }

    /**
     * 获取用户详情
     */
    public void getUserDetail(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        // 忽略中间代码...
    }
}

 

5、Servlet返回字符串或JSON内容

5.1 Servlet返回字符串

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
 
/**
 * 输出字符串Servlet类
 * @author pan_junbiao
 */
@WebServlet(name="CharacterServlet",urlPatterns = "/Servlet/CharacterServlet")
public class CharacterServlet extends HttpServlet
{
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        String result = "您好,欢迎访问 pan_junbiao的博客!";
 
        //返回结果
        response.setContentType("text/text");
        response.setCharacterEncoding("UTF-8");
        // 获取PrintWriter对象
        PrintWriter out = response.getWriter();
        out.print(result);
        // 释放PrintWriter对象
        out.flush();
        out.close();
    }
}

5.2 Servlet返回JSON内容

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
 
/**
 * 输出JSON内容Servlet类
 * @author pan_junbiao
 */
@WebServlet(name="JsonServlet",urlPatterns = "/Servlet/JsonServlet")
public class JsonServlet extends HttpServlet
{
    @Override
    public void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {
        String json = "{\n" +
                "\t\"userId\": 1,\n" +
                "\t\"userName\": \"pan_junbiao的博客\",\n" +
                "\t\"blogUrl\": \" https: //blog.csdn.net/pan_junbiao\",\n" +
                "\t\"sex\": \"男\"\n" +
                "}";
 
        //返回结果
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        // 获取PrintWriter对象
        PrintWriter out = response.getWriter();
        out.print(json);
        // 释放PrintWriter对象
        out.flush();
        out.close();
    }
}

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pan_junbiao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值