菜鸟学习第十六天CSS,Http,Servlet初步认识

CSS与Servlet详解
本文深入讲解CSS层叠样式表的应用,包括样式控制、选择器、内外部样式表及与HTML的关联。同时,剖析Servlet的工作原理,涵盖其在Java服务端编程的角色、配置方法及与客户端、服务器的交互过程。

1.CSS

1.css意思就是层叠样式表,样式定义了HTML元素怎样去显示,样式一般存储在样式表中,样式添加到HTML4中来解决问题,利用外部样式表可以提高工作效率,外部样式表存储在CSS文件中,使用CSS,你的HTML文档可以用不同的样式输出显示
2.css允许开发者一下能控制多个web页的样式和布局,而仅仅通过编辑一个单独的css文档。
3.样式表允许样式信息多种方式来定义,当多于一种的样式指定一HTML元素时使用怎么样的样式呢?
规则:越往下优先级越高
1)浏览器默认
2)外部样式表(自定义css文件)
3)内嵌样式表(在< head>标签内)
4)行内样式(在一个HTML元素内)
4.css语法由三部分组成:选择器,属性,值。例如:selector{property:value}
选择器是你希望去定义的HTML元素、标签。每个属性可以有一个值,属性和值用冒号区分,外面用大括号分割。
如果值为多个单词则要用双引号 selector{property:“my value”}
如果想指定多个属性,多个属性之间用分号分隔 selector{property:value;color:red}
如果要为多个选择器指定同一种属性值: selector1,selector2,selector3{property:value;color:red}那么多个选择器之间用逗号隔开
值如果有单位不要加空格,比如20 px,中间有空格是不规范的
5.如何将我们的自定义css文件和HTML关联起来呢?(外部样式表)
在head标签中:
格式:< link rel=“stylesheet” type=“text/css” href=“css文件地址”>
参考:http://www.w3school.com.cn/tags/tag_link.asp
http://www.w3school.com.cn/tags/att_link_rel.asp
6.如果我们想将同一类型的HTML元素定义成不同的样式,那么用到选择器类
p.自定义类1{property:“my value1”}
p.自定义类2{property:“my value2”}
那么就必须在HTML文档中使用类属性才能显示出效果
< p class=“自定义1” >内容< /p>
注意,每个HTML元素只能有一个类属性
7.可以省略标签名称去定义,这样可以在所有的HTML元素中使用
.自定义类1{property:“my value1”} 注意前面点是不能省略的
8.使用ID选择器为不同的HTML的元素定义相同的样式
#自定义类1{property:“my value1”}
< p id=“自定义类1” >内容< /p> 只要id为自定义类

p#自定义类1{property:“my value1”}
< h1 id=“自定义类1” >内容< /h1> 需要标签为p且id为自定义类1才能匹配

9.注释/* */
10.内嵌样式表格式(在head中定义):
< style type=“text/css”>
.center{textx-align:center;color:red}
< /style>
11.行内样式(通过在行内使用style来指定)
< p style=“color:red;margin-left:20px”>内容< /p>
12.如果同时定义了外部样式和内部样式,那么如果外部样式有内部样式没有的属性,则将外部样式这个属性添加到样式中,如果有相同,则使用内部样式的属性。

2.Http协议

1.Http是一个基于请求/响应模式的,无状态(先给服务器发一个请求,后面又个服务器发一个请求,不知道这个请求是否是上次发过的)的协议。
2. HTTP,FTP,Telnet是构建在Tcp之上的,所以我们在客户端与服务端通信中:
第一步:客户发起连接
第二步:客户发送请求
第三步:服务器响应请求
第四步:服务器关闭连接
3.可持续连接保证了客户端与服务端可以进行一次连接,多次请求和响应。
4.telnet远程登录工具,telnet和Http都是基于TCP协议,URL是uniform resource locator,统一资源定位器,它是一种具体的URI,即URL可以用来标识一个资源,而且还指明了如何locate这个资源。
5.客户端发送给服务器的请求消息包括:请求行,消息报头(请求头部),空行(这部分是必须的,就算后面为空也是必须的),请求正文(请求数据)
在这里插入图片描述
请求行格式:方法(get 和post)Request-URI(资源定位)Http-Version(Http协议版本),CRLF(回车)
请求头部:headers小节,用来说明服务器要使用的附加信息,从第二行起为请求头部,HOST将指出请求的目的地.User-Agent(用户代理),服务器端和客户端脚本都能访问它,它是浏览器类型检测逻辑的重要基础.该信息由你的浏览器来定义,并且在每个请求中自动发送等等
空行:必须的
请求数据:也叫主体可以添加任意的其他数据
重要GetPost的区别:
1)请求的数据提交方式不同:Get请求的数据附在URL之后,用?隔开,参数间用&号分隔,可以在地址栏看见,而Post是将请求的数据放置在Http包的主体中,不可见
2)不同的浏览器对URL的长度有限制,所以Get提交会受到限制,而Post理论上不受限制,因为实际上服务器会对其提交数据大小进行限制Apache,IIS都有各自的配置,所以Post能发送更多的数据类型(Get只能发送ASCII字符)
3)理论上安全性Post比Get高,但是一般我们都会将数据进行加密,相对于安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击
4)Get比Post快,最重要的一条是:
GET产生一个TCP数据包,浏览器会把http header和data一并发送出去,服务器响应200(返回数据);
POST产生两个TCP数据包,浏览器先发送header,服务器响应100 continue,浏览器再发送data,服务器响应200 ok(返回数据)。

