个人引擎网站什么做seo智能优化公司
目录
mvc 的架构
MVC 框架
传统web开发的弊端
1.创建一个maven项目
2.添加maven依赖
3.创建TomCatService类
3.1 创建TomcatService类
3.2 TomcatService类讲解
3.3 安装项目到本地仓库,给其他项目使用
4.测试启动Tomcat
4.1 创建一个新的maven项目
4.2 引用mvc-framework项目的依赖
4.3 创建一个webapp包,里面在创建index.html文件
4.4 创建一个测试类
4.5 启动项目
4.6 访问项目
mvc 的架构
model ----------> 业务领域的核心对象(Entity,Service,Dao)
View ----------> 视图层,做数据的提交和渲染 (JSP、HTML.........)
Controller --------> 控制层,专门用于处理Http请求(Servlet)
MVC 框架
简化控制层以及视图渲染的操作,将这些API进行更高层封装,使用起来更加简便,可以隐藏Servlet的操作,同时还可以提供简便的部署方式。
传统web开发的弊端
1.每一个请求都必须要有一个对应的Servlet去处理:
在传统的Servlet开发中,每个请求都需要对应一个Servlet类来处理。这导致了项目结构的臃肿,且难以维护和扩展。特别是对于大型项目,Servlet的数量可能会非常庞大,给代码的管理和维护带来挑战。
2.请求参数的处理相对繁琐 :
在Servlet开发中,通常需要手动解析请求参数,包括从URL中解析参数或者从请求体中读取参数。这样的处理方式相对繁琐,容易出错,尤其是在处理复杂的参数结构时更加困难。
3.请求响应的统一性比较繁杂:
在Servlet开发中,通常需要手动设置响应的内容类型、编码等信息,并且手动编写响应内容。这样的操作需要开发者自行管理,容易导致响应的不一致性,增加了维护成本。
4.部署Web应用相对繁杂,肯能存在缓存的问题:
在传统的Servlet开发中,部署Web应用通常需要手动将Servlet类部署到Servlet容器中,并且需要手动处理依赖关系、配置信息等。这样的部署方式相对繁琐,容易出错。此外,由于Servlet容器会缓存Servlet类,当修改了Servlet类但未正确地刷新缓存时,可能会导致旧版本的Servlet类被执行,从而引发一系列问题。
为了解决这传统web开发的弊端,我们自己写一个MVC框架简易实现
1.创建一个maven项目
2.添加maven依赖
对应的依赖为:
<?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>com.xr</groupId><artifactId>mvc-framework</artifactId><version>0.9</version><!--打包方式为jar--><packaging>jar</packaging><properties><!--maven编译源代码的jdk版本--><maven.compiler.source>21</maven.compiler.source><!--maven编译目标代码的jdk版本--><maven.compiler.target>21</maven.compiler.target><!--项目构建编码格式--><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><!--Tomcat依赖--><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-core</artifactId><version>10.1.19</version></dependency><!--JSP解析器依赖--><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-jasper</artifactId><version>10.1.19</version></dependency><!--EL表达式依赖--><dependency><groupId>org.apache.tomcat.embed</groupId><artifactId>tomcat-embed-el</artifactId><version>10.1.19</version></dependency><!--servlet依赖--><dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</artifactId><version>6.0.0</version><!--这个依赖是运行环境提供的,不需要打包到jar中--><scope>provided</scope></dependency><!--yml文件解析器--><dependency><groupId>org.yaml</groupId><artifactId>snakeyaml</artifactId><version>1.33</version></dependency><!--底层工具库(Guava,Hutool)--><dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactId><version>5.8.27</version></dependency></dependencies></project>
注意:
1.这里的项目打包方式一定是jar包
2.servlet依赖范围一定是provided
如果不是Provided,当其他项目引用这个项目的依赖,那么这个依赖会打包到jar中,而Tomcat自带Servlet,那么tomcat会识别到这个jar中的Servlet,tomcat就不知道使用哪个Servlet
3.创建TomCatService类
3.1 创建TomcatService类
作用:
启动一个嵌入式的Tomcat服务器。在Java Web开发中,通常使用Tomcat作为Servlet容器来运行Web应用,而这个类的目的是通过代码的方式启动一个Tomcat服务器,而不是通过传统的部署方式
3.2 TomcatService类讲解
package com.xr.embed;import cn.hutool.core.io.FileUtil;
import org.apache.catalina.LifecycleException;
import org.apache.catalina.startup.Tomcat;import java.io.File;/*** Tomcat容器* @author xr* @Date 2024/5/13 11:32*/
public class TomcatServer {/*** 容器的端口号*/private final Integer port = 8080;/*** ContextPath路径,默认值是"/",表示项目的根*/private final String contextPath = "/";/*** web资源的部署目录*/private String webRoot = "src/main/webapp";/*** 启动Tomcat服务器*/public void startServer() {// 实例化Tomcat对象Tomcat tomcat = new Tomcat();// 设置端口tomcat.setPort(port);// 将webRoot构建为绝对路径webRoot = FileUtil.getWebRoot().getAbsolutePath()+ File.separator + webRoot;// 设置contextPath和web资源目录tomcat.addWebapp(contextPath, webRoot);// 创建连接tomcat.getConnector();try {//启动tomcattomcat.start();//将Tomcat进行阻状态,保持运行状态tomcat.getServer().await();} catch (LifecycleException e) {throw new RuntimeException("启动Tomcat失败!!!",e);}}
}
属性:
port : 配置Tomcat服务器的端口
ContextPath : 应用的根路径
webRoot : 指定了Web资源的部署目录,即Web应用的根目录。在实际运行时,会将这个目录构建为绝对路径,并传递给Tomcat
方法 :
startServer() : 首先实例化了Tomcat对象,然后设置了端口和Web资源目录。接着,通过调用addWebapp()方法将Web应用部署到Tomcat的ContextPath下。最后,启动了Tomcat服务器并使其保持运行状态
注意 :
为什么要让Tomcat进入阻塞装填???
如果Tomcat进入阻塞状态的话,只要一启动,Tomcat就直接结束了,所以要让Tomcat保持运行状态
3.3 安装项目到本地仓库,给其他项目使用
4.测试启动Tomcat
4.1 创建一个新的maven项目
4.2 引用mvc-framework项目的依赖
对应的依赖:
<?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>com.xr</groupId><artifactId>webapp-demo</artifactId><version>1.0-SNAPSHOT</version><packaging>war</packaging><properties><maven.compiler.source>21</maven.compiler.source><maven.compiler.target>21</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>com.xr</groupId><artifactId>mvc-framework</artifactId><version>0.9</version></dependency></dependencies></project>
4.3 创建一个webapp包,里面在创建index.html文件
有则不用创建,没有则创建
具体代码:
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<h2>Hello Tomcat</h2>
</body>
</html>
4.4 创建一个测试类
具体代码:
package com.xr;import com.xr.embed.TomcatServer;/*** 测试方法* @author xr* @Date 2024/5/13 11:50*/public class Main {public static void main(String[] args) {// 创建TomcatServer对象TomcatServer server = new TomcatServer();// 启动Tomcatserver.startServer();}
}
4.5 启动项目
项目启动成功!!!!
之前是要配置了Tomcat才能启动项目,我们这里并没有配置Tomcat
发现 :
我们并没有在Idea中配置Tomcat,按照之前的方法,我们需要在IDEA中配置Tomcat,而这里所使用的,间接让项目内嵌了Tomcat,所以无需配置Tomcat
4.6 访问项目
------------------------------------------------------待更新------------------------------------------------------------------