我已经开始使用spring MVC了。但我的internalViewReolver只返回字符串而不是从我的路径中解析页面。请帮帮我,我哪里出错了?
这是我的配置文件。:
package assignment.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.ViewResolver;
import org.springframework.web.servlet.config.annotation.DefaultServletHandlerConfigurer;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages={"assignment.view"})
public class WebConifg extends WebMvcConfigurerAdapter {
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();;
}
@Bean
public ViewResolver viewResolver(){
InternalResourceViewResolver resolver=new InternalResourceViewResolver("/WEB-INF/views/",".jsp");
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
}
这是我的控制器:
package assignment.view;
import java.util.Map;
import org.springframework.http.MediaType;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import assignment.model.User;
@RestController(value="/login")
public class Controller {
@RequestMapping(method=RequestMethod.POST)
public String userLogin(@RequestBody User user){
System.out.println(user);
return "success";
}
@RequestMapping(method=RequestMethod.GET)
public String register(Model model){
User user=new User();
model.addAttribute("userForm", user);
System.out.println(user);
return "Register";
}
}
我的WebIntilizer.java
package assignment.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class WebInitilizer extends AbstractAnnotationConfigDispatcherServletInitializer {
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{WebConifg.class};
}
@Override
protected String[] getServletMappings() {
return new String[]{"/"};
}
}
所以,当我点击http://localhost:8080/assignment/login时,我希望显示Register.jsp,但它只是将Register显示为字符串。
答案 0 :(得分:0)
将注释从RestController更改为Controller注释。
它肯定会起作用。
当您使用RestController注释时,Web应用程序将以文本格式发送响应,如简单文本(您的案例),json,xml。