JavaWeb学习笔记(三)------Servlet
Servlet简介
- Servlet就是sun公司开发动态web的一门技术,sun公司在这些API中提供了一个接口,叫做Servlet。
- 如果想要开发一个Servlet程序,只需要完成两个步骤:
- 编写一个类,实现Servlet接口
- 把开发好的java类部署到web服务器中
- 把实现了Servlet接口的Java程序,叫做Servlet
HelloServlet
实现类
- Servlet接口Sun公司有两个默认的实现类:HttpServlet,GenericServlet
- 构建一个普通的Maven项目,删掉里面的src目录,以后的学习在这个项目中建立Module。这个空的工程就是Maven的主工程
关于Maven父子工程的理解
- 在父项目中会有
<modules>
<module>servlet-01</module>
</modules>
- 子项目中会有
<parent>
<artifactId>javaweb-02-servlet</artifactId>
<groupId>com.zmt</groupId>
<version>1.0-SNAPSHOT</version>
</parent>
- 父项目中的jar包,子项目可以直接使用,反过来不信
Maven环境优化
- 修改web.xml为最新的
- 将maven的环境搭建完整
编写一个Servlet接口
- 编写一个普通类
- 实现Servlet接口,直接继承HttpServlet
public class HelloServlet extends HttpServlet {
//由于get或者post只是请求实现的不同的方式,可以相互调用,因为业务逻辑都一样
//重写的post方法调用了get方法,所以直接重写get方法即可
//用get调post同理
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//ServletInputStream inputStream = req.getInputStream();
//ServletOutputStream outputStream = resp.getOutputStream();
System.out.println("进入doGet方法");
PrintWriter writer = resp.getWriter(); //响应流
writer.print("Hello,Servlet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
编写Servlet的映射
-
为什么需要映射?
-
因为我们写的是Java程序,但是要通过浏览器访问,而浏览器需要连接web服务器,所以我们需要在web服务中注册我们写的Servlet,还需要给他一个浏览器能够访问的路径
-
在web.xml中进行配置
<!--注册Servlet servlet文件对应的名字-->
<servlet>
<servlet-name>hello</servlet-name>
<servlet-class>com.zmt.servlet.HelloServlet</servlet-class>
</servlet>
<!--Servlet的请求路径,url-pattern:在地址栏请求的网络接口 servlet-name:请求的servlet -->
<!--配置url-pattern,一定要在前面加/,不然会出错 -->
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>/hello</url-pattern>
</servlet-mapping>
配置tomcat
- 注意:配置项目发布的路径就可以了
启动测试
- 成功
- 注意:Tomcat下配置的Artifacts文件,要和项目文件名一样,否则产生的war包有问题
Servlet运行原理
- Servlet是由Web服务器调用,web服务器在收到浏览器请求之后,会:
Mapping问题
- 一个Servlet可以指定一个映射路径
<servlet-mapping>
<servlet-name>hello</servlet-name>
<url-pattern>