【问题标题】:The requested resource is not available when wanna map to .html file想要映射到 .html 文件时,请求的资源不可用
【发布时间】:2016-12-14 07:58:24
【问题描述】:

我正在使用 Spring mvc,并且想要制作向客户端发送一些 json 数据的 Web 应用程序,并且客户端应该使用 js 将它们可视化。

我有一些问题:

1-我的项目在 *.jsp 文件旁边有一些 *.html,我如何在没有 web.xml 的情况下处理这两个文件。我编写的代码在 *.jsp 上运行良好,但给出“请求的资源不可用”。映射 html 文件时出错。

2-正如我所说,当我想使用类似代码的 *.jsp 文件中的服务器上的 json 字符串解析时,我的服务必须以 json 形式向客户端发送对象列表

MyClass data = new Gson().fromJson(MyList.get(0).toString(), listType)

,我面临很多问题,所以我决定在 *.html 文件中的客户端做这个工作,我想知道当我不想让那个客户知道结构时我应该如何处理这个解析工作我的课?或者请告诉我是否必须与客户分享我的课程,我应该如何将它的结构发送到 html 文件?

3-我应该如何访问我在 UserSideApp.html 文件上的 restapi.jsp 中创建的数据?

这些是我的一些文件:

AppInitializer.java

public class AppInitializer implements WebApplicationInitializer {

public void onStartup(ServletContext container) throws ServletException {

    AnnotationConfigWebApplicationContext ctx = new AnnotationConfigWebApplicationContext();
    ctx.register(AppConfig.class);
    ctx.setServletContext(container);

    ServletRegistration.Dynamic servlet = container.addServlet(
            "dispatcher", new DispatcherServlet(ctx));

    servlet.setLoadOnStartup(1);
    servlet.addMapping("/");
} }

AppConfig.java

public class AppConfig {

@Bean
public ViewResolver viewResolver() {
    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix("");

    return viewResolver;
} }

我的 AppContoller.java 的一部分

@Controller
@RequestMapping("/")
public class AppController {

@Autowired
HackDataService service;

@RequestMapping(value = "/restapi", method = RequestMethod.GET)
public String jsonAPI(ModelMap model) {
    List<HackData> newList = service.findAllNewData();
    ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
    String json="";
    try {
        json = ow.writeValueAsString(newList);
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }

    model.addAttribute("List", json);
    String newjson = new Gson().toJson(newList);
    model.addAttribute("newList", newjson);
    return "newTest.jsp";
}

@RequestMapping(value = "/app", method = RequestMethod.GET)
public String htmlapp() {
    return "UserSideApp.html";
}  }

我的 .html 和 .jsp 文件都在“/WEB-INF/views/”中

【问题讨论】:

  • 请问您使用的是哪个版本的 Spring?
  • 版本为4.3.1

标签: spring jsp spring-mvc


【解决方案1】:

在第一个问题上花了将近一天的时间后,我找到了答案, 首先,我扩展了 AbstractAnnotationConfigDispatcherServletInitializer 而不是实现 WebApplicationInitializer,而对于 java Configing,我扩展了 WebMvcConfigurerAdapter。

然后我在 WEB-INF 中创建一个 pages 文件夹并将我的代码更改为这些:

AppInitializer 变得像其他互联网的样本一样。

AppConfig.java

@Configuration
@EnableWebMvc
@ComponentScan(basePackages = { "com.attackmap" })
public class AppConfig extends WebMvcConfigurerAdapter {

@Override
public void addResourceHandlers(ResourceHandlerRegistry registry) {
    registry.addResourceHandler("/pages/**").addResourceLocations("/WEB-INF/pages/");


@Bean
public ViewResolver viewResolver() {

    InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
    viewResolver.setViewClass(JstlView.class);
    viewResolver.setPrefix("/WEB-INF/views/");
    viewResolver.setSuffix("");
    return viewResolver;
}
}

AppController.java

@Controller
@RequestMapping("/")
public class AppController {

@RequestMapping(value = { "/", "/info" }, method = RequestMethod.GET)
public String welcome(ModelMap model) {
    model.addAttribute("message", "home page with info about site");
    return "homepage.jsp";
}
@RequestMapping(value = "/finalapp", method = RequestMethod.GET)
public String test() {
    return "redirect:/pages/final.htm";
} }

还有其他方法

在“src/main/webapp”中创建一个“resources”目录

在 AppConfig.java 中添加如下代码

registry.addResourceHandler("/WEB-INF/views/resources/*.html").addResourceLocations("/resources/");

对于 viewResolving,使用如下代码:

@RequestMapping(value = "/newapp", method = RequestMethod.GET)
public String test2() {
    return "/resources/UserSideAppNew.html";
}

但是我的另外两个问题仍然没有解决,主要问题是第一个,但是如果您知道某事,请告诉我这两个问题

【讨论】:

    猜你喜欢
    • 2016-05-24
    • 1970-01-01
    • 1970-01-01
    • 2017-08-06
    • 2018-03-06
    • 2013-03-08
    • 2017-02-21
    • 1970-01-01
    • 2015-05-26
    相关资源
    最近更新 更多