Javaweb教程(2023-1-10)

第一章:Javaweb介绍

HTML:超文本标记语言
<html>
<head>	
<title>	网页标题</title>	
<meta charset="utf-8">
	</head>
<body>	
网页显示内容
</body>

</html>




html页面中由一对标签组成 :<html>	</html>
	<html>称为开始标签
	</html>称之为结束标签
title表示网页的标题
可以在里面设置编码方式
<br/>表示换行 br标签是一个单标签
单标签:开始标签和结束标签是同一个 斜杠放在多次后面
p表示段落标签

<img>表示图片标签

1.相对路径
2.绝对路径

3.标题标签:<h1></h1>
h1~h6
html是解释性语言被编译形语言

4.有序列表标签:
<ol></ol>
参数type 表示显示的类型:A a...
start 表示从*开始

5.无序列表ul


css  JavaScript HTML

js是客户端运行的脚本语言 语法风格和Java比较相似
js是弱类型的语言  var str=""  根据等号后面的实际值来判断数据类型
js中的函数:function 函数名称(形参列表){

}
DOM技术:鼠标悬浮:onmouseover event  srcElement  事件传递  parentElement style backgroundcolor
鼠标离开:onmouseout
鼠标点击:head/pointer onclick td innerText

在DOm中的增删改查  绑定各种事件






第二章:服务器端编程

1.配置Tomcat服务器

Java/DB/JDBC
HTML/CSS/JS
CS:客户端服务器架构模式
优点:充分利用客户端的资源 减轻服务器的负荷
		一般安全要求下不高的计算存储任务放在客户端执行  不需要把所有的计算和存储都放在服务器端执行 从而减轻服务器的压力 也能减轻网络负荷
		
		缺点:需要安装客户端  ,升级维护成本较高
		
BS: 浏览器服务器架构模式

优点:客户端不需要安装 维护成本较低
缺点:因为所有的计算和存储都是在服务器端的  服务器的负荷较重  在服务器计算后才发送给客户端 一次客户端和服务器端会进行非常频繁的数据通信 从而网络负荷会比较重


1.BS/cs
2.Tomcat
3.Servlet入门


Tomcat介绍:
第一步:解压:解压的时候 不能存在空格特殊字符
第二步:目录结构说明:
  bin可执行文件目录 
  conf配置文件目录
  logs:日志文件目录
  webapps:项目部署目录
  work:工作目录
  temp:临时文件目录
 第三步:配置环境变量:使:Tomact能够跑起来:
 		第四步:启动Tomact 然后访问主页
 		第五步:新建项目 并在Tomact中部署:
 		方法:打开:webapps新建一个项目名称 然后再这个名称下新建一个WEB-INF
 		
 	开始在浏览器中访问:
 	
 	找到bin目录里面的startup 点击开始
 	
 	如果启动不了 就进入电脑资源管理器 打开Tomcat服务
 	
 
 在idea中部署项目:在module里面新建一个项目 
 
 然后 在Project Structure 中找到Facets 点+号配置Web模块 Tomact配置完成


1.获取用户客户端发给我的数据
2.调用dao中的数据中的方法完成添加功能
3.在控制台打印添加成功



由用户输入数据提交给服务器


add--->AddServlet
		1.获取用户(客户端)发送给我的数据
		2.调用DAO中的方法完成添加功能
		3.在控制台打印添加 成功
		
		发送到服务器 之后调用数据库











2.Servlet介绍

index.html代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

<!--





-->

<h1>计算机科学与技术学院</h1>
<!--设置好表单发送的请求类型为post-->
<form action="add" method="post">

   名称: <input type="text" name="fname"><br>
    价格: <input type="text" name="price"><br>
    库存:  <input type="text" name="fcount"><br>
    备注:  <input type="text" name="remark"><br>
    <input type="submit" value="添加">

</form>





</body>
</html>
servlet代码:
package com.atguigu;

import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;

public class servlets extends HttpServlet {


    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

//        1.参数一 request(req)
        String fname = request.getParameter("fname");
        String price = request.getParameter("price");
        int i = Integer.parseInt(price);
        String fcount = request.getParameter("fcount");
        int i1 = Integer.parseInt(fcount);
        String remark = request.getParameter("remark");

        System.out.println("fname"+fname+"******"+"price"+price+"fcount"+fcount+"remark"+remark);

    }
}

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>servlets</servlet-name>
        <servlet-class>com.atguigu.servlets</servlet-class>
    </servlet>

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

    </servlet-mapping>

<!--    1.用户发送请求 action=add

2.项目中 web.xml文件中找到 url-pattern=/add 第14行
3.找到 servlet-name=servlets
4.找到和servlet-mapping中的servlet-name一致的servlet
找到servlet-class 就可以找到
用户发送的是post请求method=post  因此Tomcat会执行servlets中的doPost方法



404 :找不到资源
-->
</web-app>

3.serVlet与review

项目---->模块

