gpt4 book ai didi

java - 从页面名称中删除 .jsp

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:16:11 25 4
gpt4 key购买 nike

我的 Web 应用程序中有一些 jsp 页面,我的 web.xml 中有以下代码(针对每个 jsp 页面):

<servlet>
<servlet-name>login</servlet-name>
<jsp-file>/login.jsp</jsp-file>
</servlet>
<servlet-mapping>
<servlet-name>login</servlet-name>
<url-pattern>/login</url-pattern>
</servlet-mapping>

此设置从我的页面 url 中删除了 .jsp,我可以打开 /login 就像 /login.jsp

实际上这个设置使我的 jsp 页面就像一个编译过的 servlet。

是否可以在不为每个页面编写此设置的情况下对我的所有 jsp 页面执行此操作?我需要某种 url 重写。

最佳答案

您需要创建一个公共(public)过滤器并处理请求并转发到各自的 jsps如果您使用的是旧版本的 servlet,我有带注释的 writer,可以在 web.xml 中编写。 通用过滤器 com.filters.CommonFilter

<filter-mapping>
<filter-name>CommonFilter</filter-name>
<url-pattern>*.*</url-pattern>
</filter-mapping>

这里所有的请求都被转发到各自的jsps。例如.. 如果 url 是/login ,它将被转发到/login.jsp ,或者如果它是/home 那么到/home.jsp ...所有的 url 都被视为 jsp 文件,但是你可以根据您的要求

package com.filters;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebFilter;
import javax.servlet.http.HttpServletRequest;

@WebFilter("*") // give your url mapping eg..//you can write for "/yoururlspec/*"
public class CommonFilter implements Filter {

@Override
public void init(FilterConfig config) throws ServletException {
}

@Override
public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws ServletException, IOException {
HttpServletRequest request = (HttpServletRequest) req;
String path="";
if (request.getRequestURI().length() > request.getContextPath().length())
{path=request.getRequestURI().substring(request.getContextPath().length()+1, request.getRequestURI().length());
req.getRequestDispatcher(path+".jsp").forward(req, res);
}
}

@Override
public void destroy() {
}
}

关于java - 从页面名称中删除 .jsp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20030168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com