写的第一个MVC
1.引入spring MVC依赖包
<!--servlet依赖--> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <!--springmvc依赖--> <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.5.RELEASE</version> </dependency>
目录结构:
2.写一个spring MVC的配置文件:springmvc.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mvc="http://www.springframework.org/schema/mvc" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc https://www.springframework.org/schema/mvc/spring-mvc.xsd"> <context:component-scan base-package="controller"/> <!--声明mvc框架中的视图解析器,帮助设置视图文件的路径 --> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- 前缀:视图文件路径 --> <property name="prefix" value="/view/"/> <!-- 后缀:视图文件路径 --> <property name="suffix" value=".jsp"/> </bean> </beans>
对controller包下进行扫描
3.创建一个测试接口
package controller; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; @Controller public class MyController { /* 处理用户提交的请求,springmvc中是使用方法来处理的。 方法是自定义的, 可以有多种返回值, 多种参数,方法名称自定义 */ /** * 准备使用doSome方法处理some.do请求。 * @RequestMapping: 请求映射,作用是把一个请求地址和一个方法绑定在一起。 * 一个请求指定一个方法处理。 * 属性: 1. value 是一个String,表示请求的uri地址的(some.do)。 * value的值必须是唯一的, 不能重复。 在使用时,推荐地址以“/” * 位置:1.在方法的上面,常用的。 * 2.在类的上面 * 说明: 使用RequestMapping修饰的方法叫做处理器方法或者控制器方法。 * 使用@RequestMapping修饰的方法可以处理请求的,类似Servlet中的doGet, doPost * * 返回值:ModelAndView 表示本次请求的处理结果 * Model: 数据,请求处理完成后,要显示给用户的数据 * View: 视图, 比如jsp等等。 */ @RequestMapping(value = {"/some.do","/first.do"}) public ModelAndView doSome(){ // doGet()--service请求处理 //处理some.do请求了。 相当于service调用处理完成了。 ModelAndView mv = new ModelAndView(); //添加数据, 框架在请求的最后把数据放入到request作用域。 //request.setAttribute("msg","欢迎使用springmvc做web开发"); mv.addObject("msg","欢迎使用springmvc做web开发"); mv.addObject("fun","执行的是doSome方法"); //指定视图, 指定视图的完整路径 //框架对视图执行的forward操作, request.getRequestDispather("/show.jsp).forward(...) mv.setViewName("/show.jsp"); //mv.setViewName("/WEB-INF/view/show.jsp"); //mv.setViewName("/WEB-INF/view/other.jsp"); //当配置了视图解析器后,可以使用逻辑名称(文件名),指定视图 //框架会使用视图解析器的前缀 + 逻辑名称 + 后缀 组成完成路径, 这里就是字符连接操作 ///WEB-INF/view/ + show + .jsp //mv.setViewName("show"); //mv.setView( new RedirectView("/a.jsp")); //返回mv return mv; } @RequestMapping(value = {"/other.do","/second.do"}) public ModelAndView doOther(){ ModelAndView mv = new ModelAndView(); mv.addObject("msg","====欢迎使用springmvc做web开发===="); mv.addObject("fun","执行的是doOther方法"); mv.setViewName("other"); return mv; } }
4.创建jsp显示界面
<%@ page isELIgnored="false" contentType="text/html;charset=UTF-8" language="java" %> <%--<%@ page contentType="text/html;charset=UTF-8" language="java" %>--%> <html> <head> <title>Title</title> </head> <body> <h3>/WEB-INF/view/show.jsp从request作用域获取数据</h3><br/> <h3>msg数据:${msg}</h3><br/> <h3>fun数据:${fun}</h3> </body> </html>
some.do的效果
second.do的效果可以自己创个jsp测试
今天在创second.do的显示页,复制了下show.jsp成other.jsp ,second.do跳转到other.jsp时候,然后有个离谱的404,现在也不知道问题出在哪。(我把other.jsp删了重新自己创建一个就没404了,,,离谱)
难产难产难产