1、HelloWorld分析 1、编写一个类去实现 Servlet 接口
2、实现service方法,处理请求,并响应数据
3、到 web.xml 中去配置 servlet 程序的访问地址
①目标 在页面上点击超链接,由Servlet处理这个请求,并返回一个响应字符串:Hello,I am Servlet
②思路
创建Servlet类 方式一:实现Servlet接口 方式二:继承HttpServlet 一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。
2、具体操作 ①第一步:创建动态Web module
②第二步:创建超链接 Servlet Hello World 1 2 ③第三步:创建HelloServlet的Java类 package com.atguigu.servlet;
import javax.servlet.*; import java.io.IOException; import java.io.PrintWriter;
public class HelloServlet implements Servlet {
@Override
public void init(ServletConfig config) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
//service方法时专门用来处理请求和响应的
@Override
public void service(ServletRequest request, ServletResponse response) throws ServletException, IOException {
// 控制台打印,证明这个方法被调用了
System.out.println("我是HelloServlet,我执行了!");
// 返回响应字符串
// 1、获取能够返回响应数据的字符流对象
PrintWriter writer = response.getWriter();
// 2、向字符流对象写入数据
writer.write("Hello,I am Servlet");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
两个输出流的说明 字节流:getOutputStream(); 常用于下载(传递二进制数据) 字符流:getWriter(); 常用于回传字符串(常用) 两个流同时只能使用一个。使用了字节流,就不能再使用字符流,反之亦然,否则就会报错。
④第四步:配置HelloServlet 配置文件位置:WEB-INF/web.xml
<!-- 配置Servlet本身 -->
<servlet>
<!-- 全类名太长,给Servlet设置一个简短名称 -->
<servlet-name>HelloServlet</servlet-name>
<!-- 配置Servlet的全类名 -->
<servlet-class>com.atguigu.servlet.HelloServlet</servlet-class>
</servlet>
<!-- 将Servlet和访问地址关联起来 -->
<servlet-mapping>
<servlet-name>HelloServlet</servlet-name>
<!--
url-pattern 标签配置访问地址
/ 斜杠在服务器解析的时候,表示地址为:http://ip:port/工程路径
/helloServlet 表示地址为:http://ip:port/工程路径/helloServlet
-->
<url-pattern>/helloServlet</url-pattern>
</servlet-mapping>
『虚拟路径』:Servlet并不是文件系统中实际存在的目录或文件,所以为了方便浏览器访问,我们创建了虚拟出来的路径来访问它。
常见的错误一:url-pattern 中配置的路径没有以斜杠开头
常见的错误二:servlet-name 配置的值不存在
常见的错误三:servlet-class 标签的全类名配置错误
⑤url 地址到 Servlet 程序的访问
⑥小结 需求:在浏览器上点击超链接能够访问Java程序
3、梳理概念
①原生Tomcat
②IDEA中的Tomcat实例
③IDEA中的Web工程
④根据Web工程生成的war包
⑤Web工程中的资源
【1】静态资源
HTML文件 CSS文件 JavaScript文件 图片文件
【2】动态资源
Servlet
⑥访问资源的地址
【1】静态资源
/Web应用名称/静态资源本身的路径
【2】动态资源
/Web应用名称/虚拟路径
⑦Web应用名称
⑧总体的逻辑架构