一.前言
上文的【Maven父子项目工程中的Servlet优化与准备】一文中我们已经建立好了需要的工程,本文,我们尝试搭建第一个Servlet项目。
二.HelloServlet
Servlet接口在sun公司有俩个默认的实现类:HttpServlet和GenericServlet
新建立一个java接口,标准按照阿里巴巴接口标准
com.gowork.servlet
如下图: 1.写一个普通类 ,我的类名为:HelloServlet 2.尝试实现我们的Servlet接口,我们可以直接继承HttpServlet,这个接口是sun公司的默认的实现类。 如下:
package com.gowork.servlet;
import javax.servlet.http.HttpServlet;
public class helloservlet extends HttpServlet {
}
重写Servlet的doGet和doPost方法: Servlet重点源码如下:
void service(ServletRequest var1, ServletResponse var2) throws ServletException, IOException;
idea重写方法快捷键:
Ctrl+O
因为get或post只是请求实现的不同方法,所以它们可以相互测试。业务逻辑是相同的。 编写类:
public class helloservlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter Writer= resp.getWriter(); //响应流
Writer.print("Hello,Servlet 上进小菜猪");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
super.doPost(req, resp);
}
}
三.编写Servlet的映射
3.1 为什么需要Servlet映射?
我们编写了一个java程序,但我们需要通过浏览器访问它,浏览器需要连接到web服务器,因此我们需要注册我们在web服务中编写的servlet,并为其提供浏览器可以访问的路径。
3.2 注册Servlet
进入子项目中的web.xml添加配置如下:
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.gowork.servlet.helloservlet</servlet-class>
</servlet>
3.3 Servlet的请求路径
进入子项目中的web.xml添加配置如下:
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
四.配置Tomcat
点击右上角的添加: 点击加号,找到Tomcat,配置基础配置,确保配置如下:
注意配置项目发布的位置!
五.项目启动
点击上面的启动项目,等待配置服务器: 启动之后,我们会发现多了应该webapp文件夹和target文件夹
webapp文件夹里面的index.jsp为我们的前端样式文件,类似html,如下:
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
我们启动项目:
http://localhost:8080/javweb
本地访问http://localhost:8080/javweb 结果如下:
5.1 映射
映射文件为:
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.gowork.servlet.helloservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
由上面的xml文件可以看出,如果游览器访问/hello,会转到com.gowork.servlet.helloservlet,而我们的com.gowork.servlet.helloservlet配置如下:
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
PrintWriter Writer= resp.getWriter(); //响应流
Writer.print("Hello,Servlet Shangjin small vegetable pig");
}
所以映射输出为:
Hello,Servlet Shangjin small vegetable pig
本次任务完成!