前言
Idea在开发的时候,的确比Eclipse智能,但是没有Eclipse方便,好多在Eclipse中没问题的源代码跑到idea里面就会因为结构而遇到各种各样的坑
工欲善其事,必先利其器
idea新建一个SpringMVC项目
第一步,打开Idea,create a new project,注意我图中的打√的地方,然后一路next,Finsh
就这?就这?就这?Too young too single
第二步,先看看咱们的项目结构,src就是源码
修改web.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">
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml</param-value>
</context-param>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!-- Springmvc的前端控制器 / 核心控制器: DispatcherServlet -->
<servlet>
<servlet-name>springDispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 给DispatcherServlet配置初始化参数:
指定Springmvc的核心配置文件
-->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:SpringMVC.xml</param-value>
</init-param>
<!--
load-on-startup: 设置DispatcherServlet在服务器启动时加载。
Servlet的创建时机:
1. 请求到达以后创建
2. 服务器启动即创建
-->
<load-on-startup>1</load-on-startup>
</servlet>
<!-- 指定请求的匹配 -->
<servlet-mapping>
<servlet-name>springDispatcherServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
直接在src下新建SpingMVC.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"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd">
<!-- 1. 组件扫描 -->
<context:component-scan base-package="main.SpringMVC"></context:component-scan>
<!-- 2. 视图解析器
工作机制: prefix + 请求处理方法的返回值 + suffix = 物理视图路径.
/WEB-INF/views/success.jsp
WEB-INF: 是服务器内部路径。 不能直接从浏览器端访问该路径下的资源. 但是可以内部转发进行访问
-->
<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/views/"></property>
<property name="suffix" value=".jsp"></property>
</bean>
</beans>
第三步,打开Project Structure(敲黑板了)
第四步,编写HelloWorld
index.jsp
请求方法
/**
* 为什么只能用Controller
* 注册为组件
* 请求处理器 / 控制器
*/
@Controller
public class test {
/**
* 处理客户端的请求: http://localhost:8888/Springmvc01/hello
*
* @RequestMapping: 完成请求 与 请求处理方法的映射.
*
*/
@RequestMapping(value="/hello")
public String handleHello() {
System.out.println("Hello SpringMVC ");
return "success"; // 通过视图解析器解析得到具体的视图, 再转发去往该视图.
}
}
第五步,添加Tomcat并执行
运行结果:
原理剖析
Springmvc的HelloWorld:
1. 创建web工程, 导入核心的jar包.
2. 在web.xml中配置SpringMVC的前端控制器: DispatcherServlet
3. 配置SpringMVC的核心配置文件: springmvc.xml
4. 编写请求处理器
5. 浏览器端发送请求, 请求处理器中处理请求
6. 测试
Springmvc HelloWorld 执行流程:
1. 启动Tomcat服务器, 会加载DispatcherServlet, 然后就会读取springmvc.xml,进而创建好的Springmvc容器对象.
创建Springmvc容器对象: 组件扫描会 扫描到请求处理器, 以及请求处理中@RequestMapping注解,
能得到具体的请求与请求处理器 中方法的映射。
2. 客户端发送请求: http://localhost:8888/Springmvc01/hello
3. 请求到达web.xml中与<url-pattern>进行匹配, 匹配成功,就将请求交给DispatcherServlet
4. DispatcherServlet根据请求 与 请求处理方法的映射, 将请求交给具体的请求处理器中的请求处理方法来进行处理
5. 请求处理方法处理完请求, 最终方法会返回一个字符串
6. 视图解析器根据请求处理方法返回的结果, prefix + returnValue + suffix, 解析生成具体的物理视图路径,
再通过转发的方式去往视图。 ·