2021年9月9日

 

今天的内容

1.tomcat

2.http协议

3.servlet入门

1.Tomcat【重点】

1.1Tomcata的简单介绍

Tomcat又叫Tom猫

一款服务器软件,如果安装了这个软件的电脑,可以对外提供网络服务,就可以认为是一个服务器就行了。

Tomcat符合javaee规范的,因为内部封装的是java代码

Tomcat是apache组织下面维护的一个项目。

1.2Tomcat的安装

复制一个文件夹Tomcat到任意盘符下面,建议根目录 C盘 D盘

1.3Tomcat目录介绍

003

1.4启动和关闭Tomcat服务器

1.在Tomcat文件夹中找到bin文件夹,找到一个叫startup.bat这个文件,双击即可

启动以后会弹出来一个CMD对话框不要关闭!!!

验证是否服务器是否启动成功:打开浏览器 输入localhost:8080

2.关闭Tomcat服务器

在Tomcat文件夹中找到bin文件夹,找到一个叫shutdown.bat这个文件,双击即可

cmd窗口命令就关闭了。服务器就关闭

如果实在关不掉,就重启电脑吧!!!

以后不会再手动开启开启咱们的服务器了!!!咱们今天就玩这一次。

1.5Tomcat启动失败的原因

1.不按规矩操作

startup.bat

2.Java的开发环境存在问题!!!

java的开发环境 jre 给弄进去了没?

如果再有问题的话,找我,远程解决!!

2.http协议

1990年专门对网络传输数据的一个协议,全世界都在用的一个传输数据的规范

超文本传输协议

支持的格式MIME格式,视频音频图片文字等都可以

是组成url的一部分

协议 + 域名(ip地址) +端口号 + 文件+ 参数

http://www.baidu.com:80/index.html?username=goudan&passwrod=123456

3.使用idea新建第一个web项目【重要!!!】

之前新建的是java项目,现在写类似网站的东西了

所以要新建web项目了

图示

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

这个配置好以后点那个warning 小灯泡

15-修改Application Context

弹出来一个浏览器,浏览器里面显示$end$

3.1新建好的项目执行流程

2

4.Servlet【重点!!!】

4.1servlet的简介

servlet===>server applet

java服务器的小程序,是javaweb非常重要的环节。主要作用是完成html和java后台代码的交互(请求《====》响应)

servlet是需要运行在java服务器(Tomcat)中的,符合http协议的

servlet的核心类核心接口

    javax.servlet和javax.servlet.http

javax.servlet.ServerException

javax.servlet.http.HttpServlet

javax.servlet.http.HttpServletRequest

javax.servlet.http.HttpServletResponse

javax.servlet.http.Session

javax.servlet.http.Cookie

4.2servlet入门案例

3png

package com.qfedu.a_servelt;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

/*@WebServlet(name = "HelloServlet")
*
* 告诉服务器这个是我的servlet
* @WebServlet 是咱们请求这个servlet入口
* */
//把name去掉 然后加一个斜线,如果这个斜线没有带会报错 404
//请求这个servlet这个资源的时候
//http://localhost:8080/day39_wb1/sb
///
@WebServlet("/sb")//这个是注解,是修饰下面的HelloServlet
//如果想要初始化这个类,必须写一个入口
public class HelloServlet extends HttpServlet {
   protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       //我不管你的请求是get请求还是post请求
       doGet(request, response);
  }

   protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
       System.out.println("this is a first servlet");
  }
}

好好想想刚才访问的资源是一些html,jsp

现在访问的资源是servlet

4.3Servlet的三种创建方式【面试会问】

1.使用servlet接口创建的【不用】

init方法【重点】

getServletConfig方法

service方法【重点】

getServletInfo方法

destroy方法

2.GenericServlet这个抽象类【不用】

GenericServlet 是实现了Servlet这个接口,重写了Servlet下面的几乎所有的方法

相比较而言,GenericServlet 比Servlet接口方法少,目的是为了让程序精简版开发

去掉父类里面没有必须要实现的方法,只保留一个核心方法即可!!!让程序减负

service方法

3.使用HttpServlet创建Servlet

HttpServlet 是继承了GenericServlet,抽象类但是没有必须要实现的抽象方法!!!

4.3.1Servlet创建的第一种写法
package com.qfedu.b_servlet;

import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

@WebServlet("/test1")
public class TestServlet1 implements Servlet {
   @Override
   public void init(ServletConfig servletConfig) throws ServletException {
       //使用servletConfig对象初始化咱们servlet的
       //执行了,从这个地方可以说明一个问题 Servletlet已经被实例化了
       System.out.println("init方法");
  }

   @Override
   public ServletConfig getServletConfig() {
       //获取配置信息对象的一个方法
       //这个方法没有执行,这个方法没有用!!
       System.out.println("getServletConfig");
       return null;
  }

   @Override
   public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
       //核心方法,这个里面类似于咱们的doget方法和dopost方法
       //这个执行了
       System.out.println("service方法   服务");
       servletResponse.getWriter().append("service");
  }

   @Override
   public String getServletInfo() {
       //获取servlet详细信息的一个方法
       //没有执行,因为我用不到servlet的核心信息
       System.out.println("获取servlet详细信息的方法");
       return null;
  }

   @Override
   public void destroy() {
       //在tomacat关闭的时候,进行销毁这个servlet
       System.out.println("destroy");
       //只有在关闭tomcat服务器的时候才会执行的
  }
}
4.3.2创建Servlet的第二种方式
package com.qfedu.b_servlet;

import javax.servlet.GenericServlet;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.annotation.WebServlet;
import java.io.IOException;

/**
* 第二种写法,继承GenericServlet
*/
@WebServlet("/test2")
public class TestServlet2 extends GenericServlet {
   //只有一个方法是必须要重写的,抽象方法
   //为什么?service是核心方法,因为请求和响应的就是执行的这个方法
   @Override
   public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
       //解决中文乱码
       servletResponse.setContentType("text/html;charset=utf-8");
       servletResponse.getWriter().append("我是GenericServlet的写法");
  }
}
4.3.3使用httpServlet创建servlet【以后用这个】
package com.qfedu.b_servlet;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

@WebServlet("/test3")
public class TestServlet3 extends HttpServlet {
   //因为在前端的时候,只能两种中请求方式 get   post
   //doGet 和doPost方法写在了Service方法中了!!!
   @Override
   protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       doPost(req, resp);
  }

   @Override
   protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
       resp.setContentType("text/html;charset=utf-8");
       resp.getWriter().append("我是HttpServlet创建的Servlet");
  }


}

你始终记住一句话,在java中儿子绝对比爹强!!!屡试不爽!!!

要不然咱们搞子类干嘛?HttpServlet 是GenericServlet的儿子, GenericServlet又是Servlet的儿子

所以咱们使用HttpServlet

因为是第一天,不宜讲讲太多,你就把web项目请求和响应弄好,思路弄清晰就行了。



posted @ 2021-09-09 21:18  张三疯321  阅读(184)  评论(0)    收藏  举报