JavaWeb教学笔记

  1. 开发体系结构

基于浏览器的 B/S browsor server

基于客户端的C/S Client Server

区别:

b/s结构用户使用方便,要求比较低,升级和维护较为方便,可以跨平台使用。

缺点:安全性较低,复杂的功能性能比较低。

c/s结构:开发的发挥空间加大,性能较好,安全性高。升级维护难度较大。

2.web应用系统分类

静态网站: html,js,css

动态网站:

​ 静态的页面:html css js

​ 动态网站技术: jsp(java) asp(C#) php

动态网站的区别: 数据是动态。

3.网站的运行原理
  • 输入域名(www.jd.com)
  • 解析域名:找到对应dns服务器把对应域名的IP地址返回给浏览器
  • 根据返回的IP地址访问真正的目标服务器
  • 服务器返回浏览器需要的网站资源(html,css,js,图片,文字,数据)
  • 浏览器展示相关资源。
4.常用的web服务器
  • Java : tomcat

  • C# : IIS

  • 安装jdk:

    选择安装文件安装

    配置环境变量: 搜索“环境变量” -》 编辑环境变量配置 -> 系统环境下: JAVA_HOME 值:jdk的主目录-》path添加jdk信息: %JAVA_HOME%bin %JAVA_HOME%lib %JAVA_HOME%jre

  • 启动tomcat : tomcat的安装目录->bin目录 -> startup.bat

  • 关闭tomcat服务器: tomcat 的安装目录-> bin目录-> shutdown.bat

  • 访问tomcat的默认网站: http://localhost:8080 localhost:127.0.0.1

  • IP : xx.xx.xx.xx xx(0-255) 唯一表示一个网络的一台电脑

  • 端口: 唯一表示一个运行的程序。 80:网站的默认端口 8080:tomcat ftp:23 (0-65535)

  • 修改tomcat的默认端口

​ 找到tomcat安装目录下的conf -> sever.xml

​ <Coinnector port=“8080” …> 修改成 其他端口 (特殊端口不要用比如数据库3306)

​ 重启tomcat的

  • http协议:超文本传输协议。 默认的端口:80

  • http协议请求的方式:

​ get 请求:只传输文本,会暴露地址,不安全;请求数据不能超过2k;效率高于post

​ post 请求:传输任意数据,不会暴露地址,安全;请求数据无限制;

  • URL: 全球统一定位器,网址

    ​ http://ip:port/路径

5.创建web项目
  • 安装idea 安装idea(intellj idea官网下载) -> 参考破解文档。(复制破解文件,设置安装目录,复制激活码)
  • new project -》 选择 java EnterPrise -》Web application(4.0) -》选择安装的jdk -》选择对应的jdk版本-》选择tomcat 服务器 (没有可以自己添加-找到Tomcat安装目录)-》选择项目名称和项目路径。
6.jsp的基础

jsp定义: java server page , 是一种动态网站开发技术标准

执行原理: 将java代码嵌入html代码中,由web服务器编程后生成静态HTML页面,浏览器展示。

7.创建jsp文件

选择工程的web文件夹->鼠标右键->new -> jsp/jspx->输入jsp的名称,确定

jsp页面组成:静态和动态组成。

​ 动态部分包括:脚本标记 (java代码)

​ 指令标记

​ 动作标记

8.jsp的脚本标记

基本语法: <% java代码 %>

  • jsp的脚本中只能出现java代码
  • jsp脚本必须严格遵守java语法
  • jsp的脚本可以嵌入到html页面的任意地方,且相互之间能够访问
  • 各个脚本间的java语法必须是完整的
9. jsp的声明

可以在jsp中声明变量和方法

声明的语法:<%! 声明的变量和方法 %> int a; int main(){}

  • 声明必须以;结尾
  • 可以直接使用在<%@ page%> 已经声明的变量和方法,不需要重复声明
  • 一个声明仅在一个页面有效。如果要在多个页面有效,用<%@ include%>
10.jsp的表达式

表达式可以直接将程序的数据输出到客户端。

表达式语法:<%= 变量和表达式 %> === out.println()

11.注释

java的注释: //

​ /*

​ */

html注释: <!-- -->

jsp注释: <%-- --%>

快捷键: ctrl+/

12.jsp指令

page页面指令: 设置和定义页面的一些属性。

语法:<%@page 属性1=‘值’ 属性2=‘值’ %>

常用属性:

language 设置支持的脚本语言,目前只有Java

import: 导入jar包

isErrorPage: 是否是错误页面码。 默认值:false

errorPage: 当前页面出现错误,跳转到指定的url

contentType: 文档类型和编码格式: text/html charset=utf-8

变量,数据类型,操作符,选择,循环,方法,数组,String,list,Arraylist,set, 类,继承,多态,接口

13.idea的使用

设置idea属性: 菜单file -》 setting - 》edit

快速整理代码的快捷键: ctrl+shift+L

导入包的快捷键:alt+enter(回车键)

插入模板数据:alt+insert

14.JSP的内置对象

为了更加方便动态网站编程,jsp提供了9个内置对象。 可以直接使用,需要是实例化。

  • request 客户端与系统信息交互用的。 一次请求有效
  • response 响应客户端的信息:向客户端传递信息。
  • out 控制数据的输出操作 , 跟脚本<%= %>一样。
  • application 处理服务器级别的共享数据用。 存活与整个服务器运行期间
  • session 回话级别的共享数据用。 存活网页的回话期间。
  • config 取得jsp编译后的Servlet信息
  • pageContext 存取和处理系统运行时的各种信息
  • page 当前页面对象。
  • exception 异常处理。
15.request对象

接收客户端通过http请求处理用的,向服务器请求,作用范围:一次请求有效。

request内置对象的方法:

  • getParameter(参数名称) 获取请求中参数名称对应的值。 也就是input的name对应的值。
  • getParameterValues(参数名称) 获取请求中参数名称对应的所有值。 name中存放的多值,比如CheckBox里面的值。
  • setAttribute(string name,object obj) 设置属性
  • getAttribute(string name) 获取指定属性
  • getAttributeNames() 返回request对象所有属性名称集合
  • getParameterName() 返回客户端所有name参数的值。
  • setCharacterEncoding(String encoding) 设置正文中用的编码集

表单元素: 文本框,密码框,下拉框,单选按钮,复选框,提交按钮,重置按钮,文本域

<textarea>

<select>

16.response对象

服务器数据发送给客户端以响应其请求。

常用的函数:

  1. sendRedirect(url) 将客户端重定向到指定的url页面。
  2. setHeader(String name,String value) 设置htttp应答报文的首部字段和值及自动更新
  3. addCookie(Cookie cookie) 设置一个Cookie对象。
17.sesion 内置对象

会话就是页面在登陆的状态,用户在持续使用的过程中,会话期间Session存储变量持续有效,会话一结束,就失效。

session内置的方法:

setAttribute(String name,Object obj) 可以设定属性值

getAtrribute(String name) 可以获取属性值

removeAttribute(String name) 删除session对象中的属性值

isNew() 判断是否为新的Session。

可以在会话期间实现页面间的传递传输。

18.Application内置对象

是一个服务器级别的用户数据共享对象,可以实现多用户对数据的存取。

Application对象的常用方法:

setAttribute(String name,Object obj) 设置application对象的属性值

getAttribute(String name) 获取application对象的属性值

removeAttribute(String name) 删除对象的属性值

getRealPath(String path) 返回虚拟路径的真实路劲

request 请求对象 一次请求有效(客户端请求,请求信息:用户名,密码)

response 请求响应对象 服务器响应客户端请求(给数据,跳转面,设置页面信息)

session 会话对象(一直停留的预留时间30分,否则自动结束会话) 整个会话期间,页面可以传递信息

application 服务器内置对象,服务器运行期间有效。

request: getParameter();getParameterValues();setCharacterSet(“UTF-8”);setAttribute();getAttribute();

​ getRequestDistpacher(“跳转页面”).forward(request,response);

respsonse: sendRedirect(); setContextType();addCookie();

session: setAttribute();getAttribute();removeAttribute()

application: setAttribute();getAttribute();removeAttribute();

19.JDBC

Java操作mysql数据库的一种技术。

操作谁? 服务器地址,服务的密码账号,数据库名字

怎么操作? 查看数据; 添加数据,修改数据,删除数据。

  • 连接数据库 怎么连接?
  • 连接数据库后操作。
  • 释放连接。

JDBC的操作步骤:

1.导入jar包

​ Class.forName(“com.mysql.jdbc.Driver”)

2.创立连接对象

​ String userName = “root”

​ String userPassword = “root”

​ String url = “jdbc:mysql://localhost:3306/数据库名称”

​ Connetion conn = DriverManager.getConnection(url,userName,userPassword);

  1. 定于sql语句

​ String sql = “insert into dept values(?,‘?’,‘?’)”;

4.执行sql语句

​ Statement stmt = conn.createStatement();

​ 增删改:int n = stmt.excuteUpdate(sql);

​ 查询: ResultSet rs = stmt.excuteQuery(sql);

5.处理执行结果

6.释放资源

​ stmt.close()

​ conn.close();

20.jdbc的对象
DriverManager :管理驱动类
  • getConnection(String url)
  • getConnection(String url,String username,String pwd)

url格式:jdbc:mysql://ip:端口/数据库 ?useSSL=false

useSSL=false; mysql5.0版本以上必须设置,禁止证书或者其它验证。

Connection:数据库的连接对象

可以获取sql的执行对象:

​ 普通:createStatement();

​ 预编译:prepareStatement();

可以获取存储过程的执行对象

可以进行事务管理

​ 开启事务:setAutoCommit(false)

​ 提交事务:commit()

​ 回滚事务:rollback()

Statement:执行sql语句对象

执行DDL/DML: executeUpdate(sql)

执行DQL: executeQuery(sql)

​ 返回 ResultSet类对象

ResultSet对象

存放查询结果的一个对象。

next() ; 返回true,表示ResultSet对象中还有数据

​ 返回false, 表示ResultSet对象中没有数据

getString(参数) :返回列数据类型为String类型的列值,参数可以是索引也可以是列名。索引从1开始。

getInt(参数)

preparedStatement对象:

预编译sql语句并执行

conn.preparedStatement(sql);

设置预编译参数:

setXXX(索引,值)

XXX: 需要设置参数的数据类型。String,int

索引:1开始,按顺序设置参数

值需要设置的值。

21.JavaBean和jsp的标准动作
  • JavaBean概念

​ 因为java+html写在一起的时候,阅读难度大、维护难度大,升级不方便等于原因,需要把两者分开,简化jsp页面,方便开发和维护。

​ JavaBean是Java写的一个实现特定功能的组件,可以重复利用,可以面向对象编程。

开发模式: jsp+javabean+servlet vue.js + spring boot

  • JavaBean的重要性

    既可以重复利用,便于后期维护,也可以提高安全性

  • JavaBean的特点

​ 必须提供一个无参的构造函数。

​ JavaBean必须放到一个包,且这个类必须是一个公开的类(public)

​ JavaBean必须为属性提供get()或者set()方法,且属性必须为私有类型(private)

​ JavaBean要实现Serializable序列化接口。

  • 命名规范

​ 包名:全部小写

​ 类名:首字母大写

​ 属性名:第一个单词全部小写,后面每个单词首字母大写

​ 方法名: 与属性名命名方式相同

  • JavaBean的属性

​ 可以同时有多个不同的属性。通常都会用get或者set修饰。

​ 例: 属性名:name

​ get设置: getName() 只读

​ set设置: setName() 只写

练习: Person

​ 姓名 name 性别 sex 年龄 age 婚否 marri

  • JavaBean的分类

​ 封装数据的 Javabean: 对一个实体(表格)封装,提供一套完整的操作接口(增删改查)

​ 封装业务的Javabean: 不需要针对实体,也没有get或者set方法,只有业务的操作方法。

  • JavaBean的jsp标准动作

使用标签的形式代替java脚本

<jsp:useBean>

<jsp:setProperty>

<jsp:getProperty>

useBean:在前端jsp页面创建一个javabean对象。

语法:<jsp:useBean id=“对象名” class=“包.类名” scope=“page”>

id: javabean实例化对象

class: javabean ,需要通过包名导入

scope: Bean实例化的存储范围,及有效范围

​ page: 当前page页面

​ request:request的请求范围

​ session: 整个会话范围

​ application: 整个应用方位

setProperty: 设置useBean创建对象中的属性值。

语法:<jsp:setProperty name=“BeanId” property=“Bean属性名称” value=“属性值” param=“请求参数” />

name: useBean中的ID值

property: bean的属性名称

value: 属性值

param: 自动从请求中获取对应参数值放入对象中。

getProperty:获取useBean创建对象中的属性值

语法:<jsp:getProperty name=“BeanID” property=“Bean的属性名” />

练习:计算长方形的周长和面积

1.创建 长 宽 面积 周长

2.jsp 输入 长 宽

3.jsp

forward: 请求跳转到另外一个html,jsp,Servlet中。

注意:forward相当于转发,不是重定向。

语法:<jsp:forward page=“url” />

22.servlet概述

why: 因为jsp文件中出现大量Java代码,显得混乱且不方便维护升级,开发难度大。为了能够使jsp只负责显示数据,后端逻辑代码交由后端处理,后端处理逻辑的技术servlet技术。

什么是servlet?

​ java servlet : java 的后端服务器小程序。小程序负责响应前端请求,并进行交互,最终让jsp专门负责数据展示。

​ Servlet 是javaweb最核心的内容,是Java提供的一门动态web资源开发技术。

​ Servlet Java EE的一个编程规范,其实本质是一个接口,我们只需要继承这个接口,重写servlet方法就可以实现复杂的后端服务器程序编写。

导入Servlet的jar包

​ Servlet-api.jar jsp-api.jsp

​ file-> project Structue -> libaries -> 找到对应的jar(tomcat中lib)-> 确定-> models -> 导入。

继承Servlet接口:

​ implements Servlet{}

​ 导入Servletd的方法: Alt+ enter导入对方的方法。

Servlet的访问方式:

​ 给Servlet类写注解: @WebServlet(“/demo01”)

​ 访问路径: http://localhost:8080/web-项目名/demo01

补充:

​ 继承的servlet类由容器负责创建对象,并负责调用对应的方法。

JavaWeb的处理流程:

​ 实际上就是一个不断请求与响应的过程:

   1.  客户端发送请求至服务器。
   1.   Web服务器接收请求并进行处理。
   1.   Web服务器将处理的结果响应给客户端,并展现在客户端界面。

输入http://localhost:8080/web-项目名/demo01可以访问服务器Servlet

​ http://localhost:8080 负责找到Tomcat服务器

​ web-项目名 找到对应Tomcat下的项目

​ demo01 可以访问到需要访问的servlet类。

找到对应的类后调用对应的方法实现需求

​ Service方法:

​ ServletRequest: 封装http请求的数据

​ ServletResponse: 封装相应的数据。

Servlet的生命周期

第一步:加载并实例化Servlet继承类,服务器在启动时或者第一次请求时就是实例化。

第二步:初始化服务相关信息。容器会自动调用init()函数,只能被调用1次。

​ 编程可以通过重写init函数初始servlet的一些参数。

第三步:请求处理:当容器(Tomcat)收到请求后,会自动调用Service函数,并把请求的参数通过函数参数传递给它。然后根据情况适当调用doGet()或者doPost()两个函数。

​ 重写doGet()或者doPost()函数即可。

第四步:销毁:一旦服务器停止服务,容器会调用destroy()函数。

HttpServletRequest对象
Javax.Servlet(接口)

接口:ServletRequest,ServletResponse,ServletContex,ServletConfig

类: ServletOutputStream,ServletInputStream,GenericServlet

HttpServletRequst对象常用方法:

String getParameter(String name) 获取页面提交指定名称的参数值。

String[] getParameterValues(String name) 获取提交相同名称的参数数组。

Enumeration getParameterNames() 获取请求中所有参数名的值放到Enumeration

Map getParameterMap() 返回保存了的请求的所有参数名和值的map对象 pzl 16

void setAttribute(String name,object obj) 设置request范围内的存储数据。

object getAttribute(String name ) 获取

Cookie[] getCookie() 获取request中的所有Cookie

String getMethod() 获取请求类型,如GET,Post

String getRequsetURI() 获取主机名到参数之间的路径

StingBuffer getRequestURL() 获取请求的url

String getRealPath() 获取当前项目的实际物理路径

HttpSession getSession() 获取当前会话的对象

getRequestDispatcher() 获取转发对象, 调用forword转发到另一个页面。

HttpServletResponse对象

​ 封装了服务器响应客户端处理方法。

常用方法:

PrintWriter getWriter() 获取响应的打印输出流对象,可以用该对象向jsp输出内容。

void addCookie() 向响应中添加一个Cookie对象,也就是向客户端发送一个Cookie

void setCharacterEncoding(String enc) 设置响应的编码格式。jsp是utf-8 传递告诉对方编码方法

void sendRedirect(String path) 重定向

使用servlet API的原则

​ 开发人员在开发的时候,通常继承HttpServlet类,然后从写里面的方法

​ 原则:

​ 重写doGet()方法处理get请求。

​ 重写doPost() 方法处理post请求。

​ 如果需要初始化工作,要重写init()函数

​ 如果需要清理资源工作,重写destroy() 函数

​ 实际工作:大多数都会重写doGet和doPost方法

请求转发和重定向

​ 均可以跳转页面。

​ 区别:

​ 请求转发是同一个请求,在服务器端进行,浏览器url不会变。

​ 重定向是一个新的请求,浏览器中显示的是新的url,request的值不能用。

​ 重定向需要开启一个新的请求,比请求转发要慢一些。

经验:优先使用请求转发,请求外部服务器资源时用重定向。

Servlet API:Servlet Config

​ servlet容器初始化一个实例化对象,会为当前的servlet准备一个唯一的ServletConfig对象,实例化对象可以读取里面的内容初始化参数。

​ 注意:ServletConfig只能针对当前配置的Servlet有效。

​ 初始化信息位置: web.xml 中配置。

​ 数据库的用户名、密码、数据类型等。

配置xml:

<servlet> 可以每个Servlet类有个配置

\<servlet-name>  别名(一般用类名)\</servlet-name>

​ <servlet-class> 实际类(包名.类)</servlet-class>

​ <init-param> 可以有多个参数

​ <param-name> 参数名称 </param-name>

​ <param-value> 参数值 </param-value>

​ </init-param>

</servlet>

<servlet-mapping>

​ <servlet-name> 别名

​ <url-partern> 当前这个Servlet的访问路径 如:/demo01

</servlet-mapping>

Servlet中获取配置信息:

​ a.获取连接对象 sc = this.getServletConfig()

​ b.利用对象获取值: sc.getInitParameter(String name) 例:sc.getInitParameter(“uid”)

ServleAPI: ServletContext

​ 可以实现多个Servlet获取相同的信息,可以实现多个Servlet初始化。

注意:多个Servelet类共享初始化数据。

配置:

<context-param>

​ <param-name> 参数名称

​ <param-value> 参数值

获取:获取配置对象 cs = this.getServletContext()

​ 利用对象获取值: sc.getInitParameter(String name)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值