前言
本文主要介绍内容:
• Servlet简单介绍
• 动态资源案例
一、 Servlet简单介绍
1、项目环境
开发IDE:IDEA2022(已经配置好了tomcat10 及maven)
JDK版本:jdk17
2、Servlet简单介绍
Servlet是运行在Java服务器端的程序,用于接受和响应来自客户端的基于HTTP协议的请求。如果要实现servlet的功能,可以通过实现servlet接口或者是继承它的实现类,包括httpservlet等3个方法。
二、动态资源案例
2.1、实现步骤
Javaweb发布动态资源案例实现步骤如下图所示:
2.2、javaweb--发布动态资源案例
2.2.1创建一个Javaweb项目并导入静态资源
首先通过File->new ->projrct->
接着填写相关信息,如下图所示,即可创建一个Javaweb项目。
然后将静态资源复制到webapp目录下。
2.2.2 修改web.xml,并修改默认主页
由于我导入的是整个CRM系统的前端页面,所以,默认主页应该是CRM系统的主页面。
所以应该修改web.xml,重新设置默认主页,并将该项目的访问路径改为/crm.
具体的web.xml修改语句如下:
<!--修改默认主页-->
<welcome-file-list>
<welcome-file>/html/frame.html</welcome-file>
</welcome-file-list>
运行后结果如下:
2.2.3编写一个实现Servlet接口的实现类,并重写service方法,
在src/main/java目录下创建一个com.lianxi.dongtaidemo.StudentServlet的Servlet接口的实现类。
然后重写service方法,因为所有客户端的请求都会经过servlet方法
/*所有的客户端请求都会经过service方法*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("servlet接收到了客户端的请求");
}
2.2.4修改web.xml,配置servlet的相关资源
如上面步骤所示,service方法编写完之后,还不能使用,需要在web.xml上进行servlet配置。包括声明和映射两个步骤。具体代码如下图所示。
<!--servlet声明-->
<servlet>
<servlet-name>studentServlet</servlet-name>
<servlet-class>com.lianxi.dongtaidemo.StudentServlet</servlet-class>
</servlet>
<!--servlet路径映射-->
<servlet-mapping>
<servlet-name>studentServlet</servlet-name>
<url-pattern>/studentS</url-pattern>
</servlet-mapping>
2.2.5部署项目并查看效果是否如预期
控制台输出了语句,证明动态案例发布成功了。
2.2.6因为使用tomcat10出现问题
在运行动态案例时出现了实例化Servlet类实例异常,这是因为是因为tomcat/lib中的servlet-api.jar与maven中导入的servlet包不兼容。
解决方法有两个:
第1、 可以把tomcat降级为9版本。
第2、 在项目中手动导入tomcat安装目录下lib中的servlet-api包,然后选择继承jakata.servlet类。具体步骤是,右键项目,选择open module Settings,然后点击“+”号,找到tomcat10下的lib里面的servlet-api.jar,导入到项目当中。
回到servlet实现类,将javax.servlet变成jakata.servlet类,即可完成操作。
总结
当我们在做项目。特别是当我们做一些之前就成功过的项目时,现在做的却没有成功,可以考虑一下是不是jar升级带来的问题。