1 springMVC框架
在此感谢哔哩哔哩的秦疆老师,up主:遇见狂神说,视频地址:https://www.bilibili.com/video/BV1aE41167Tu ,于2020-10-30学习后用Typora0.9.98整理的观后感。
项目环境:IDEA
1.1 回顾MVC 和 Servlet
1.1.1 MVC
MVC是一种软件设计规范,MVC是一种架构模式,主要为了降低视图与业务层逻辑的耦合。
1.1.2 Servlet
-
新建maven工程,引入pom依赖。右键Modules -> add framework Support -> Web Application,此时web文件夹图标的中心位置有绿点表示识别到了。
-
编写一个
<dependency> <groupId>javax.servlet</groupId> <artifactId>servlet-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2</version> </dependency>
-
public class HelloServlet extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws servletexception, IOException { //1. 获取参数 String method = req.getParameter("method"); req.getSession().setAttribute("message", "执行了"+method+"方法"); //2. 调用业务层 //3. 视图层转发或重定向 req.getRequestdispatcher("/WEB-INF/servlet/test.jsp").forward(req,resp); } @Override protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws servletexception, IOException { super.doPost(req, resp); } }
-
WEB-INF/web.xml 注册
<servlet> <servlet-name>hello</servlet-name> <servlet-class>kuangshen.servlet.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>hello</servlet-name> <url-pattern>/hello</url-pattern> </servlet-mapping>
-
编写一个jsp页面:WEB-INF/servlet/web.xml
<%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>Title</title> </head> <body> ${message} </body> </html>
-
执行:http://localhost:8080/hello?method=select
MVC框架要做的事情:1.将url映射到java类或java类的方法;2.封装用户提交的数据;3.处理请求并响应;4.将响应的数据进行渲染;
常见服务器端MVC框架有:struct,springMVC,ASP.NETMVC,ZendFramework,JSF;
常见前端MVC框架:Vue,angularjs,react,backbone;
1.2 初识springMVC
springMVC是SpringFramework的一部分,是基于java实现的MVC轻量级web框架。
官方文档:https://docs.spring.io/spring-framework/docs/
1.2.2 第一个springMVC应用
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<!-- 配置dispatchServlet:springMVC的核心 springMVC中 /匹配所有请求(不会去匹配jsp), /*匹配所有请求(包括jsp页面) -->
<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.dispatcherServlet</servlet-class>
<!-- dispatchservlet要绑定的spring配置文件 -->
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:/springmvc1.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup> <!-- 启动级别:1 -->
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>/</url-pattern> <!-- 在springMVC中,/表示匹配所有请求(不会匹配JSP页面), /*表示匹配所有请求(包括JSP页面)-->
</servlet-mapping>
<!-- 配置springMVC的乱码过滤 -->
<filter>
<filter-name>encoding</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>encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<?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/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<!-- 处理器映射器 -->
<bean class="org.springframework.web.servlet.handler.BeanNameUrlHandlerMapping"/>
<!-- 处理器适配器 -->
<bean class="org.springframework.web.servlet.mvc.SimpleControllerHandlerAdapter" />
<!-- 视图解析器:模板引擎诸如:Thymeleaf freemarker... -->
<bean id="internalResourceViewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix" value="/WEB-INF/springmvc/" /> <!--前缀-->
<property name="suffix" value=".jsp" /> <!--后缀-->
</bean>
<!--BeanNameUrlHandlerMapping该处理器要特殊处理-->
<bean id="/hello1" class="kuangshen.springmvc.HelloController" />
</beans>
package kuangshen.springmvc;
import org.springframework.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.Controller;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class HelloController implements Controller {
@Override
public ModelAndView handleRequest(HttpServletRequest req, HttpServletResponse rsp) throws Exception {
ModelAndView modelAndView = new ModelAndView();
//业务代码
String result = "业务返回结果:第一个springMVC";
modelAndView.addobject("message", result);
//视图跳转
modelAndView.setViewName("test"); //前缀 + 视图名 + 后缀
return modelAndView;
}
}
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>Title</title>
</head>
<body>
${message}
</body>
</html>
-
配置Tomcat,启动测试
URL输入http://localhost:8080/hello,地址栏不变化但页面显示:业务返回结果:第一个springMVC
-
可能遇到问题:
访问出现404,maven中jar包存在,未添加依赖(编译后WEB-INF/lib没有),需要到idea的artfacts栏output root手动添加lib目录并添加jar,属于idea的问题;
1.3 springMVC执行原理
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。