标签: url-mapping

RESTful grails应用程序:DRYing up UrlMapping

假设我们有一个grails web应用程序,它暴露了几个资源.

  • 标签
  • 网址
  • 用户

该应用程序具有经典的Web界面,用户可以与之交互并进行一些管理.我们希望通过RESTful API将应用程序中的资源公开给客户端,并且我们不希望应用程序的这一部分混乱我们已有的控制器和代码.所以我们想出了以下内容:

如果Web界面提供了host/app_path/url/[list|show|create]我们想要的REST API /host/app_path/rest/url.

所以我们最终得到了以下UrlMappings文件:

class UrlMappings {
static mappings = {
    "/$controller/$action?/$id?"{

    }

    /* adding new urls and listing them */
    "/rest/url"{
        controller = "urlRest"
        action = [POST: "save", PUT: "save", GET: "list", DELETE:"error"]
    }

    /* accessing a single url */
    "/rest/url/$id"{
        controller = "urlRest"
        action = [POST: "update", PUT: "update", GET: "show", DELETE: "delete"]
    }

    /* non-crud stuff on urls */
    "/rest/url/$action?/$id?"{
        controller = "urlRest"
    }

    "/"(view:"/index")
    "500"(view:'/error')
} …
Run Code Online (Sandbox Code Playgroud)

grails groovy dry url-mapping

7
推荐指数
1
解决办法
5579
查看次数

无XML的Spring 3.1没有为HTTP请求找到映射

我已经搜索了谷歌,stackoverflow,以及我可以看几天的每个论坛,我的键盘很可能成为头部的目标.

我正在运行一个非常小的Spring 3.1 MVC,它具有无XML设置.问题是,当我启动时,我看到了;

INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/start.action],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView com.xxxxxx.info.HomeController.start(javax.servlet.http.HttpServletRequest)
INFO : org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping - Mapped "{[/*],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public org.springframework.web.servlet.ModelAndView com.xxxxxx.info.HomeController.home(java.util.Locale,org.springframework.ui.Model)
Run Code Online (Sandbox Code Playgroud)

然而,当我尝试点击这些URL中的任何一个时,我看到我的控制器内的日志语句被激活然后立即得到;

INFO : com.xxxxxx.info.HomeController - Welcome home! the client locale is en_US
WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/WEB-INF/jsps/home.jsp] in DispatcherServlet with name 'dispatcher'
Run Code Online (Sandbox Code Playgroud)

这是我的源文件.

初始化 -

public class Initializer implements WebApplicationInitializer {