1.新建项目--新建模块
2.在模块中添加web
3.创建artifact--部署包
4.Lib-artifect
		先有artifact  后来才添加的mysql.jar 此时 这个jar包并没有添加到部署包中 那么在projectSetting中有一个Problems 我们点击fix选择add to....
		
		另外我们也可以直接把lib文件夹直接新建在WEB—INF下
5.在部署的时候  修改Application Context 然后再回server检查URl的值  URL的值就是Tomcat启动完成后自动打开你指定的浏览器 然后默认访问的网址
启动后报错404  404意味着找不到指定的资源
6.405问题:当前请求的方法不支持  比如表单method=post  那么Servlet必须对应DoPost 否则会报405错误
7.空指针或者NumberFormatException 意味有价格和库存  如果价格取不到 结构你想对null进行Integer.pareInt()
就会报错 错误的原因大部分是name="peice" 此处写错了 结构在Servlet端还是使用request

1.设置编码

post方式下设置编码  防止中文编码
	//        post请求下设置编码 防止乱码
        request.setCharacterEncoding("UTF-8");
        
//        如果是get请求下错误的中文数据  转码有点麻烦 (Tomcat
//        )  需要注意的是设置编码这一句代码必须要在所有的获取参数工作之前
        

2.servlet的继承关系

		--1.继承关系
		Servlet接口:
		GenericServlet抽象类


		--2.相关方法:
			init(config) 初始化方法
			service(request,response)服务方法
			destory()  销毁方法
			
			javax.servlet.GenerServlet仍然是抽象的
			
			1.string method=req.getMethod()获取请求方式
			2.各种if判断 根据请求方式不同 决定调用不同的do方法
			
			
			3.小结:
				1.继承关系;httpServlet--->GenericServlet--->Servlet
				2.Servlet中的核心方法 init() service() destroy()
				
				服务方法:当有请求过来时 service()方法会自动响应 其实是Tomcat容器调用的
				在HttpServlet中我们会去分析请求的方式:到底是get  post 还是delete等
				 然后再决定调用的是那个do开头的方法
				 那么我们在HttpServlet中这些do方法都是405的实现风格
3.Servlet的生命周期
		--1.生命周期:从出生到死亡的过程叫做的生命周期 对应servelet中的三个方法init() service() destory()
		--2.默认情况下第一次接收请求时 这个Servlet会进行实例化 初始化 然后服务从第二次请求开始 每一次都是服务  当容器关闭时 其中的所有servlet实例会被销毁  调用销毁方法
		--3.通过昂立我们发现 servlet实例tomcat都只会创建一个  所有的请求都是这个实例去响应 默认情况下
		第一次请求时  Tomcat才会去实例化 初始化 然后再服务 这样子提高了启动速度  第一次请求时 耗时是较长的
		因此得出结论 如果需要提高系统的启动速度 当前默认情况是这样 如果需要提高响应速度 我们莺歌海设置serVlet的初始化时机
		
		--4.Servlet的初始化时机:
				默认是第一次接收请求时 实例化 初始化
				-我们可以通过<load-on-startup>1</load-on-startup>来设置servlet启动的先后顺序
						数字越小启动越靠前
						
	--5.Servlet在容器中是 单例的 线程不安全的
			--单例:所有的请求都是同一个实例去响应
			--线程不安全:一个线程需要工具这个实例中的某个成员变量值去做逻辑判断  但是在中间某个时机 另一个线程改变了这个成员变量的值 从而导致第一个线程的执行路径发生了变化
--我们已经知道了servlet是线程不安全的 给我们的启发是  尽量不雅在servlet中定义成员变量  如果不得不定义成员变量
那么就不要去根据成员变量的值去做一些逻辑判断

<servlet>
        <servlet-name>servlets</servlet-name>
        <servlet-class>com.atguigu.servlets</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>servlets</servlet-name>
        <url-pattern>/add</url-pattern>
        <load-on-startup>1</load-on-startup>
    </servlet-mapping>




4.Http协议:超文本传输协议

		http request  http请求:
		http请求应包含两个部分:请求和响应
				--请求包含三个部分		
				1.请求行 :包含三个消息  1.请求的方式  2.请求的URl  3.请求的协议(一般都是HTTP1.1)
                请求的消息头包含了很多客户端需要告诉服务器的消息 比如浏览器型号 发送的内容消息
                
              请求体:三种情况:get方式 没有请求体  都是有一个queryString
              		post方式:有请求体  form data
              		json格式:有请求体 request payload
              		
             响应:也包含三部分
             1.响应行  2.响应头  3.响应体
             
             1.响应行包含三个消息  1.协议 2.协议状态码 3.响应状态
               200:正常响应
               404:找不到资源
               405:请求方式不支持
               500:服务器内部错误
               
               2.响应头:包含了服务器的信息 服务器发送给浏览器的消息(内部的媒体类型 编码 内容长度)
              3.响应体:响应的实际内容(比如请求add.html页面时 响应的内容就是html body head from....)

		













5.会话

6.Thymeleaf

第27节servlet-session会话跟踪技术

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值