3. Servlet

1 编写第一个Servlet

1.1 不使用任何IDE
  1. HelloWorld:实现HttpServlet,然后重写doGet方法
package socket;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class HelloWorld extends HttpServlet{
	@Override
	public void doGet(HttpServletRequest request,HttpServletResponse response) throws IOException{
		PrintWriter pw = response.getWriter();
		pw.println("HelloWorld");
		pw.flush();
	}
	@Override
	public void doPost(HttpServletRequest request,HttpServletResponse response){
		
	}
}
  1. webapps:在该文件夹下建立目录与文件
    1. webapps目录下建立目录first,表示项目名
    2. first下建立目录WEB-INF
    3. WEB-INF下建立目录classes、文件web.xml
    4. 在classes下,按servlet中所定义的正确的包名来建立目录socket
    5. 将Servlet程序编译后的.class文件放入socket目录中
  2. web.xml:添加请求与Servlet类的对应关系
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xmlns="http://java.sun.com/xml/ns/javaee"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	id="WebApp_ID" version="2.5">
	<servlet>
		<!--此处必须使用Servlet的全限定类名(包名+类名)-->
		<servlet-name>HelloWorld</servlet-name>
		<servlet-class>socket.HelloWorld</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>HelloWorld</servlet-name>
		<url-pattern>/HelloWorld.do</url-pattern>
	</servlet-mapping>
</web-app>
  1. 启动Tomcat
  2. 浏览器访问Tomcat
http://localhost:8080/first/HelloWorld.do
1.2 Eclipse
  1. 配置jdk:Windows–Preferences–Java
  2. 配置tomcat
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  3. 创建web项目
    在这里插入图片描述
    在这里插入图片描述
    注:如果选3.0,那么创建Servlet后,不会直接修改web.xml而是将配置信息放到别的地方,不建议使用3.0
    在这里插入图片描述
    在这里插入图片描述
  4. HelloWorld:创建Servlet类
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  5. 部署项目
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  6. 启动Tomcat
    在这里插入图片描述
1.3 Intellij IDEA
  1. 创建项目
    在这里插入图片描述
    在这里插入图片描述
  2. 导入servlet-api.jar,该包在Tomcat的lib目录下存在
    1. 对于Intellij IDEA的导包,在这需要说明几点
      1. 通过下面方式,对web项目导入的jar包,只用来编译,真正执行时的jar包,是WEB-INF/lib下的jar包
      2. 因此如果Tomcat中不存在的jar包,想正确使用,必须在WEB-INF/lib中放入jar包,并删除out后,重新部署,并启动Tomcat
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        对号选中后,依次点击apply和ok
  3. 添加Tomcat
    在这里插入图片描述
    在这里插入图片描述
    配置虚拟项目名称,用于区分同一个Web Server下的不同项目,就相当于不使用ide时的那个first文件夹
    在这里插入图片描述

2 Servlet介绍

2.1 Servlet简介
  1. Servlet是一种Web服务器端编程技术
  2. 是实现了特殊接口的Java类
  3. 由支持Servlet的Web服务器调用和启动运行
  4. 一个Servlet负责对应的一个或一组URL访问请求,并返回相应的响应内容
2.2 Intellij IDEA上的out目录
  1. Intellij IDEA中,将整个web项目,会放在project目录下的out/artifacts中,不会放在Tomcat的webapps下,但Tomcat启动后,会将该out/artifacts下的项目加载到Tomcat中(正常情况下可以通过修改server.xml实现),猜测这是为了方便移植才这样处理,因为一旦需要将这个web项目,由开发环境转到生产环境时,只需将out/artifacts目录下所有内容导入生产环境的Tomcat中的webapps下即可
2.3 Servlet生命周期
  1. 每种Servlet,都是只有一个实例,无法重复创建多个,多次同一个请求,是由同一个Servlet对象处理的
  2. 当一个Servlet接收到第一次请求时,创建该Servlet对象,并调用init方法
  3. 如果在web.xml中配置了<load-on-startup>标签,那么在Tomcat启动时,就会创建该Servlet对象,中间的数值表示优先级
<servlet>
    <servlet-name>HelloWorld</servlet-name>
    <servlet-class>HelloWorld</servlet-class>
    <load-on-startup>1</load-on-startup>
</servlet>
  1. 服务器关闭后,先调用destroy方法,然后销毁Servlet对象
2.4 Servlet中的service、doGet、doPost方法之间的关系
  1. 自己编写的Servlet中的service、doGet、doPost都会覆盖HttpServlet中对应的方法
  2. 如果覆盖了service方法, 而新的service方法中没有调用doGet或doPost,那么接收到的请求,不再会进行doGet、doPost处理
  3. HttpServlet中没提供doGet、doPost的默认实现,因此如果自己编写的Servlet中不重写这两个方法, 就无法正确处理请求,响应码405
  4. 编写Servlet时,不需要重写service方法,只需重写doGet和doPost即可
//HttpServlet中的service方法代码片段
if (method.equals("GET")) {
	...
	this.doGet(req, resp);
}else if (method.equals("POST")) {
    this.doPost(req, resp);
}
... 
2.5 自定义jsp发送post请求

在这里插入图片描述

  1. method.jsp
<%--
  Created by IntelliJ IDEA.
  User: 含低调
  Date: 2020/2/19
  Time: 16:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <!--form为表单,action表示该表单提交后所发送的uri,method为请求方法-->
    <form action="HelloWorld" method="post">
        用户名:<input type="text" name="name" value=""><br/>
        密码:<input type="text" name="pwd" value=""><br/>
        <input type="submit" value="登录">
    </form>

</body>
</html>
  1. 浏览器访问该jsp
http://localhost:8080/myfirstServlet/method.jsp
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值