    public void onStartup(ServletContext servletContext) throws ServletException {
        AnnotationConfigWebApplicationContext mvcContext = new AnnotationConfigWebApplicationContext();
        mvcContext.register(MvcConfig.class);

        ServletRegistration.Dynamic dispatcher = servletContext.addServlet("dispatcher", …
Run Code Online (Sandbox Code Playgroud)

java spring spring-mvc url-mapping tomcat7

7
推荐指数
1
解决办法
1066
查看次数

泽西与Struts2

我正在使用带有Struts2的球衣.但是由RestFul服务调用不起作用.以下是我的配置文件

在struts.xml

<?xml version="1.0" encoding="UTF-8"?>    
<!DOCTYPE struts PUBLIC
        "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN"
        "http://struts.apache.org/dtds/struts-2.1.dtd">

<struts>
    <package name="default" namespace="/" extends="struts-default">
    <result-types>
        <result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
    </result-types>

     <interceptors>
            <interceptor-stack name="default">
                 <interceptor-ref name="defaultStack">
                    <param name="exception.logEnabled">true</param>
                    <param name="exception.logLevel">ERROR</param>
                    <param name="params.excludeParams">/service/*</param>
                </interceptor-ref>
            </interceptor-stack>
        </interceptors>

        <default-interceptor-ref name="default" />

        <action name="defaultAction"
            class="com.gemini.web.controller.BinMasterController"
            method="binMaster">
            <result name="binMaster" type="tiles">binMaster</result>
        </action>    
    </package>    
</struts>
Run Code Online (Sandbox Code Playgroud)

在web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
    <!-- Client config -->
    <context-param>
        <param-name>
            org.apache.tiles.impl.BasicTilesContainer.DEFINITIONS_CONFIG
        </param-name>
        <param-value>
            /WEB-INF/tiles.xml
        </param-value>
    </context-param>

    <filter>
        <filter-name>struts2</filter-name> …
Run Code Online (Sandbox Code Playgroud)

rest struts2 jersey url-mapping restful-url

7
推荐指数
1
解决办法
4135
查看次数

UrlMappings将URL指向Grails中的资产管道文件

在Grails 3.0中,如何将URL映射到该文件assets夹下的文件?

例如:
http://localhost:8080/favicon.ico- >grails-app/assets/images/bookmark.ico

我尝试了一些测试映射,例如:

的grails-app /控制器/ UrlMappings.groovy

class UrlMappings {

   static mappings = {
      ...
      "/t1.png"  (uri: "/assets/images/test.png")
      "/t2.png"  (uri: "/assets/test.png")
      "/t3.png"  (uri: "/images/test.png")
      "/t4.png"  (dir: "assets/images", file: "test.png")
      ...
      }

}
Run Code Online (Sandbox Code Playgroud)

...但它们都会导致500服务器错误.

grails url-mapping urlmappings.groovy asset-pipeline grails-3.0

7
推荐指数
1
解决办法
1588
查看次数

Grails SEO友好的URL

在grails中创建URL的标准方法是:

<a href="${createLink(controller:'news', action: 'show', params: [id: news.id])}">${news.title}</a>
Run Code Online (Sandbox Code Playgroud)

生成网址: /news/show/102

我想要更多SEO友好的URL,如:

/news/102/this-is-the-hottest-news-today
Run Code Online (Sandbox Code Playgroud)

在Grails中最干净的方法是什么?我可以使用grails URLMapping映射/news/show/102/news/102,但我如何创建像上面这样的完整URL?

url seo grails url-mapping

6
推荐指数
1
解决办法
3082
查看次数

spring BeanCreationException关于映射的困惑

试图整合hibernate和spring,我遇到了这个错误

严重:上下文初始化失败 org.springframework.beans.factory.BeanCreationException:创建名为' org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping'的bean时出错:bean的初始化失败; 嵌套异常是java.lang.IllegalStateException:无法将处理程序' org.me.spring.hib.school.web.SchoolController#0' 映射到URL路径[ /allschools]:已经有类型[class org.me.spring.hib.school.web.SchoolController]映射的处理程序.

我的控制器看起来像

package org.me.spring.hib.school.web;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.me.spring.hib.school.dao.SchoolDAO;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;

@Controller
public class SchoolController {
    private SchoolDAO schoolDao;

    public SchoolDAO getSchoolDao() {
        return schoolDao;
    }

    public void setSchoolDao(SchoolDAO schoolDao) {
        this.schoolDao = schoolDao;
    }
        @RequestMapping("/allschools")
    public ModelAndView showAllSchools(HttpServletRequest request,HttpServletResponse response) throws Exception{
        if(this.schoolDao ==null){
            System.out.println("this.schoolDao is null");
        }
        ModelMap modelMap = new ModelMap();
        modelMap.addAttribute("schoolsList", this.schoolDao.getAllSchools());
        return new …
Run Code Online (Sandbox Code Playgroud)

java spring-mvc url-mapping

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

如何知道从哪里抛出错误500(Grails)

我在UrlMappings.groovy中有下一个场景:

"/user/$action?" (controller:"user")
"/admin/$action?" (controller:"user")

"500"(controller:"error", action:"show")
"404"(controller:"error", action:"show")
Run Code Online (Sandbox Code Playgroud)

我需要知道errorController从哪个控制器抛出引发错误500的异常(如果有的话),并为用户和管理员显示不同的错误页面.

有任何想法吗?

提前致谢.

error-handling grails url-mapping

6
推荐指数
2
解决办法
8933
查看次数

Parse_url相当于grails/groovy?

有一个groovy/grails等同于PHP的parse_url(http://php.net/manual/en/function.parse-url.php)或python的urlparse(http://docs.python.org/library/urlparse.html)将URL字符串转换为包含主机,协议,查询字符串,片段,URI等的结构?

我以为它可能在grails.org/doc/latest/api/org/codehaus/groovy/grails/web/util/WebUtils.html中,但没有看到任何内容.我不认为HTTPBuilder或各种URLMapping实用程序是我需要的.

我真的只想从路径和queryString中拉出一个地图并正确处理边缘情况(params /blah/fuzz?foo=bar&foo=baz,片段/blah/fuzz?foo=bar#baz,重定向的编码URL).

我知道我可以通过巧妙地使用URLMapping来处理PATH组件,例如:/blah/$code,但我离开了解码param块...

谢谢

url grails groovy parsing url-mapping

6
推荐指数
1
解决办法
6049
查看次数

UrlMapping到Grails中的静态文件

我想映射一个位于我的web-app目录中的静态文件sitemap.xml和robots.txt.网址应如下:

http://www.mydomain.com/sitemap.xml 
http://www.mydomain.com/robots.txt
Run Code Online (Sandbox Code Playgroud)

如何设置网址映射以使这些路由有效?

grails url-mapping grails-2.0

6
推荐指数
2
解决办法
3714
查看次数

Laravel 动态控制器路由

我使用 Laravel 5.4,现在我想对控制器进行动态路由,这意味着我可以直接访问UserControllerProfile函数抛出路由,例如。

GET http://localhost/user/profile?userid=123
Run Code Online (Sandbox Code Playgroud)

上面的示例网址意愿访问UserController和功能profile与后动态参数?。如果我想访问不同的控制器,我只需要将userparam更改为Controllername。

我创建了一条这样的路线并且它有效。

Route::get('v1/{controller_name}/{function_name}/{query?}', function ($controller_name, $function_name){

    $app = app();
    $controller = $app->make('\App\Http\Controllers\Api\\'.$controller_name.'Controller');
    return $controller->callAction($function_name, $parameters = array());
});
Run Code Online (Sandbox Code Playgroud)

但我不知道如何传递参数。

还有其他更好的方法来做到这一点吗?

php url-routing url-mapping laravel laravel-5

6
推荐指数
1
解决办法
4622
查看次数