相关疑难解决方法(0)

如何在Spring MVC中处理静态内容?

我正在使用Spring MVC 3开发一个webapp,并且DispatcherServlet像'so'一样捕获所有请求(web.xml):

  <servlet>
    <servlet-name>app</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
  </servlet>

  <servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/</url-pattern>
  </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

现在这可以像宣传的那样工作,但是我如何处理静态内容呢?以前,在使用RESTful URL之前,我会抓住所有*.html并将其发送给DispatcherServlet,但现在它是一个不同的球类游戏.

我有一个/ static /文件夹,其中包含/ styles /,/ js /,/ images/etc,我想从中排除/ static/*DispatcherServlet.

现在,当我这样做时,我可以获得静态资源:

  <servlet-mapping>
    <servlet-name>app</servlet-name>
    <url-pattern>/app/</url-pattern>
  </servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

但我希望它有很好的URL(我使用Spring MVC 3)而不是登陆页面www.domain.com/app/

我也不希望解决方案耦合到tomcat或任何其他servlet容器,并且因为这是(相对)低流量我不需要网络服务器(如apache httpd)infront.

有一个干净的解决方案吗?

spring-mvc

197
推荐指数
9
解决办法
21万
查看次数

在web.xml中,url-pattern matcher有没有办法排除URL?

我写了一个过滤器,需要每一个在我的网站上的网址,除了CSS,JS和图像文件访问时被调用.所以在我的定义中,我希望有类似的东西:

<filter-mapping>
   <filter-name>myAuthorizationFilter</filter-name>
   <url-pattern>NOT /css && NOT /js && NOT /images</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

反正有没有这样做?我能找到的唯一文件只有/*

更新:

我最终使用类似于Mr.J4mes提供的答案:

   private static Pattern excludeUrls = Pattern.compile("^.*/(css|js|images)/.*$", Pattern.CASE_INSENSITIVE);
   private boolean isWorthyRequest(HttpServletRequest request) {
       String url = request.getRequestURI().toString();
       Matcher m = excludeUrls.matcher(url);

       return (!m.matches());
   }
Run Code Online (Sandbox Code Playgroud)

java spring tomcat servlet-filters

22
推荐指数
2
解决办法
4万
查看次数

如何防止映射在/*上的前端控制器servlet处理静态资源

我有一个servlet作为前端控制器.

@WebServlet("/*")
Run Code Online (Sandbox Code Playgroud)

但是,这也处理CSS和图像文件.我怎么能阻止这个?

servlets

15
推荐指数
1
解决办法
1万
查看次数

如何在filtermapping中排除网址

web.xml中

<filter>
    <filter-name>SessionCheckFilter</filter-name>
    <filter-class>filter.SessionCheckFilter</filter-class>
</filter>
<filter-mapping>
    <filter-name>SessionCheckFilter</filter-name>
    <url-pattern>/faces/app/admin/*</url-pattern>
</filter-mapping>
Run Code Online (Sandbox Code Playgroud)

我试图排除/faces/app/admin/index.xhtml唯一的,有没有办法做到这一点?

如果在web.xml中没有排除url patterin,也许我可以操纵该doFilter()方法来排除url?

java web.xml url-pattern servlet-filters

11
推荐指数
1
解决办法
3万
查看次数

Java Servlet - 将servlet映射到每个URL而不是字符串

我有一个配置为处理所有URL(*)的servlet :

<servlet>
    <servlet-name>MyServ</servlet-name>
    <servlet-class>MyServlet</servlet-class>
</servlet>

<servlet-mapping>
    <servlet-name>MyServ</servlet-name>
    <url-pattern>/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

我需要为URLS开头/static/,它应该从静态服务它们WEB-INF.也就是说,MyServ应该成为一切不过 /static.

我怎样才能做到这一点?


更新:澄清一下,我想要的是:

/*/- 转到MyServ
/static/dir/file.css- Jetty从/ dir /提供静态file.css.

我不确定要做什么的web.xml,或者放置静态文件的位置.

我尝试添加这个:

<servlet-mapping>
    <servlet-name>default</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>
Run Code Online (Sandbox Code Playgroud)

但是,当我转到/static/URL时,我得到:

HTTP ERROR 404

Problem accessing /static/dir/file.css. Reason: 
    Not Found

Powered by Jetty://
Run Code Online (Sandbox Code Playgroud)

我不知道如果我的web.xml文件是错误的,或者如果我只是把文件在错误的地方(我已经下试过src/main/webappsrc/main/webapp/lib/META-INF/resources/)


码头

我正在使用Jetty.我想避免任何其他层,如Nginx,Apache等.

为了赢得赏金,请确保您回答Jetty的作品.

java servlets

10
推荐指数
1
解决办法
1480
查看次数

如何从泽西过滤器中排除一些网址?

我用jersey来创建webservices.我已经创建了请求过滤器ContainerRequestFilter.我只针对某些URI问题浏览了 泽西请求过滤器,但我想排除某些网址的过滤器.

@Provider
public class AuthFilter implements ContainerRequestFilter{

    @Override
    public void filter(ContainerRequestContext requestContext) throws IOException {

// business logic

   }
}
Run Code Online (Sandbox Code Playgroud)

java web-services jersey filter

10
推荐指数
1
解决办法
7857
查看次数

使用过滤器类的重定向过多

JSF 2.2和Primefaces 6.0

我正在尝试使用过滤器类进行身份验证会话控制。但是过滤器类运行21次,并且浏览器设置了错误消息ERR_TOO_MANY_REDIRECTS。

Web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
    version="3.0">
    <display-name>maintenancemonitoring</display-name>
    <context-param>
        <param-name>javax.faces.DEFAULT_SUFFIX</param-name>
        <param-value>.xhtml</param-value>
    </context-param>
    <context-param>
        <description>State saving method: 'client' or 'server' (=default). See JSF Specification 2.5.2</description>
        <param-name>javax.faces.STATE_SAVING_METHOD</param-name>
        <param-value>client</param-value>
    </context-param>
    <context-param>
        <param-name>javax.servlet.jsp.jstl.fmt.localizationContext</param-name>
        <param-value>resources.application</param-value>
    </context-param>
    <listener>
        <listener-class>com.sun.faces.config.ConfigureListener</listener-class>
    </listener>
    <filter>
        <filter-name>authFilter</filter-name>
        <filter-class>view.filters.AuthenticationFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>authFilter</filter-name>
        <url-pattern>*.xhtml</url-pattern>
        <dispatcher>REQUEST</dispatcher>
    </filter-mapping>
    <context-param>
        <param-name>javax.faces.PROJECT_STAGE</param-name>
        <param-value>Development</param-value>
    </context-param>
    <context-param>
        <param-name>primefaces.THEME</param-name>
        <param-value>cupertino</param-value>
    </context-param>
    <welcome-file-list>
        <welcome-file>index.xhtml</welcome-file>
    </welcome-file-list>
</web-app>
Run Code Online (Sandbox Code Playgroud)

过滤器类别:

public void
        doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException,
                                                                                                         ServletException {
    HttpServletRequest request = (HttpServletRequest) servletRequest; …
Run Code Online (Sandbox Code Playgroud)

jsf servlet-filters

5
推荐指数
1
解决办法
3098
查看次数

排除servlet过滤器中的特定URL

如何从过滤器中排除特定格式的URL?

有标准方法还是替代解决方案?

url web.xml servlets servlet-filters

4
推荐指数
1
解决办法
7003
查看次数