我正在使用Spring mvc,并且想制作一个将一些json数据发送到客户端的Web应用程序,客户端应该使用js将它们可视化。
我有一些问题:
1 - 我的项目在* .jsp文件旁边有一些* .html如何在没有web.xml的情况下处理这两个文件。我编写的代码与* .jsp一起工作正常,但是“请求的资源不可用”。映射html文件时出错。
2-As我说我的服务必须以json格式向客户端发送一个对象列表,当我想用 .jsp文件解析服务器上的json字符串时,用
这样的代码MyClass data = new Gson().fromJson(MyList.get(0).toString(), listType)
,我面对很多问题,所以我决定在* .html文件中的客户端做这个工作,我想知道当我不希望客户端知道这个解析工作时我该如何处理我的班级结构?或者plz告诉我是否必须与客户共享我的课程,我应该如何将它的结构发送到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 /”
中答案 0 :(得分:0)
在第一个问题上花了差不多一天后,我找到了答案, 首先,我不是实现WebApplicationInitializer,而是扩展AbstractAnnotationConfigDispatcherServletInitializer,对于java Configing,我扩展了WebMvcConfigurerAdapter。
然后我在WEB-INF中创建一个页面文件夹,我的代码改为:
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”
中创建“资源”目录在AppConfig.java中添加bellow cod
registry.addResourceHandler("/WEB-INF/views/resources/*.html").addResourceLocations("/resources/");
并且对于viewResolving使用类似下面的代码:
@RequestMapping(value = "/newapp", method = RequestMethod.GET)
public String test2() {
return "/resources/UserSideAppNew.html";
}
但我的另外两个问题仍然没有解决,主要问题是第一个但是如果你知道......关于这两个问题告诉我他们的问题