接上篇文章介绍了如何创建一个javaweb的项目,这期我们就来看看如何配置servlet,并且使用servlet接收与响应请求。
提示:新手小伙伴可以先看上篇文章,如何创建一个javaweb项目!
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
狭义方面来讲 Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servlet运行于支持Java的应用服务器中。从原理上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
所谓容器,顾名思义就是放东西的地方。Servlet容器自然就是放Servlet的地方。由J2EE开发。
Tomcat是Servlet的运行环境,即一个Servlet容器。
Servlet容器的作用是负责处理客户请求,当客户端发送请求过来时,Servlet容器获取请求,然后调用某个Servlet,并把Servlet的执行结果返回给客户端。因此,Servlet容器是Web服务器和servlet进行交互的必不可少的组件
Servlet 的主要功能在于交互式地浏览和修改数据,生成动态 Web 内容,过程为:
1,客户端发送请求至服务器端;
2,服务器将请求信息发送至 Servlet;
3,Servlet 生成响应内容并将其传给服务器。响应内容动态生成,通常取决于客户端的请求;
4,服务器将响应返回给客户端。
Servlet生命周期是指Servlet从创建直到毁灭的整个过程。可以分为以下几个阶段:
1、加载实例化阶段;
2、初始化阶段:
3、服务阶段:
4、销毁阶段:
Servlet 容器负责加载和实例化 Servlet。当容器启动或第一个发送请求给某个 Servlet 时,容器会读取 web.xml 或 @WebServlet 中的配置信息。对指定的 Servlet 进行加载。加载成功后,容器会通过反射对 Servlet 进行实例化。
当客户端向 Servlet 容器发出请求时,Servlet 容器首先会解析请求,判断是否已经有了该 Servlet 对象,如果有,则直接使用该 Servlet 对象,如果没有,则创建 Servlet 实例对象,然后通过调用 init() 方法(在servlet生命周期内只能调用一次init方法)去初始化 Servlet 实例。
这个阶段也是 Servlet 生命周期中最重要的阶段,在这个阶段中,Servlet 容器会为这个请求创建代表 HTTP 请求的 ServletRequest 对象和代表 HTTP 响应的 ServletResponse 对象,然后将它们作为参数传递给 Servlet 的 service() 方法。
service() 方法从 ServletRequest 对象中获得客户请求信息并处理该请求,通过 ServletResponse 对象生成响应结果。
在 Servlet 的整个生命周期内,对于 Servlet 的每一次访问请求,Servlet 容器都会调用一次 Servlet 的 service() 方法,并且创建新ServletRequest 和 ServletResponse 对象,就是说,service() 方法在 Servlet 的整个生命周期中会被调用多次。
当 Servlet 容器关闭、重启时,就表示Servlet的生命周期结束。在销毁 Servlet 之前,容器就会调用 Servlet 的destory() 方法 ,以便让 Servlet 对象释放它所占用的资源。随后该实例就会被 Java 的垃圾收集器所回收在 Servlet 的整个生命周期中,destroy() 方法也只能被调用一次。
需要注意的是,Servlet 对象一旦创建就会驻留在内存中等待客户端的访问,直到服务器关闭或 Web 应用被移除出容器时,Servlet 对象才会销毁。
File-> Project Structure-> libraries 选择“+”,选择java-> 找到tomcat路径下的lib文件夹里选择servlet-api和jsp-api。
这里我们有两种方式web.xml文件的方式和@WebServlet。
web.xml配置如下:
<!-- 声明servlet -->
<servlet>
<!-- Servlet别名 自定义-->
<servlet-name>test</servlet-name>
<!--servlet的类全名-->
<servlet-class>ccc.com.servlet.testServlet</servlet-class>
</servlet>
<!-- 将Servlet和URL绑定 -->
<!--给Servlet提供(映射)一个可供客户端访问的URI-->
<servlet-mapping>
<!--必须和servlet中的name相同-->
<servlet-name>test</servlet-name>
<!-- servlet的映射路径(访问serclet的名称) -->
<url-pattern>/test</url-pattern>
</servlet-mapping>
在src文件下新建包 ccc.com.servlet,在里面新建一个类 testServlet
testServlet类里继承HttpServlet
代码如下:
public class testServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
System.out.println(request.getParameter("id"));
}
}
在index.jsp里面写入以下代码
注意name属性要对应
<form action="/test" method="get">
<input type="text" name="id">
<input type="submit" value="提交">
</form>
然后我们启动服务器进入浏览器页面
随便输入一个内容,点击提交发现
我们找到Run-> Edit Configurations ->右边找到Deployment
把他改成
重新启动服务器
然后输入框里随便输入字符串点击提交,就可以发现已经在控制台打印出来了
设置返回数据,servlet接收请求,返回客户端信息
这就是web.xml文件的方式:
这种方式的话比较简单,只需要添加一个@WebServlet就可以达到目的
如下:
@WebServlet(name = "test",urlPatterns = "/test")
public class testServlet extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) {
System.out.println(request.getParameter("id"));
}
}
web.xml:
优点:便于集中管理和修改。
缺点:代码量大且繁琐,可读性差;手工配置文件,容易导致错误。
@webservlet:
优点:代码少,配置简单。
缺点:无法集中配置,不方便集中管理和修改。
以上就是今天要讲的内容,本文仅仅简单介绍了servlet的使用,利用servlet实现了前后端的一个交互。