6.响应:分为状态行,消息报头,空行,响应正文
第一部分:状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。(Http-Version 200(状态码) ok(状态码描述) CRLF)
第二部分:消息报头,用来说明客户端要使用的一些附加信息
第三部分:空行,消息报头后面的空行是必须的
第四部分:响应正文,服务器返回给客户端的文本信息。
空行后面的html部分为响应正文。
另行参考:https://www.cnblogs.com/ranyonsue/p/5984001.html

3.Servlet

1.Servlet是Java服务端编程,servlet是运行在服务器上的,比如Tomcat(仅能运行servlet和jsp),Resin,Jetty,Weblogic,WebSphere,JBoss
2.Servlet没有main方法,通常继承一个父类HttpServlet(这里需要在Project Structure中的Modules的Dependencies中添加Library选择我们的Tomcat,意思是将Tomcat lib目录下的jar包导入)
3.重写doGet方法

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            resp.setContentType("text.html");
            PrintWriter out=resp.getWriter();
            out.println("< html>< head>< title>HelloWorld</ title>< /head>");
            out.println("< body>< h1>Hello World< h1>< /body>< /html>");
            out.flush();
    
        }

4.将servlet配置到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">
    <servlet>
        <servlet-name>HelloWorld</servlet-name>
        <servlet-class>com.myservlet.HelloServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>HelloWorld</servlet-name>
        <url-pattern>/HelloWorld</url-pattern>
    </servlet-mapping>
</web-app>

servlet-name:定义了我们要访问servlet资源的名称,例如:我们创建了一个HelloServlst类,并编写了页面,那么我们指定name为HelloWorld,这是我们HelloServlst的一个标识,当我们用网页去打开的时候地址就变成:
http:// localhost:8080/myservletdemo/HelloWorld。其中myservletdemo是项目名,因为我们在
servlet-class中指定了我们HelloServlst类文件的物理路径,并且在url-pattern指定了我们的资源路径,所以/HelloWorld寻找的其实是myservletdemo项目下com.myservlet.HelloServlet包下的HelloServlst文件。注意严格区分大小写。
servlet-mapping:
如果url-pattern定义的是路径,那么以后所有对这个路径下资源的请求都会由servlet-name中定义的servlet处理;
如果url-pattern定义的是资源格式例如*.do等,那么对于所有符合这种格式的资源的请求都由指定的servlet处理。
5.我们可以将Servlst看作是嵌套了HTML代码的java类,可以将jsp看作是嵌套了java代码的HTML页面。
6.Facade[fə’sɑːd],门面设计模式,当我们打印HttpServletRequest中的req, HttpServletResponse中的resp,发现RequestFacade和ResponseFacade实现了HttpServletRequest和HttpServletResponse接口,并通过多态形式传递给req和resp,javaee还只是一个规范只是定义了接口,RequestFacade和ResponseFacade是Tomcat中的并负责实现的
在这里插入图片描述
7.提交一个表单form,那么如何将这个表单和servlet联系起来呢?
也就是将servlrt和Url联系起来
1)在类之前定义@WebServlet(name =“LoginServlet”,urlPatterns ="/LoginTest")。因为我们定义了映射/LoginTest,所以表单中action中不能加/.这里值得注意的是在定义@WebServlet的urlPatterns时我们就应该指定映射/LoginTest,不然会报错,所以也不能在action中加/了。如果我们没有定义urlPatterns,那么就是我们不想让用户访问这个servlet,那么我们可以添加loadOnStartup=5,来指定当servlet容器启动时,加载我们这个servlet,并在servlet生命周期方法init()中进行一些数据的初始化。
2)配置web.xml文件中的Servlet和Servlet-mapping,如第4点所示。
8.提交form时 method=“get”是默认值,还有post,这就需要我们在servlet类中重写doGet和doPost方法。
9.客户端,服务器和Servlet关系:
永远是服务器在和我们的Servlet打交道,调用doget,dopost方法,客户端是不能直接访问我们的Servlet的
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值