Java web入门

软件体系结构

1. C/S模型

描述:客户端和服务器端程序都需要编写

优点:响应速度快,安全度高

缺点:用户需要安装客户端程序才能使用,软件更新时客户端与服务器端两边都要升级

代表作:聊天应用(QQ、WeChat)、大型网络游戏(LOL、CF)等

2. B/S模型

描述:程序员只需要编写服务器端程序

优点:软件更新和维护比较方便,用户只需要安装浏览器即可使用

缺点:安全度较低

Tomcat的安装与启动

Tomcat安装

Tomcat是Apache提供的免费服务器,这里推荐8.5以上的版本(支持较新的Servlet 4),并且推荐下载zip版,下完之后解压即可,推荐解压到D的根目录下(其他路径的话,要求路径中不包含中文或空格)。

Tomcat的启动

启动之前,请先确保已经安装jdk且已经配置好JAVA_HOME和Path,这是因为Tomcat启动需要jdk。

在Tomcat安装目录下的bin目录中双击startup.bat,这时cmd命令行就会多出一大堆信息,如果控制台上出现乱码,这是因为Tomcat向控制台输出的是UTF-8编码格式的信息,而cmd默认编码格式为GBK,这时需要先双击shutdown.bat关闭服务器,再转到Tomcat目录下的conf目录,打开里面的logging.properties并按下图将ConsoleHandler.encoding设为GBK。

Servlet

概述

Servlet是Java Web 三大组件(Servlet、Filter、Listener)之一,Servlet具有接收请求、处理请求、响应请求三大功能,例如用户发出的登录、注册等请求都有Servlet完成。定义Servlet的方式有以下三种

1. 实现javax.servlet.Servlet接口

2. 继承javax.servlet.GenericServlet抽象类

3. 继承javax.http.HttpServlet抽象类

无论是哪种方式,必然会实现Servlet接口,因为以上后两种方式提到的类都是Servlet的实现类。我们最终开发会经常使用最后一种方式,但为了更好地了解Servlet生命周期,我们先熟悉下第一种方式:实现Servlet接口

核心方法

1. void init(SevletConfig var1) 生命周期函数,首次访问时由Tomcat调用,负责创建Servlet。

2. void service(ServletRequest var1, ServletResponse var2) 生命周期函数,Servlet每访问一次,Tomcat都会调用一次,负责处理用户请求。

3. void destroy() 生命周期函数,Tomcat关闭服务前的最后一刻,就会执行这个函数,负责服务器关闭前销毁创建的Servlet

光实现Servlet接口还不够,对初学者而言还要在web.xml中加入<servlet>和<servlet-mapping>将Servlet类与Servlet路径绑定在一起

<servlet>
<!--    名字随便取,一般取类名-->
    <servlet-name>AServlet</servlet-name>
    <servlet-class>com.reno.d1018.AServlet</servlet-class>
</servlet>
 <servlet-mapping>
        <!--    名字与servlet名一致    -->
        <servlet-name>AServlet</servlet-name>
        <!--    绑定url:/路径    一般取 /类名  -->
        <url-pattern>/AServlet</url-pattern>
 </servlet-mapping>

继承HttpServlet

继承HttpServlet抽象类是定义Servlet最常用的方式,它已经帮我们实现了service()方法,同时提供了更为简便的doGet()与doPost(),我们通过继承HttpServlet的方式来定义Servlet的话,只需要覆盖doGet()和doPost()即可

示例:

package com.reno.d1018;

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 BServlet extends HttpServlet {
    @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.getWriter().print("<h1> Brave </h1>");
    }
}
    <servlet>
        <servlet-name>BServlet</servlet-name>
        <servlet-class>com.reno.d1018.BServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <!--    名字与servlet名一致    -->
        <servlet-name>BServlet</servlet-name>
        <!--    绑定url:/路径    一般取 /类名  -->
        <url-pattern>/BServlet</url-pattern>
    </servlet-mapping>

这时登录localhost:8080/BServlet

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值