【发布时间】:2018-11-16 00:49:25
【问题描述】:
在我的 JSP 表单中,环境可以识别控制器的存在(它为我提供了路径的自动完成功能),但我无法访问我的控制器。
可能是因为配置没有设置好,但是这里所有的解决方案都是用xml配置的。
这是我的表格:
<h2>Register</h2>
<!-- Contact form -->
<form class="register-form" action="/user/registerUser" method="post">
<div class="form-group">
<input class="form-control" name="username" placeholder="Username">
</div>
<div class="form-group">
<input class="form-control" name="name" placeholder="Name">
</div>
<div class="form-group">
<input class="form-control" name="lastName" placeholder="Last name">
</div>
<div class="form-group">
<input class="form-control" name="email" placeholder="Email">
</div>
<div class="form-group">
<input class="form-control" name="phone" placeholder="Phone number">
</div>
<div class="form-group">
<input class="form-control" name="password" placeholder="Password" type="password">
</div>
<div class="form-group">
<input class="form-control" name="rePassword" placeholder="Re-password" type="password">
</div>
<input type="submit" value="Register" class="button-transparent submit-button">
</form>
控制器:
package app.controller;
import app.model.User;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import javax.servlet.http.HttpServletRequest;
@Controller
@RequestMapping(value = "/user")
public class UserController {
@RequestMapping(value = "registerUser", method = RequestMethod.POST)
public User registerUser(Model m, HttpServletRequest request) {
System.out.println("HERE");
return null;
}
}
和我的配置类:
package app.config;
import org.springframework.web.servlet.support.AbstractAnnotationConfigDispatcherServletInitializer;
public class AppInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {
protected Class<?>[] getRootConfigClasses() {
return new Class[0];
}
protected Class<?>[] getServletConfigClasses() {
return new Class[]{WebConfig.class};
}
protected String[] getServletMappings() {
String[] init = {"/"};
return init;
}
}
和
package app.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("app")
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public ViewResolver viewResolver() {
InternalResourceViewResolver resolver = new InternalResourceViewResolver();
resolver.setPrefix("/");
resolver.setSuffix(".jsp");
resolver.setExposeContextBeansAsAttributes(true);
return resolver;
}
@Override
public void configureDefaultServletHandling(DefaultServletHandlerConfigurer configurer) {
configurer.enable();
}
}
错误是404,因为它无法识别控制器。
【问题讨论】:
-
在提交表单之前浏览器中的 url 是什么?
-
在控制器中将
"registerUser"替换为"/registerUser"" -
提交前的网址是localhost:8080/index.jsp?register,之后是localhost:8080/user/registerUser(但未找到)@JonathanLaliberte
-
@Afridi 它具有相同的行为
-
你为什么在
registerUser(...)中返回null??尝试返回 jsp 页面的名称,或者将@ResponseBody添加到该方法
标签: java spring jsp model-view-controller requestdispatcher