文章目录
一、概念
servlet 是sun公司开发动态web的一门技术
实现了servlet接口的java程序叫做servlet
二、在网页实现helloservlet
1、先建立一个普通maven项目,将src目录删掉,就是一个maven主工程。注意创建新项目的时候要建立依赖
<dependencies>
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>javax.servlet.jsp</groupId>
<artifactId>jsp-api</artifactId>
<version>2.1</version>
</dependency>
</dependencies> </dependency>
可以在他下面建立new mudules。就是子工程。
2、通过new modules建立子工程
父子工程,相当于java里面的继承,如下图所示:
父:
<parent>
<artifactId>javaweb-maven3</artifactId>
<groupId>com.zhoudan</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
子:
<modules>
<module>javaweb-servlet01</module>
</modules>
使用最新的webapp版本,配置到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_4_0.xsd"
version="4.0"
metadata-complete="true">
</web-app>
3、将maven的结构补充完整:
新建main下面的java和resources:就是新建两个目录,并且将目录标记为源目录和资源目录
4、编写一个servlet程序
建立一个包和编写一个普通类
继承实现为:servlet–>GenericServlet–>HttpServlet–>自己的类去继承
所以用自己的类继承HttpServlet就可以了
重写以下两个方法就可以了
public class ServletDemo extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.getWriter().print("hello,servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
5、servlet的映射:
由于我们写的是java程序,但是要通过浏览器访问,所以要连接web服务器,就需要在浏览器中注册我们写的servlet和一个浏览器可以访问的路径
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.zhoudan.ServletDemo</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
此处/hello 为servlet请求路径,浏览器通过这个路径访问,同时通过hello的名字找到对应的程序,所以servlet和servlet-mapping中的servlet-name要一致!!
6、配置tomcat
右边的路径对应网页的访问路径,才可以找到
7、 运行结果为
可以发现路径为/hello/hello,一个为tomcat里面配置的,一个为servlet请求的,所以出现了两个!!