- serlvet技术
- 一、什么是serlvet
- 二、第一个servlet程序
- 一)手动实现 servlet 程序
- 二)url 地址到 Servlet 程序的访问
- 三)Servlet 的生命周期
- 四)GET 和 POST 请求的分发处理
- 五)通过继承HttpServlet实现Servlet程序
- 六)使用 IDEA 创建 Servlet 程序
1、Servlet 是 JavaEE 规范之一。规范就是接口
2、Servlet 就 JavaWeb 三大组件之一。三大组件分别是:Servlet 程序、Filter 过滤器、Listener 监听器。
3、Servlet 是运行在服务器上的一个 java 小程序,它可以接收客户端发送过来的请求,并响应数据给客户端。
二、第一个servlet程序 一)手动实现 servlet 程序
1、编写一个类去实现 Servlet 接口
2、实现 service 方法,处理请求,并响应数据
3、到 web.xml 中去配置 servlet 程序的访问地址
package com.blue.serlvet;
import jakarta.servlet.*;
import java.io.IOException;
/**
* @author wxs_blue
* @create 2022-04-22 21:03
*/
public class HelloServlet implements Servlet { //1.实现Serlvet接口
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* service方法是专门来处理请求和响应
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
//2.实现 service 方法,处理请求,并响应数据
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("Hello Servlet 被访问了");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
3、配置 web.xml
<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">
<servlet>
<servlet-name>HelloServletservlet-name>
<servlet-class>com.blue.serlvet.HelloServletservlet-class>
servlet>
<servlet-mapping>
<servlet-name>HelloServletservlet-name>
<url-pattern>/hellourl-pattern>
servlet-mapping>
web-app>
此时运行
此时出现的是【index.jsp】中的内容
我们在浏览器地址栏中添加【】标签中的地址,我这是hello,并进行访问
此时去IDEA中可以看到【service 】方法已经被执行
package com.blue.serlvet;
import jakarta.servlet.*;
import java.io.IOException;
/**
* @author wxs_blue
* @create 2022-04-22 21:03
*/
public class HelloServlet implements Servlet {
public HelloServlet() {
System.out.println("1,构造器方法");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("2,初始化方法");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* service方法是专门来处理请求和响应
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3,--> Hello Servlet 被访问了");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("4,销毁方法");
}
}
执行结果
一、执行 Servlet 构造器方法
二、执行 init 初始化方法
第1、2步,是在第一次访问,的时候创建 Servlet 程序会调用。
三、执行 service 方法
第3步,每次访问都会调用。
四、执行 destroy 销毁方法
第4步,在 web 工程停止的时候调用。
通过【form】表单的【method】来区分是【get】请求还是【post】请求
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello Serlvettitle>
head>
<body>
<form action="http://localhost:8080/JavaWebTest/hello" method="get">
<input type="submit" value="提交">
form>
body>
html>
package com.blue.serlvet;
import jakarta.servlet.*;
import jakarta.servlet.http.HttpServletRequest;
import java.io.IOException;
/**
* @author wxs_blue
* @create 2022-04-22 21:03
*/
public class HelloServlet implements Servlet {
public HelloServlet() {
System.out.println("1,构造器方法");
}
@Override
public void init(ServletConfig servletConfig) throws ServletException {
System.out.println("2,初始化方法");
}
@Override
public ServletConfig getServletConfig() {
return null;
}
/**
* service方法是专门来处理请求和响应
* @param servletRequest
* @param servletResponse
* @throws ServletException
* @throws IOException
*/
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
System.out.println("3,--> Hello Servlet 被访问了");
HttpServletRequest httpServletRequest = (HttpServletRequest) servletRequest;
String method = httpServletRequest.getMethod();
//输出得到的method方法名
System.out.println(method);
// if("GET".equals(method)){
// doGet();
// }else if("POST".equals(method)){
// doPost();
// }
}
/**
* 做 get 请求的 *** 作
*/
public void doGet(){
System.out.println("get 请求");
System.out.println("get 请求");
}
/**
* 做 post 请求的 *** 作
*/
public void doPost(){
System.out.println("post 请求");
System.out.println("post 请求");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
System.out.println("4,销毁方法");
}
}
结果
DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Hello Serlvettitle>
head>
<body>
<form action="http://localhost:8080/JavaWebTest/hello" method="post">
<input type="submit" value="提交">
form>
body>
html>
结果
一般在实际项目开发中,都是使用继承 HttpServlet 类的方式去实现 Servlet 程序。
1、编写一个类去继承 HttpServlet 类
2、根据业务需要重写 doGet 或 doPost 方法
3、到 web.xml 中的配置 Servlet 程序的访问地址
package com.blue.serlvet;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* @author wxs_blue
* @create 2022-04-24 21:01
*/
public class HelloServlet2 extends HttpServlet { //1.继承 HttpServlet 类
// 2.重写doGet() doPost()方法
/**
* doGet() 在 get 请求的时候调用
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doGet(req, resp);
System.out.println("HelloServlet2 的 doGet 方法");
}
/**
* doPost() 在 post 请求的时候调用
* @param req
* @param resp
* @throws ServletException
* @throws IOException
*/
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// super.doPost(req, resp);
System.out.println("HelloServlet2 的 doPost 方法");
}
}
3.配置web.xml(我这里配置成hello2)
<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">
<servlet>
<servlet-name>HelloServlet2servlet-name>
<servlet-class>com.blue.serlvet.HelloServlet2servlet-class>
servlet>
<servlet-mapping>
<servlet-name>HelloServlet2servlet-name>
<url-pattern>/hello2url-pattern>
servlet-mapping>
web-app>
运行结果
【更新ing…】
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)