概述
1.1Servlet简介
Servlet就是sun公司开发动态web的一门技术
Sun在这些API中提供一个接口叫做:Servlet,如果你想开发一个Servlet程序,只需要完成两个小步骤:
(1)编写一个类,实现Servlet接口
(2)把开发好的java类部署到web服务器中。
把实现了Servlet接口的java程序叫做,Servlet。
1.2HelloServlet
Servlet接口Sun公司有两个默认的实现类:HttpServlet,GenericServlet。
1.构建一个普通的Maven项目,(在前面的Maven详解里面已经详细阐释了如何创建Maven项目),删掉里面的src目录。以后我们的学习就在这个项目里面建立Moudle;这个空的工程就是Maven的主工程。
pom.xml为Maven的核心配置文件,后缀名为.iml的为IDEA的识别文件,.idea为IDEA的配置文件,这些都无法删除,src为java和Maven项目的一些东西,这个可以进行删除。
主工程里面我们可以尽可能的将所需要的依赖导入进去。如下所示:
我们寻找所需要的最新版本的依赖,我们可以通过如下方式进行搜索。我们进行搜索
我们发现其中的<artifactId>javax.servlet-api</artifactId>,它的包为javax.servlet-api,我们点击网址https://mvnrepository.com,进行搜索javax.servlet-api,如下所示:
点击javax.servlet-api,之后我们发现如下所示:
我们点击4.0.1,进入如下所示:
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
我们将代码复制下来即可,将其放入依赖里面:
我们还有一个需要导入:jsp-api,我们采用同样的方法进行搜索:
我们选择 <groupId>javax.servlet.jsp</groupId>,即为javax.servlet.jsp里面的,我们点击第一个里面的即可。我们选择2.3.3版本。
我们复制代码如下所示:
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
我们复制完成之后,我们的核心代码是如下所示:
<?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>org.example</groupId>
<artifactId>untitled2</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
</properties>
<dependencies>
<!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>4.0.1</version>
<scope>provided</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/javax.servlet.jsp/javax.servlet.jsp-api -->
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>javax.servlet.jsp-api</artifactId>
<version>2.3.3</version>
<scope>provided</scope>
</dependency>
</dependencies>
</project>
如果在这个过程中出现爆红,我们点击刷新即可。
如果我们刷新之后仍然没有解决问题,我们可以删除<scope>provided</scope>, <artifactId>javax.servlet.jsp-api</artifactId>改为 <artifactId>jsp-api</artifactId>,即会自动进行下载。如果仍然有问题,我们可以降低版本进行下载。这是针对后一个依赖进行的。
如果仍然有问题,我们点击本地仓库,如下所示的文件夹,找到所对应的文件jar包,即可发现存在版本的jar包,进行修改对应的文件即可。
如果对应文件没有,我们可以进行手动下载,点击jar包(罐子),进行下载即可:
下载完成之后,丢到对应文件夹即可。
我们发现,文件已经成功导入 。
如果仍然没有得到解决,我们点击File,点击Project Structure.点击Problems,有问题的话点击修复(Fix)就可以啦。
我们接下来创建一个Servlet项目,需要先new一个项目,在这个主项目里面进行创建模板的web项目。Servlet是一个Web项目。
我们创建完成之后如下所示:
我们会发现多了一个项目。
2.关于Maven父子工程的理解:
父项目中会有:
<modules>
<module>untitled</module>
</modules>
子项目中会有:
<parent>
<artifactId>untitled2</artifactId>
<groupId>org.example</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
父项目中的java,子项目可以直接使用。
son extends father,son拥有父亲的全部指令,但是son自己的东西,father并不能全部使用。
对于这个web项目,我们第一步首先将webapp里面的web.xml进行修改,由于这个太老,我们可以从tomcat文件里面的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_3_1.xsd"
version="3.1"
metadata-complete="true">
</web-app>
之后我们将main项目结构创建好,缺java和resources,我们进行创建如下所示:
我们点击Directory,
3.Maven环境优化
1.修改web.xml为最新的
2.将Maven的结构搭建完整
4.编写一个Servlet程序
如果是一个Servlet程序,我们一定要继承一个Servlet接口
我们点击这个Maven,进行刷新即可发现。
我们进行创建即可如下所示:
1.编写一个普通类
2.实现Servlet接口,这里我们直接继承HttpServlet,
我们点击public后面的HttpServlet,点击ctrl+鼠标左键,即可看到源码。
我们从所继承的父类GenericServlet,我们来进行查看源码。
这个源码我们看待实现了Servlet接口。
我们的结构如下所示:
我们查看Servlet的代码如下所示:
我们对该代码进行分析:
//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//
package javax.servlet;
import java.io.IOException;
public interface Servlet {
void init(ServletConfig var1) throws ServletException; //init为初始化
ServletConfig getServletConfig(); //获得Servlet配置
void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException; //Request为请求 Response为响应
String getServletInfo(); //获得Servlet信息
void destroy(); //销毁
}
我们经过对源码的分析,我们了解到需要对Helloservlet里面的方法进行重写。
我们点击ctrl+O,即可找到重写的方法,我们选择doGet和doPost,我们按住ctrl,即可进行选择多个方法。而按住shift键即可选择多个连在一起的需要重写的方法。
这是我们可以互相调用代码的体现:
package com.rgf.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import javax.servlet.http.HttpServlet;
@WebServlet(name = "HelloServlet", value = "/HelloServlet")
public class HelloServlet extends HttpServlet {
//由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doGet(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
我们进行new一个对象的时候的快捷键为alter+enter,
我们所创建的类如下所示:
package com.rgf.servlet;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.http.HttpServlet;
@WebServlet(name = "HelloServlet", value = "/HelloServlet")
public class HelloServlet extends HttpServlet {
//由于get或者post只是请求实现的不同的方式,可以相互调用,业务逻辑都一样
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// ServletOutputStream outputStream = resp.getOutputStream();
// 作为一个自学能力强的人来说,我们会联想到输出可以得到,输入难道不能得到么?
//我们联想进行尝试如下所示:
ServletInputStream inputStream = req.getInputStream();//输入流
PrintWriter writer = resp.getWriter();//响应流,往外面写东西
writer.print("Hello,Servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
5.编写Servlet的映射
为什么需要映射:我们写的是JAVA程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的Servlet,还需给他一个浏览器能够访问的路径;
下面代码为src文件夹下面的webapps里面的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_3_1.xsd"
version="3.1"
metadata-complete="true">
<!--注册Servlet-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.rgf.servlet.HelloServlet</servlet-class>
</servlet>
<!--Servlet的请求路径-->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
</web-app>
6.配置Tomcat. (我们在前一篇文章里面进行过详细见解)
点击此处Maven与IDEA的联系与详解_蕾峰的博客-CSDN博客_maven与idea的关系。我们即可知道。
点击上面的+号:
我们设置完毕之后进入如下所示:
注意:配置项目发布的路径就可以了。
7.启动测试
我们点击运行之后,我们会发现多了一个文件夹,这个所出现的untitled.war即为我们的一个·网址,其中META-INF为项目的一些信息:
而WEB-INF为咱们所写的那个类。
web.xml为咱们的一些配置。
我们在网址里面输入http://localhost:9571/untitled_war/hello
即成功进入里面。
我们进入后台进行查看发现成功出现了进入doGet方法。
这即为成功的完成了一个Servlet项目。
最后
以上就是小巧诺言为你收集整理的Servlet简单项目操作的全部内容,希望文章能够帮你解决Servlet简单项目操作所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复