JavaWeb初识Servlet
一、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.运行结束😘😘
争取摘到月亮,即使会坠落。