IDEA:SpringMVC入门

it2026-03-28  6

注:第一次学习,这篇博客也是参考别人文章一步一步实现的

基本使用

1、创建项目 项目创建完后如下:

2、创建所需的文件夹

在WEB-INF下创建classes、lib、page(放网页的地方)文件夹 在src下创建control文件夹,存放控制器类

3、配置环境 由于idea下载的jar包并不完整,只是框架的包,所以还需下载一些jar 普通下载 百度云下载 密码:7f4s

3.1 下载后,解压到WEB-INF下创建的lib文件夹里 3.2 解压后右键lib文件夹,然后如图操作 3.3 接着file–>project structture。然后如图操作

4、修改配置文件 web.xml是用来启动DispatcherServlet的。新建之后的web.xml文件是有初始设置的,我们只需根据自己的需要稍加修改就好。 这里只需要修改一个地方,将url-pattern地方修改成“/”。表示要拦截所有的请求,并交由Spring MVC的后台控制器来处理,

现在开始修改dispatcher-servlet.xml文件,这个文件主要用来配置HandlerMapping。修改完成后,如下所示:

<?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" 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"> <!-- 控制器类所在的包--> <context:component-scan base-package="control"/> <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver"> <!-- /WEB-INF/page/意为页面的路径,.jsp为页面格式--> <property name="prefix" value="/WEB-INF/page/"/> <property name="suffix" value=".jsp"/> </bean> </beans>

默认情况下web-inf下的jsp文件是不能访问的,当配置完后可以实现访问

5、创建控制器 在 src\control目录下创建 HelloController

5.1实现Controller接口方式 这里选择 import org.springframework.web.servlet.mvc.Controller; 这个包 package control; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.servlet.ModelAndView; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @Controller public class HelloController { @RequestMapping("/index") public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception{ ModelAndView model=new ModelAndView("index"); model.addObject("message","这是第一个SpringMVC网页"); return model; } }

在page目录下创建index.jsp,删除外面的index.jsp 特别注意要用这两个包

import org.springframework.stereotype.Controller; import org.springframework.web.servlet.ModelAndView

6、配置Tomcat

6.1配置Tomcat,选择edit configurations. 6.2添加选项 6.3点击“local”会看到如下界面 6.4选择deployment,点击“+”

6.5返回之后,点击OK按钮。到此配置成功了。

7、访问 补充 1、如果要访问其它页面时,可以在对应的控制器里创建对应的函数

@RequestMapping("/login") public ModelAndView Login(HttpServletRequest request, HttpServletResponse response) throws Exception{ ModelAndView model=new ModelAndView("login"); return model; }

2、除了使用ModelAndView 外,也可以使用普通方法返回一个页面

@RequestMapping("/register") public String register(HttpServletRequest request, HttpServletResponse response)throws Exception{ //返回注册页面 return "register"; }

控制器接收请求数据

表单

<form method="post" action="/login"> 用户名:<input type="text" name="username"> <br> 密码:<input type="password" name="password"> <br> <input type="submit" value="登录"> </form>

使用 Servlet 原生 API 实现

@RequestMapping("/login") public ModelAndView Login(HttpServletRequest request, HttpServletResponse response) throws Exception { String name = request.getParameter("username"); String pw = request.getParameter("password"); System.out.println("用户名:" + name + ",密码:" + pw); return null; }

使用模型传参

要求: 前台参数名字必须和模型中的字段名一样

模型:

package pojo; public class User { private String username; private String password; 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; } }

控制器

@RequestMapping("/login") public ModelAndView Login(User user) throws Exception { System.out.println("用户名:" + user.getUsername() + ",密码:" + user.getPassword()); return null; }

中文乱码

注意: 跟 Servlet 中的一样,该方法只对 POST 方法有效(因为是直接处理的 request)

我们可以通过配置 Spring MVC 字符编码过滤器来完成,在 web.xml 中添加

<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <!-- 设置编码格式 --> <param-value>utf-8</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>

控制器返回数据

jsp页面

<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>响应数据</title> </head> <body> 响应的数据是:${message} </body>

Servlet 原生 API 来实现

@RequestMapping("/test") public ModelAndView test(HttpServletRequest request, HttpServletResponse response) { request.setAttribute("message", "响应数据"); //返回要显示的视图 return new ModelAndView("test"); }

Spring MVC 所提供的 ModelAndView 对象

@RequestMapping("/test") public ModelAndView test(HttpServletRequest request, HttpServletResponse response) { ModelAndView view=new ModelAndView("test"); view.addObject("message","我是响应数据"); return view; }

使用 Model 对象 在 Spring MVC 中,我们通常都是使用这样的方式来绑定数据

@RequestMapping("/test") public String test(Model model) { model.addAttribute("message", "成功了"); return "test"; }

重定向

当访问某个地址时自动进行跳转,比如当用户已经登录后再次访问登录界面应该自动跳转到其它页面

@RequestMapping("/jump") public ModelAndView jump(){ ModelAndView view=new ModelAndView("redirect:/login"); return view; } //或 @RequestMapping("/jump") public String jump() { return "redirect: ./hello"; }
最新回复(0)