一、Servlet:
处理请求和发送响应的过程是由Servlet来完成的,并且Servlet是为实现动态页面而衍生的东西。理解这个你得了解B/S模式(浏览器/服务器)与Http协议。
B/S: 浏览器(Browser)/服务器(Server)。 浏览器通过网址来访问服务器,例:在浏览器中输入www.baidu.com,回车后浏览器就会显示百度,这个过程,就是Http的Request(请求)/Response(响应);
你请求了这个网址,所以浏览器就会反馈一个百度页面给你!(解释:这个过程就是请求与响应);
B/S模式优点:
①:更新简洁,多设备同步,对开发人员只需要更改服务器的内容就行,但是对用户而言只需要刷新浏览器即可。
②:多设备同步,所有数据都在网上,只要能够使用浏览器即可使用。
B/S模式缺点:
①:性能较低,相比于客户端应用性能低,但是随着硬件性能的提升,这个差距在缩小。
②:浏览器兼容,处理低版本的浏览器显示问题一直是开发人员头疼的问题之一,移动设备兼容性较好。
补充C/S模式:
C/S:客户端(Client)/服务器(Server)。指的是客户端与服务器的意思(很常见);例如网络游戏:地下城与勇士,英雄联盟,穿越火线等很多;
C/S模式优点:
①:性能较高,可以将一部分的计算机工作放在客户端上,这样服务器只需要处理数据即可。
②:界面炫酷,视觉冲击大,客户端可以使用更多系统提供的效果,做出更为炫目的效果。
C/S模式缺点:
①:更新软件,如果推出了新版本,不更新客户端无法使用(部分)
②:不同设备访问,如果使用其他的电脑,没有安装客户端的话就无法登录软件。
二、Servlet生命周期:
①:实例化: Servlet容器创建Servlet实例;
②:初始化: 该容器调用init()方法;
③:请求处理:如果请求Servlet,则容器调用service()方法;(doGet/doPost...;补充: 如果Servlet里面写service方法则会根据请求自动分配请求方法:例如:get请求则会分配doGet方法,以此类推);
④:服务终止:销毁实例之前调用destroy()方法;
import java.io.IOException;
import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class MyServlet extends HttpServlet {
public MyServlet() {
System.out.println("我是第一个执行的方法..."+this+"访问此servlet,我只执行一次,后面再访问我也不会执行!如果在web.xml中配置了 <load-on-startup>1<load-on-startup>我则会在启动时执行");
}
//初始化参数用的
@Override
public void init(ServletConfig config) throws ServletException {
System.out.println("我是初始化方法...也是第二个执行的方法");
}
//用户来分配请求用的(传递过来的请求有可能是get请求还有可能post请求)
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("我是用来分配请求的service()...我是第三个执行的方法");
}
//销毁方法
@Override
public void destroy() {
System.out.println("销毁方法....我是关闭服务时才执行的方法");
}
}
补充:
<servlet>
<servlet-name>myservlet</servlet-name>
<servlet-class>com.xkrj.controller.MyServlet</servlet-class>
<!--如果加下面这段,则第一个执行的方法不需要访问 /ms路径,如果没有加则需要访问路径才会执行第一个方法哦-->
<!-- <load-on-startup>1</load-on-startup> -->
</servlet>
<servlet-mapping>
<servlet-name>myservlet</servlet-name>
<url-pattern>/ms</url-pattern>
</servlet-mapping>
三、Servlet编写(Maven工程):
①:创建一个Maven工程
②:给项目起一个名字
③:一定配置好这俩小东西哦
④:等待Maven加载完成
⑤:准备工作
⑥:如何创建两个文件夹
⑦:开始项目代码编写(包名可以和我的不一样,但是最好和我的一样,省的出错,等写习惯了可以随意)
⑧:编写代码:继承Http协议,重写两个方法;注意:两个重写方法的调用哦!!!
package com.laugh.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
public class myservlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
⑨:给Tomcat加入项目
⑩:配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<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">
<!--我这个头是新的-->
<!--我是提供 myservlet 使用的哦;-->
<servlet>
<servlet-name>laugh</servlet-name>
<servlet-class>com.laugh.servlet.myservlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>laugh</servlet-name>
<url-pattern>/laugh</url-pattern>
</servlet-mapping>
</web-app>
11:编写myservlet文件
package com.laugh.servlet;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class myservlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setContentType("text/html");
resp.setCharacterEncoding("utf-8");
PrintWriter writer = resp.getWriter();
writer.print("<h1>我进入了Helloservlet里面了</h1>");
System.out.println("欧克了");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
doGet(req, resp);
}
}
12:运行项目,查看结果
13.运行结束