springmvc的创建和学习

本文详细介绍了如何使用IntelliJ IDEA搭建SpringMVC项目的过程,包括配置Tomcat、添加Controller、配置XML文件等内容,并记录了搭建过程中的常见问题及解决办法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用idea搭一个简单的springmvc,中间踩了很多的坑,这个星期一直在搞java,感觉渗透的手感也开始生疏了,希望自己能一直保持进步的状态的,每天都进步一点点,java审计注定会走很多弯路,学代码是很枯燥的,要沉下心来,不要浮躁,希望自己能不忘初心一直保持学习的劲头


通过IDEA新建Spring MVC项目
配置tomcat运行web服务
添加Controller
配置xml文件
视图定位
失败篇
SpringMVC常用注解

通过IDEA新建Spring MVC项目

创建一个springmvc项目
在这里插入图片描述

输入项目名和保存的地址
在这里插入图片描述

创建好后的文件,idea会生成如下文件
在这里插入图片描述

配置tomcat运行web服务

按照如下图所示的步骤
在这里插入图片描述

配置好安装的tomcat的路径、web映射的url后。再deployment中添加war包
在这里插入图片描述

然后记得再Project Structure中添加丢失的文件,不然启动web项目会出错误
在这里插入图片描述

然后启动项目,成功启动!
在这里插入图片描述

添加Controller

在src目录中创建新包,然后在该包下创建一个类命名为controller
在这里插入图片描述

package aufeng;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

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

public class controller implements Controller {
    public ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {
        ModelAndView mav = new ModelAndView("index.jsp");
        mav.addObject("message", "Hello Spring MVC,i am aufeng");
        return mav;
    }
}

配置xml文件

配置web.xml文件 <servlet-name>dispatcher</servlet-name>的命名需要和dispatcher-servlet.xml一致

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
         version="4.0">

    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>
    <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>

在这里插入图片描述

配置dispaer-servlet.xml文件,访问路径/abc会交给id=controller的bean处理id=controller的bean配置为aufeng包下的controller类
在这里插入图片描述

在web文件夹路径下创建一个index.jsp文件,并用el表达式接受controller的信息
在这里插入图片描述

<%@ page language="java" contentType="text/html; charset=UTF-8"
         pageEncoding="UTF-8" isELIgnored="false"%>

<h1>${message}</h1>

这样一个简单得springmvc就配置完成了
在这里插入图片描述

路由:

从web.xml中得定位到dispatcher-servlet.xml文件
在这里插入图片描述

在dispatcher-servlet中定位mappings,在<property>标签中找到/abc目录指向controller,然后再<bean>中寻找controller对应到class,就是aufeng包下得controller类文件。
在这里插入图片描述

视图定位

访问url http://localhost:8080/newspringmvc_war_exploded/abc ,会直接跳到/WEB-INF/pages目录下的hello.jsp文件。
Dispatcher-servlet.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">

    <bean id="viewResolver"
          class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/pages/" />
        <property name="suffix" value=".jsp" />
    </bean>

    <bean id="simpleUrlHandlerMapping"
          class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
        <property name="mappings">
            <props>
                <prop key="/abc">controller</prop>
            </props>
        </property>
    </bean>
    <bean id="controller" class="aufeng.controller"></bean>

</beans>

controller控制器中把旧代码注释掉。传入参数hello
在这里插入图片描述

hello.jsp代码如下

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>springmvc</title>
</head>
<body>
hello springmvc;
<h1>${message}</h1>
</body>
</html>

运行效果
在这里插入图片描述

失败篇

一开始根据网上很多相似的文章的思路进行搭建,但是一直失败,失败如下

关于spring”通配符的匹配很全面, 但无法找到元素 ‘context:component-scan’ 的声明“的错误

在这里插入图片描述

<servlet-name>dispatcher</servlet-name> 中的dispatcher需要和dispatcher-servlet.xml的名字一致,

<url-pattern>/</url-pattern> 是指接收所有url的请求

在这里插入图片描述

Dispatcher-server.xml文件中 <context:component-scan base-package=“aufeng”/> 是指扫描 控制器中的包

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

在这里插入图片描述

控制器中的mvc路径下的hello路径调用hello.jsp文件,因为<property name="suffix" value=".jsp" />,所以return “hello”不带后缀, url为 ip/web映射路径/mvc/hello
在这里插入图片描述


SpringMVC常用注解

@Controller
负责注册一个bean 到spring 上下文中。

@RequestMapping
注解为控制器指定可以处理哪些 URL 请求。

@RequestBody
该注解用于读取Request请求的body部分数据,使用系统默认配置的HttpMessageConverter进行解析,然后把相应的数据绑定到要返回的对象上 ,再把HttpMessageConverter返回的对象数据绑定到 controller中方法的参数上。

@ResponseBody
该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。

@ModelAttribute  
在方法定义上使用 @ModelAttribute 注解:Spring MVC 在调用目标处理方法前,会先逐个调用在方法级上标注了@ModelAttribute 的方法。
在方法的入参前使用 @ModelAttribute 注解:可以从隐含对象中获取隐含的模型数据中获取对象,再将请求参数–绑定到对象中,再传入入参将方法入参对象添加到模型中。

@RequestParam 
在处理方法入参处使用 @RequestParam 可以把请求参 数传递给请求方法。

@PathVariable
绑定 URL 占位符到入参。

@ExceptionHandler
注解到方法上,出现异常时会执行该方法。

@ControllerAdvice
使一个Contoller成为全局的异常处理类,类中用@ExceptionHandler方法注解的方法可以处理所有Controller发生的异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值