Spring mvc 入门
文章目录
Servlet api jsp
public class MyServlet extends HttpServet{
public void doGet(){
}
//req 代表请求
// resp 代表响应
public void doPost(HttpServletRequest req,HttpServletResponse resp){
//
}
}
intellij 创建 maven springmvc项目过程
1. 创建maven 项目
2.引入所需依赖
编辑 pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>day0207</artifactId>
<version>1.0-SNAPSHOT</version>
<!--创建spring的version参数-->
<properties>
<spring.version>5.2.3.RELEASE</spring.version>
</properties>
<dependencies>
<!--spring的依赖-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<!--AOP 的依赖-->
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.9.4</version>
</dependency>
<!--springmvc 的依赖:spring-web spring-webmvc-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
</dependencies>
</project>
3. 给intellij的项目引入web模块
- 创建webapp模块
添加web模块
指定web.xml和webroot的位置
创建构建
构建的输入与输出映射
最终在目录下会有webApp目录
4 intellij中加入tomcat和其依赖
选择右上角的add Confiuration
选择template中的tomcat,点击ok
再点击左上角的+号,选择tomcat server local
设置tomcat名称和home
选择构建项目day0207
配置项目的 context root为"/"
设置代码热更新
再次打开 open module settings,加入tomcat 依赖
hello springmvc项目
1. 编写jsp
在webApp下添加hello.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>hello jsp</title>
</head>
<body>
<h1>${content}</h1>
</body>
</html>
2. 编写controller
package com.neuedu.hellomvc.web;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
/**
* 一个处理请求的controller
* controller需要添加@Controller注解来表明自己的身份,被springmvc识别到
*/
@Controller
public class HelloController {
/**
* 第一个控制器方法,返回modelandview
* 声明该方法处理的请求地址:我们使用注解的方式
* @return
*/
@RequestMapping("/hello")
public ModelAndView hello(){
// 创建 modelandView对象:首先要有model:代表数据 其次要有view:代表逻辑视图名,对应指的是就是某一个jsp
ModelAndView modelAndView = new ModelAndView();
// 指定逻辑视图名view
modelAndView.setViewName("/hello.jsp");
//指定model content
// addObject方法等价于request.setAttribute()
modelAndView.addObject("content","hello spring mvc");
return modelAndView;
}
}
3. 编写spring主配置类
package com.neuedu.hellomvc;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.ViewResolverRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
import org.springframework.web.servlet.view.InternalResourceViewResolver;
/**
* 这是spring的配置类,同时也是springmvc的配置类:需要去配置视图解析器,处理器适配器 处理器映射器
* WebMvcConfigurer 用于让开发者方便的去配置springmvc的各个组件:包括视图解析器,处理器适配器 处理器映射器 消息解析器 拦截器 资源映射器
*/
@Configuration // 代表这是个配置类
@EnableWebMvc //这个注解默认帮助开发者配置了处理器映射器和处理器适配器 相当于xml当中<mvc:annotation-driven/>
@ComponentScan("com.neuedu.hellomvc") // 扫描该包之下的所有有注解的类,装入ioc容器中,显然controller包含在其中
public class AppConfig implements WebMvcConfigurer {
// 配置视图解析qi
// alt+insert 选择overrider
//registry 代表注册机
public void configureViewResolvers(ViewResolverRegistry registry) {
// 创建视图解析器用于处理jsp的视图解析器叫做InternalResourceViewResolver
InternalResourceViewResolver viewResolver = new InternalResourceViewResolver();
// 将视图解析器通过注册机注册到spring ioc中
registry.viewResolver(viewResolver);
}
}
4. 创建web项目启动类替代web.xml
package com.neuedu.hellomvc;
import org.springframework.web.WebApplicationInitializer;
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
import org.springframework.web.servlet.DispatcherServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRegistration;
/**
* 替代了web.xml 通过java代码的方式初始化web项目,必须实现接口WebApplicationInitializer
*/
public class WebInitializer implements WebApplicationInitializer {
/**
* 这个方法表明了具体的web项目的启动配置,包含对应的servlet和filter等等
* @param servletContext
* @throws ServletException
*/
// 要运行servlet项目,我们需要servlet容器,也就是我们收悉的tomcat
public void onStartup(javax.servlet.ServletContext servletContext) throws ServletException {
// 配置dispatcherServlet以及ioc容器
//创建web ioc容器
AnnotationConfigWebApplicationContext context = new AnnotationConfigWebApplicationContext();
// 指定主配置类AppConfig.class
context.register(AppConfig.class);
//将dispatcherServlet创建出来,并且用构造函数的方式指定servlet所使用的ioc容器
DispatcherServlet dispatcherServlet = new DispatcherServlet(context);
// 将servlet注册到servlet容器中去
ServletRegistration.Dynamic dynamic = servletContext.addServlet("dispatcher", dispatcherServlet);
// 配置dispatcherServlet的拦截请求为所有请求: /
dynamic.addMapping("/");
// 配置dispatcherServlet为第一个启动的servlet,优先级设为最高
dynamic.setLoadOnStartup(1);
}
}
5. 启动项目进行测试
点击之前设置好的tomcat右边的箭头按钮,在右上角
项目运行状态会在控制台打印
打开浏览器访问 http://localhost:8080/hello