setviewname跳转Html,使用spring框架的setViewName方法指定视图名称,但是没有跳转到指定页面?...

刚接触spring,照着书上敲了个简单的web mvc项目。大致意思是在浏览器输入地址localhost:8080/Ch3_1/hello.mvc后,后台根据请求名称hello调用相应的控制器,然后跳转到视图localhost:8080/Ch3_1/WEB-INF/pages/helloReader.jsp

在使用了spring框架的setViewName方法指定视图名称并返回后,奇怪但是并没有跳转到指定页面,而是跳转到了localhost:8080/Ch3_1/WEB-INF/pages/hello.jsp,由于实际没有这个页面,所以报了404错误。

bVGUMF?w=661&h=354

代码如下:

控制器类:

@Controller

public class HelloWorldController {

@RequestMapping(value = "/hello")

public ModelAndView sayHello(){

ModelAndView mv = new ModelAndView();

mv.setViewName("helloReader"); //按理应该跳转到helloReader.jsp

mv.addObject("message","Hello Readder!");

return mv;

//return "helloReader";

}

}

springmvc-servlet.XML:

<context:component-scan base-package="com.djhu"></context:component-scan>

<context:annotation-config></context:annotation-config>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

<property name="prefix" value="/WEB-INF/pages/"/>

<property name="suffix" value=".jsp"/>

</bean>

web.xml

<servlet>

<servlet-name>springmvc</servlet-name>

<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

<load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

<servlet-name>springmvc</servlet-name>

<url-pattern>*.mvc</url-pattern>

</servlet-mapping>

不知道是哪里出了问题?

相关环境如下:

bVGULU?w=389&h=301

找了半天原因原来是ModelAndVeiw 类的包引错了。

应该引入的是: org.springframework.web.servlet.ModelAndView;

而之前引入的是 org.springframework.web.portlet.ModelAndView

不过这个portlet是什么东东呢。。

楼上一堆瞎说的. 看了半天你的贴图,发现是没什么问题的.但是你这确实是404了.然后我又照着你的代码敲了一遍,我的是能正常访问的.

bVGVOk?w=415&h=139

bVGVMP?w=410&h=277

bVGVDA?w=461&h=160

bVGVDL?w=451&h=123

如果我访问的url确实是不存在的页面,那么会报错如下:

bVGVNy?w=423&h=247

后台如下:

bVGVNK?w=1025&h=45

而如果两个方法接收的url是一样的,springmvc会报错

bVGVGt?w=430&h=315

bVGVGC?w=1155&h=61

重复比较,发现咱们两最大的一个区别是在web.xml中加载DispatcherServlet那里

bVGVG3?w=780&h=347

我这里指向了springmvc的xml配置文件路径,如果没有指定具体的文件,则会默认去找WEB-INF下的{servlet-name}-servlet.xml配置文件,找不到则会报错.但是你的项目显然也并没有报错.

所以我只能认为,你的url是不是哪里写错了.但是诡异的是你的hello.mvc竟然跳转到了hello.jsp,你能断点一下看进了controller了吗?

很抱歉实在没找到你的问题原因.

你设置的springmvc拦截的路径是*.mvc,但是你spring设置的控制器路径只是/hello啊,根本不会交给springmvc处理。应该设置为/hello.mv,这样试试

可能是定义了一个默认的hello页面,你的路径应该不需要ch3_1

不用加/WEB-INF

改为

950-390_%E7%94%BB%E6%9D%BF-1.jpg

使用Spring MVC框架实现动态页面,可以通过视图、控制器和模型三方面来模拟用户登录和注册功能。以下是一个简单的实现示例: ### 1. 配置Spring MVC 首先,需要在`web.xml`中配置Spring MVC的前端控制器: ```xml <web-app> <servlet> <servlet-name>dispatcher</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>dispatcher</servlet-name> <url-pattern>/</url-pattern> </servlet-mapping> </web-app> ``` 然后,配置`dispatcher-servlet.xml`文件,定义视图解析器和组件扫描路径: ```xml <beans xmlns="http://www.springframework.org/schema/beans" xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:context="http://www.springframework.org/schema/context" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <context:component-scan base-package="com.example.controller" /> <mvc:annotation-driven /> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <property name="prefix" value="/WEB-INF/views/" /> <property name="suffix" value=".jsp" /> </bean> </beans> ``` ### 2. 创建模型 创建一个用户模型类`User.java`: ```java package com.example.model; public class User { private String username; private String password; // Getters and Setters public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ``` ### 3. 创建控制器 创建一个控制器类`UserController.java`: ```java package com.example.controller; import com.example.model.User; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; @Controller public class UserController { @RequestMapping(value = "/login", method = RequestMethod.GET) public String showLoginPage(Model model) { model.addAttribute("user", new User()); return "login"; } @RequestMapping(value = "/login", method = RequestMethod.POST) public String handleLogin(@ModelAttribute("user") User user, Model model) { // Simulate login logic if ("admin".equals(user.getUsername()) && "password".equals(user.getPassword())) { model.addAttribute("message", "Login successful!"); return "success"; } else { model.addAttribute("message", "Invalid credentials"); return "login"; } } @RequestMapping(value = "/register", method = RequestMethod.GET) public String showRegisterPage(Model model) { model.addAttribute("user", new User()); return "register"; } @RequestMapping(value = "/register", method = RequestMethod.POST) public String handleRegister(@ModelAttribute("user") User user, Model model) { // Simulate registration logic model.addAttribute("message", "Registration successful!"); return "success"; } } ``` ### 4. 创建视图 创建`login.jsp`和`register.jsp`视图文件: ```jsp <!-- login.jsp --> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <html> <head> <title>Login Page</title> </head> <body> <h2>Login</h2> <form:form action="login" method="post" modelAttribute="user"> <table> <tr> <td>Username:</td> <td><form:input path="username" /></td> </tr> <tr> <td>Password:</td> <td><form:password path="password" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="Login" /></td> </tr> </table> </form:form> <a href="register">Register</a> <h3>${message}</h3> </body> </html> ``` ```jsp <!-- register.jsp --> <%@ taglib uri="http://www.springframework.org/tags/form" prefix="form" %> <html> <head> <title>Register Page</title> </head> <body> <h2>Register</h2> <form:form action="register" method="post" modelAttribute="user"> <table> <tr> <td>Username:</td> <td><form:input path="username" /></td> </tr> <tr> <td>Password:</td> <td><form:password path="password" /></td> </tr> <tr> <td colspan="2"><input type="submit" value="Register" /></td> </tr> </table> </form:form> <a href="login">Login</a> <h3>${message}</h3> </body> </html> ``` ### 5. 创建成功页面 创建一个`success.jsp`视图文件: ```jsp <html> <head> <title>Success Page</title> </head> <body> <h2>${message}</h2> <a href="login">Login</a> <a href="register">Register</a> </body> </html> ``` ### 总结 通过以上步骤,我们使用Spring MVC框架实现了用户登录和注册功能,并跳转到对应的页面显示信息。视图层负责展示页面,控制器层负责处理请求,模型层负责存储数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值