当前位置: 首页 > 知识库问答 >
问题:

没有可用消息”Spring Boot、JAX-RS和angularJS的错误

尚棋
2023-03-14

我创建了项目Spring Boot项目并实施了Restful服务,如下所示:

@CrossOrigin
@RestController
@RequestMapping("/Users")
public class UsersRestController {

@RequestMapping(value="/AddUser")
public Users addUsers( Users user){
    return UM.saveT(user);
}
}

AngularJS方法:

Var url ="localhost:8080/App/Users";

$scope.saveUsers = function() {
$http.post(url+"/AddUser?name="+$scope.NameUser+"&email="+$scope.emailUser)
      .success(function(data) {
                $scope.ListUsers = data;
                $window.location.href="localhost:8080/App/AllUsers";
              }).error(function(err, data) {
                $scope.messag = "Add user error !!";
              });
}

在执行添加用户的操作之前,管理员必须通过身份验证才能访问我的应用程序。我做了如下配置:

@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled=true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter{
@Autowired
      protected void globalConfig(AuthenticationManagerBuilder auth, DataSource dataSource) throws Exception {
     //auth.inMemoryAuthentication().withUser("user").password("123").roles("USER");
         auth.jdbcAuthentication()
             .dataSource(dataSource)
             .usersByUsernameQuery("select username as principal, password as credentials, etat as actived from utilisateurs where username=?")
             .authoritiesByUsernameQuery("select u.username as principal, ur.nom_role as role from utilisateurs u inner join roles ur on(u.roles_id=ur.id_role) where u.username=?")
             .rolePrefix("ROLE_");
     }

protected void configure(HttpSecurity http) throws Exception {

        http
          .sessionManagement().maximumSessions(100).maxSessionsPreventsLogin(false).expiredUrl("/Login");
 http
     .authorizeRequests()
     .antMatchers("/Users/").access("hasRole('ADMIN')")  
      .antMatchers("/Login").anonymous()
      .anyRequest().authenticated()
      .and()
      .formLogin().loginPage("/Login").permitAll()
      .defaultSuccessUrl("/")
      .failureUrl("/Login?error=true")  
       .and()
         .logout()
            .invalidateHttpSession(true)
            .clearAuthentication(true)
            .logoutUrl("/logout")
            .permitAll() 
           .logoutSuccessUrl("/Login")
        .and().exceptionHandling().accessDeniedPage("/403")
        .and()
         .csrf();
}

-类MvcConfig.java:

@Configuration
public class MvcConfig  extends WebMvcConfigurerAdapter{
@Override
public void configureDefaultServletHandling(
     DefaultServletHandlerConfigurer configurer) {
       configurer.enable();
  }
}

我对网页使用JSP框架,因此我拒绝使用控制器返回JSP页面:

@Controller
public class WebController {

    @RequestMapping( value = "/Login" )
    public String login(){
    return "login";
    }

    @RequestMapping( value = "/" )
    public String Home(){
    return "index";
    }

    @RequestMapping( value = "/Users" )
    public String Users(){
    return "indexUsers";
    }

-当我添加一个新用户后,我遇到以下问题:

错误:“未找到”消息:“无可用消息”路径:“/App/Users/AddUser”状态:404时间戳:1494256474299

以下是请求的内容:

Request URL:http://localhost:8080/App/Users/AddUser?name=Michel&email=michel@gmail.com  

Request Method:POST

Status Code:404 

Remote Address:[::1]:8080

Referrer Policy:no-referrer-when-downgrade

**Request Headers

Cache-Control:no-cache, no-store, max-age=0, must-revalidate

Content-Type:application/json;charset=UTF-8

Date:Mon, 08 May 2017 15:14:34 GMT

Expires:0

Pragma:no-cache

Transfer-Encoding:chunked

X-Content-Type-Options:nosniff

X-Frame-Options:DENY

X-XSS-Protection:1; mode=block

Accept:application/json, text/plain, */*

Accept-Encoding:gzip, deflate, br

Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4

AlexaToolbar-ALX_NS_PH:AlexaToolbar/alx-4.0.1

Connection:keep-alive

Content-Length:0

Cookie:JSESSIONID=671F3685C71CDEB58726FD1392389FA2

Host:localhost:8080

Origin:http://localhost:8080

Referer:http://localhost:8080/App/Users

User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, 
like Gecko) Chrome/57.0.2987.133 Safari/537.36

**Query Strings Parameters:

name=Michel

email=michel@gmail.com

但是当我做Api Rest(超文本传输协议://localhost: 8080/用户/AddUser? Name=Michel

有人能帮我找到这里缺失的点吗?

共有1个答案

娄德运
2023-03-14

默认情况下使用所有Jax-RS方法**Get**。然后我们必须在方法angularjs中定义方法Get。

@CrossOrigin
@RestController
@RequestMapping("/Users")
public class UsersRestController {

@RequestMapping(value="/AddUser")
public Users addUsers( Users user){
    return UM.saveT(user);
}
}

-方法angularJS:

$scope.saveUsers = function() {
    $http.get("URL_PATH")
          .success(function(data) {

            //Your code here
               })
    }
 类似资料:
  • 问题内容: 我正在努力弄清Java中的一些概念: JSR:描述规格,但不包含实际的实现。例如,http://jsr311.java.net/是“ RESTful Web服务的Java™API”的“主页”。它用作JSR-311的所有实现的通用参考。 可以从http://mvnrepository.com/artifact/javax.ws.rs/jsr311-api下载JSR-311的接口(?),但

  • 我正在尝试创建一个简单的REST api,我遵循了Jersey网站上的教程:https://jersey.java.net/nonav/documentation/2.0/deployment.html 以下是错误: 原因:javax.servlet.unavailableException:org.eclipse.jetty.servlet.baseholder.doStart(basehold

  • 问题内容: 我有一个服务,其中路径的最后一部分是可选的,用户都可以输入 / mypath / 和 / mypath / param1 / 。 我试图使用正则表达式来过滤路径的最后一部分: 我使用RestEasy作为我的JAX- RS提供程序,并且代码在Tomcat中按预期工作,但是当我在JBoss中部署它时,如果不提交可选部分,则会得到405返回代码。 我在这里做错什么了吗,还是无法通过便携式方式

  • 我创建了一个AngularJS应用程序,没有 我的一个输入字段是number。 现在我如何显示错误消息没有从名称? 当我在字段中输入任意字符时,它会在输入类中显示ng invalid ng invalid number tag(屏幕截图1)。当输入一些数字时,它会显示ng有效类(屏幕截图2)。所以我的代码是works。 但问题是我的错误消息不起作用。 我遵循以下教程:http://codepen.

  • JAX-RS是否可以只使用带有注释的Servlet3.0(特别是Tomcat7)来实现,而不必实现另一个Servlet容器? 如果不是,请解释为什么下面这本书中的引用是不正确的,或者是我对它的解释是错误的。 因为此示例部署在Java EE应用程序服务器或独立的Servlet3.x容器中,所以我们只需要一个空的web.xml文件。服务器将检测到某个应用程序类在您的WAR中,并自动部署它。(带有JAX

  • JAX-RS (JSR 311) 是一个社区驱动的标准用于使用 Java 构建 RESTful Web 服务。