騰訊云注冊(cè)域名后怎么做網(wǎng)站剛剛突發(fā)1驚天大事
1.概念
- SpringMVC是一種軟件架構(gòu)思想,把軟件按照模型(Model)、視圖(View)、控制器(Controller)這三層來劃分。
- Model:指的是工程中JavaBean,用來處理數(shù)據(jù)
- View:指的是工程中的html、jsp等頁面,用來展示給用戶數(shù)據(jù)
- Controller:指的是工程中的Servlet,用來接收請(qǐng)求和響應(yīng)
2.入門程序
導(dǎo)入依賴:
注意:這有一個(gè)比較不容易發(fā)現(xiàn)的坑,當(dāng)引入Spring的依賴的時(shí)候,如果引入的是Spring6,那么Tomcat的版本必須得是10以上的,否則服務(wù)器識(shí)別不到咱們自己創(chuàng)的網(wǎng)頁?
<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><version>6.0.10</version></dependency>
?2.1.配置文件方式
項(xiàng)目文件路徑:
- SpringMVC的出現(xiàn),優(yōu)化了以前每寫一個(gè)頁面,都要注冊(cè)一個(gè)servlet的情況,現(xiàn)在只需要注冊(cè)一個(gè)DispatcherServlet
第一步:注冊(cè)DispatchServlet
<?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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"metadata-complete="true"><!--創(chuàng)建DispatchServlet--><servlet><servlet-name>springmvc</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--關(guān)聯(lián)一個(gè)spring配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc-servlet2.xml</param-value></init-param><!--設(shè)置啟動(dòng)級(jí)別--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>springmvc</servlet-name><url-pattern>/</url-pattern></servlet-mapping></web-app>
?第二步:spring配置文件
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><!--添加處理器映射--><bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/><!--添加處理器適配器--><bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter"/><!--視圖解析器:DispatcherServlet給他的ModelAndView--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"><!--前綴--><!--<property name="prefix" value="/WEB-INF/jsp/"/>--><property name="prefix" value="/WEB-INF/jsp/"/><!--后綴--><!--<property name="suffix" value=".jsp"/>--><property name="suffix" value=".jsp"/></bean>
</beans>
第三步:編寫Controller類
public class HelloController implements Controller {@Overridepublic ModelAndView handleRequest(HttpServletRequest request, HttpServletResponse response) throws Exception {ModelAndView mv = new ModelAndView();mv.addObject("msg","Hello SpringMVC");//視圖轉(zhuǎn)跳mv.setViewName("hello");return mv;}
}
第四步:把Controller交給spring托管
<bean id="/hello" class="com.sun.controller.HelloController"/>
第五步:創(chuàng)建hello.jsp
結(jié)果:
?2.2.執(zhí)行原理
上面的域名localhost:8081/hello被拆分成了兩部分
- localhost:8081是服務(wù)器名
- /hello是控制器的名字(在spring的配置文件里注冊(cè)了的)
?
- springMVC的核心就是DispatchServlet
- 首先請(qǐng)求進(jìn)入DispatcherServlet(前端控制器),由DispatcherServlet通過HandlerMapping(處理器映射器)來獲取Handler(處理器),然后用獲取的Handler去尋找對(duì)應(yīng)的適配器,即HandlerAdapter(處理器適配器),拿到適配器之后,來尋找到對(duì)應(yīng)的Controller(這個(gè)是我們自己編寫的),執(zhí)行了Controller之后,返回一個(gè)ModelAndView,然后DispatchServlet拿著ModelAndView里面封裝的數(shù)據(jù)和路徑去找ViewResolver(視圖解析器),在ViewResolver中拼接具體的路徑(在上面的例子里就是/WEB-INF/jsp/hello.jsp),然后DispatchServlet再拿著這個(gè)路徑去找前端頁面并回顯給用戶
這里就不詳細(xì)介紹springMVC的底層了,如有需要可以看看這個(gè)大佬的文章
https://blog.csdn.net/zxd1435513775/article/details/103000992
?2.3.使用注解的方式
這個(gè)是我們普遍使用的方式,上面的方式是為了理解springMVC的底層
第一步:由于Maven可能存在資源過濾的問題,我們將其配置完善
<resources><resource><directory>src/main/java</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource><resource><directory>src/main/resources</directory><includes><include>**/*.properties</include><include>**/*.xml</include></includes><filtering>false</filtering></resource></resources>
第二步:創(chuàng)建DispatchServlet
<?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/javaeehttp://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd" version="4.0"metadata-complete="true"><!--創(chuàng)建DispatchServlet--><servlet><servlet-name>SpringMVC</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><!--關(guān)聯(lián)一個(gè)spring配置文件--><init-param><param-name>contextConfigLocation</param-name><param-value>classpath:springmvc.xml</param-value></init-param><!--設(shè)置啟動(dòng)級(jí)別--><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>SpringMVC</servlet-name><url-pattern>/</url-pattern></servlet-mapping>
</web-app>
第三步:spring配置文件
<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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/contexthttps://www.springframework.org/schema/context/spring-context.xsdhttp://www.springframework.org/schema/mvchttps://www.springframework.org/schema/mvc/spring-mvc.xsd"><!-- 自動(dòng)掃描包,讓指定包下的注解生效,由IOC容器統(tǒng)一管理 --><context:component-scan base-package="com.sun.controller"/><!-- 讓Spring MVC不處理靜態(tài)資源 --><mvc:default-servlet-handler /><!--代替處理器映射器和處理器適配器--><mvc:annotation-driven /><!--視圖解析器:DispatcherServlet給他的ModelAndView--><bean class="org.springframework.web.servlet.view.InternalResourceViewResolver" id="InternalResourceViewResolver"><!--前綴--><property name="prefix" value="/WEB-INF/jsp/"/><!--后綴--><property name="suffix" value=".jsp"/></bean></beans>
第四步:編寫Controller類
@Controller
public class HelloController {@RequestMapping("/hello")public static String hello(Model model){//封裝數(shù)據(jù)model.addAttribute("msg","Hello SpringMVC");System.out.println("接收請(qǐng)求");//被視圖解析器接收,來拼裝路徑//hello.jspreturn "hello";}