A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© liweihao5253 初级黑马   /  2019-8-30 16:15  /  1199 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

Web核心

JavaEE:Java语言在企业中开发的技术规范总和,一共规定了13项规范

常见4种的Javaweb服务器软件:
weblogic:Oracle公司的产品,大型JavaEE服务器,支持所有JavaEE规范,是一款付费软件
webSphere:IBM公司,特点同上
JBOSS:JBOSS公司,特点同上
Tomcat:Apache基金会,中小型JavaEE服务器,仅支持少量的JavaEE规范,开源免费
netty(了解)

Spring全家桶、Apache产品

Tomcat
    记住4个目录:
    bin
    conf
    webapps
    lib

常用cmd命令行:
netstat -ano | findStr "8080"
强行终止PID为4412的程序:
taskkill /F /PID 4412

tasklist -svc
查找进程名称为java的程序
tasklist -svc | findStr "java"

Tomcat如何关闭?
正常关闭:
    shutdown.bat
    或者,在tomcat控制台Ctrl+C,也会正常关闭
强制关闭:
    直接点x

Tomcat 项目部署
直接文件夹复制进webapp目录下
或者先把项目使用zip打成war包,复制进webapp目录下,会自动解压缩,删除也会自动删除

在server.xml配置项目的虚拟目录(不推荐)
在<host>标签中配置如下内容:
<Context docBase="D:\" path="/hehe">

在conf\Catalina\localhost创建任意名称的xml文件
写入如下内容<Context docBase="D:\" >
访问的时候把xml文件名作为虚拟目录访问即可

Web项目的目录结构



Servlet接口
1、实现Servlet接口
    关键方法 service()
2、配置Servlet
    <servlet>
        <servlet-name></servlet-name>
        <servlet-class></servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name></servlet-name>
        <url-pattern></url-pattern>
    </servlet-mapping>

Servlet生命周期
1、创建 init()  创建后执行一次
    什么时候被创建?
    ①默认情况下第一次被访问时被创建
    ②可以手动配置指定Servlet创建时机
        在<servlet>标签中添加
         <load-on-startup>1-10之间的正数</load-on-startup>
    Servlet是单例的,会有线程安全问题
        单例会导致多线程访问数据不安全问题,如何解决?
        加锁不是一个好办法,会导致排队
        解决办法:避免在service()方法中进行成员变量的修改操作
2、服务 service() 每次访问时执行
3、销毁 destroy() 销毁前执行一次

Servlet3.0之后的新特性:注解配置Servlet
这样就可以不使用web.xml也就不用配置标签(创建项目时不创建web.xml)
使用:在自定义Servlet类前加注解@WebServlet("/hello")
注意,注解不要和web.xml同时用

IDEA关于Tomcat的相关配置
区分两个项目:
工作空间的项目:java文件所在的项目
Tomcat的部署项目:真正部署在服务器上的项目

注解配置Servlet的补充:
/user
/user/*
*.do  此处的后缀名可以随便起
/user.*

Servlet继承体系
Servlet
    -GenericServlet
        -HttpServlet

http协议
一次访问对应一次请求+一次响应
默认端口80
基于TCP 三次握手和四次挥手
简述TCP和UDP的区别

http 1.0
    每次请求都会建立新连接
http 1.1
    新特性:SPDY协议
    连接复用

HTTP请求的数据格式:
1、请求行
    请求方式 url 请求协议
    GET "XXXX/XXX" HTTP/1.1
        http共有7种请求方式,常用方式get和post
    get和post的区别?
    GET:
        参数在请求行中
        请求url长度有限制
        安全性较低
        无法上传文件
    POST:
        参数在请求体中
        请求url长度无限制
        安全性较高
        上传文件只能用post
2、请求头
    请求头名称1:值1
    请求头名称2:值2

   
   Accept: text/html, application/xhtml+xml, application/xml; q=0.9, */*; q=0.8

   Referer: http://localhost:8080/tomcat_demo/
        1、防盗链
      2、数据统计
3、请求空行
    空行,分隔请求头和请求体
4、请求体
    GET方式没有请求体,POST有请求体
    键=值


Request对象
继承体系结构:
ServletRequest 接口
    -HttpServletRequest 接口
        -RequestFacade 实现类,由Tomcat提供

request功能:
获取请求行 请求头 请求体



路径问题:
最前面加/代表绝对路径,/代表tomcat之下的根目录
最前面有/就代表localhost:8080/
最前面不加/代表相对路径
区别最前面带斜杠和不带斜杠的区别

获取请求信息中文乱码问题
Tomcat 8.0解决了get乱码问题,但是post方式需要手动解决
post底层通过流拿到数据,设置流编码方式
获取参数前使用:
request.setCharacterEncoding("utf-8")

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马