zoukankan      html  css  js  c++  java
  • 《Java web应用》板书

    20200303

    一、基础知识介绍

      Web应用程序:就是在浏览器里运行的程序,网站也可认为是一个小型web应用程序。

      软件架构:

        B/S(Browser/Server)模式:浏览器/服务器模式,web应用程序就属于B/S模式。

        C/S(Client/Server)模式:客户机/服务器模式,比如:QQ。

    二、搭建Java web的开发环境

      1、安装JDK,JDK就是JAVA的开发工具包。

      2、安装Tomcat,web服务器软件,主要用于网站的发布。PHP的常用的web服务器软件是Apache,微软的web服务器软件是IIS。

      3、安装eclipse,集成开发环境(IDE)。

      4、在eclipse中新建web项目

        操作:"File"->"New"->"Dynamic web project"

        项目的结构介绍:

          Java Resource:放java程序的目录,其中src里存放自己写的java程序

          build:主要放java程序编译后class文件。

          WebContent:站点根目录,主要存放前端的资源和jsp文件。

       5、新建一个jsp页面

         jsp页面的组成:html代码和java程序片组成。

         在jsp页面嵌入java代码的三种方式:

          Java程序片:<%  %>

          Java表达式:<%=  %>

          Java成员变量:<%!   %>

            java成员变量的生命周期为Tomcat的运行周期,就像Java类的静态变量一样,可被多个该类的对象所共享。

     三、jsp页面常见的内置对象

      out,request,response,cookie,session,application

      所谓内置对象就是直接在页面中使用,不需要通过类来创建的对象。

      1、out

        out对象主要向浏览器输出内容,它的主要方法是print(),println(),write()

      2、request

        请求对象,主要用来封装客户端的请求,包括客户端的操作系统、浏览器、URL和发送数据。

        常用的方法:

          request.setCharacterEncoding("UTF-8")  //设置请求对象的字符编码,防止中文乱码

          request.getParameter("参数名")  //获得请求里的某个参数的值

          request.getParameterValues("参数名")  //获得某个参数的多个值,返回的是一个字符串数组。 

        前端知识补充:

        表单的中常用的控件

          表单:<form method="请求方式" action="处理请求的服务器端地址">

            请求方式:

              GET:发送的数据是附在URL后面,在地址栏输入地址或点链接都是GET请求。

              POST:通常表单提交的请求最好是POST

          文本框:<input type="text"  >

            id:给浏览器用的,name:是给服务器的

          密码框:<input type="password"  >

          提交按钮:<input type="submit" >

          重置按纽:<input type="reset" >

          单选按纽:<input type="radio">

          复选框:<input type="checkbox">

          下拉列表:

            <select name="...">

              <option value="值1">值1</option>

              ...

            </select>

        3、response

          响应对象,是由服务器对用户请求作出的响应。

          常用方法:

            response.sendRedirect("地址")  //重定向到某个页面

              例:response.redirect("login.jsp");  //跳转到login.jsp页面

            response.setHeader("页面文件头的属性名","页面文件头的属性值")  

              例:response.setHeader("refresh","3;url=loginSuccess.jsp");  //3秒后跳转login.jsp页面

            response.setContentType("响应内容打开的应用程序类型");

              例:response.setContentType("application/msword");  //用本地的word打开响应内容

        4、Session

          会话,是指客户端与服务器的一次会话,它的生命周期从用户访问网站开始直到离开网站。服务器为每一个访问用户创建session对象,每个用户的session对象互不相同。 

          常用方法:

            session.setAttribute("键名",键值)  //键值的类型是Object类型

            session.getAttribute("键名")  //获得session对象里面指定键名的键值,该方法返回类型为Object

            session.removeAttribute("键名")  ///从session对象里移除指定的元素

            session.invalidate()  //让session失效,一般在用户退出的时候使用 

            session的生存期限取决于下面几个因素:

            1)用户是否关闭浏览器  2)是否调用了invalidate()方法  3)是否达到最长的"发呆"时间

        5、application

          应用程序对象,web服务器启动后就会产生application对象,直到web服务器关闭,在此期间application对象可被所有的用户所共享。

          常用方法:

            application.setAttribute("键名",键值)

            application.getAttribute("键名")

            application.removeAttribute("键名")

          application和session的区别:

            session跨页面共享数据,但每个用户的session数据各不相同,属于用户级的。

            application跨页面、跨用户共享数据,属于应用程序级的。

        6、Cookie类

           //强调一下,cookie不是jsp内置对象,只是它是web常用的技术,所以也放在这一块写了。

          cookie是在客户端保存一些文本信息,例如在保存用户的用户名和密码,以便下次访问这个网站时,直接从本地硬盘读取相应的信息,封装在请求对象里,服务器可从请求对象里获得cookie信息。

          常用操作:

            (1)创建一个Cookie对象

              Cookie  c1=new Cookie("键名","键值");  //只能存储文本型数据

            (2)获取cookie对象的键和值

              cookie对象.getName()  //获得 cookie对象的键名

              cookie对象.getValue()  //获得cookie对象的键值

            (3)获取某个cookie对象

              请求对象里有多个cookie对象,如何来获得指定的cookie对象?

              //比如找键名为"username"的Cookie对象的值。     

    String userNameValue="";
    Cookie[] cookies=request.getCookies();//获取请求对象里的所有Cookie对象
    for(Cookie c:cookies){
        if(c.getName().equals("username")){
            userNameValue=c.getValue();
            break;
        }
    }
    //userNameValue就是键名为username的Cookie对象的值

    四、JavaBean

      Java类的一个实例,通常是实体类的一个对象,实体类一般是专门用来存储数据的,一般要用公开的getter()和setter()方法。一般对应数据库中的一张表。业务类一般用来处理业务逻辑的。

      1、JSP的动作标记

      (1)usebean

        格式:<jsp:usebean id="bean的名字" class="bean的类名" scope="范围" ></jsp:usebean>

        功能:如果在指定的范围(隐含对象:request,session,application)内,没有对象,JSP就会创建一个bean,如果有的话,就取这个对象。

      (2)getProperty

        格式:<jsp:getProperty name="bean的名字" property="属性名" />

         功能:取bean的属性

      (3)setProperty

        格式:<jsp:setProperty name="bean的名字" property="属性名" value="属性值" />

      练习一:

      1、新建一个产品类Product(实体类)

      2、新建一个产品服务类ProductService(业务类)

        添加一个方法getProducts(),获得所有产品

      3、新建jsp页面ProductList.jsp,呈现所有产品。

       练习二:利用session技术实现添加产品功能

      1、设计一个添加产品的表单ProductForm.jsp

      2、接收并处理输入的产品数据的页面AddProduct.jsp

      3、修改并完善数据展示页面ProductList.jsp

      JSP的指令标记

      <%@ page import ...%>  //页面指令

      <%@ taglib prefix="c" ...%>  //jstl标签库指令

      <%@ include file="" %>  //包含指令

    五、 Servlet

      概念:它就是Java程序,设计目的是开发动态web资源。

      sevrlet是接口,HttpServlet实现Servlet接口的类,我们写的Servlet程序是继承HttpServlet,需要重写两个方法,一个doGet();另一个doPost();

    创建Servlet程序

      helloWorld(camel命名法)

      HelloWorld(pascal命名法)

      ASP

      JSP(Java Server Page)

    Servlet最常用的是作控制器(Controller),接收请求,调用业务类的方法处理数据,发送数据到视图(JSP)。

      MVC

      M:Modal(模型)

      V:View(视图)

      C:Controller(控制器),Servelt

    六、EL和JSTL

      EL(表达式语言)

      可以在jsp页面直接使用隐含对象(pageContext,request,session,application)

      格式:${表达式}

      例如:${product.name}

      JSTL:JSP  Standard Tag Libray(JSP标准标签库)

      html标签:<div>

      jsp标签:<jsp useBean...>

      jstl标签:<c:forEach ...>

      使用jstl

       (1)下载jstl的jar包,复制到WEB-INFO目录下。

       (2)在使用jstl的jsp页面中,加入指令标记引入核心库,

        <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

        引用jstl的目的是为了团队协作开发,前后端分离。

      0407练习一:

      设计一个添加产品表单,表单数据提交给Servlet程序处理后,将数据发送给jsp页面并显示。

      1.设计一个添加产品的表单ProductForm.html

      2.新建一个Servlet程序AddProductServlet1.java

      3.新建视图ProductView.jsp页面展示Servlet传过来的数据

    七、Java访问MySQL数据库 

      MySQL适合中小型项目,Oracle适合中大型应用程序。

      Java使用mysql

      (1)下载mysql的驱动

      (2)访问mysql数据库

    (一)使用MySQL CLI访问mysql数据库

      c:/>mysql -u <用户名> -p<密码>

      常见的命令:
      mysql>show databases;   //显示所有的数据库

      mysql>use <数据库>  //使用数据库

      mysql>show tables;  //显示当前库下的所有表

      mysql>desc <表名>  //查看表结构

       

      mysql>create database  <数据库名>  //创建数据库

      mysql>create  table  <表名>(<列的定义>,...)

      

      例:

      create table product(
        id int auto_increment primary key,  //auto_increment是自动编号

        name varchar(255),  //产品名称

        price  float,  //产品价格

        image varchar(255)  //产品图片

        );

    (二)Java连接MySQL

      1、java连接MySQL8.x数据库

      驱动下载: mysql-connector-java-8.0.16.jar

    //1.加载mysql数据连接驱动
    Class.forName("com.mysql.cj.jdbc.Driver");    //8.0
    
    //2.连接数据库            
    Connection connection=DriverManager.getConnection("jdbc:mysql://localhost:3306/eshop?useSSL=false&serverTimezone=UTC", "root", "root");
    //说明:8.0一定要带上参数serverTimezone=UTC

      2、Java连接MySQL5.x数据库

      驱动下载:mysql-connector-java-5.1.39-bin.jar

    //1.加载mysql数据库的驱动
    Class.forName("com.mysql.jdbc.Driver");
    
    //2.连接数据库
    Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/eshop","root","root");
    

      3、Java连接MySQL8.0数据库,但驱动是5.x

      驱动下载:mysql-connector-java-5.1.39-bin.jar

      (1)修改mysql8.0的加密规则

      进入windows命令行窗口,在dos提示符下输入:mysql -u root -proot

      出现mysql命令提示符"mysql>",再输入以下命令:

    mysql>ALTER USER 'root'@'localhost' IDENTIFIED BY 'root' PASSWORD EXPIRE NEVER;   -- 密码永不过期
    mysql>ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';  --改成5.x加密规则
    mysql>FLUSH PRIVILEGES;  --刷新权限
    mysql>alter user 'root'@'localhost' identified by 'root';  --最终修改root用户的密码

      说明:

        8.x和5.x的区别是加密规则不同:

        5.X版本是:default_authentication_plugin=mysql_native_password

        8.x版本就是:default_authentication_plugin=caching_sha2_password

       (2)Java连接MySQL的主要代码

    //1.加载mysql数据库的驱动
    Class.forName("com.mysql.jdbc.Driver");
    
    //2.连接数据库
    Connection connection= DriverManager.getConnection("jdbc:mysql://localhost:3306/eshop","root","root");

       

      Java读取MySQL数据库中的数据的步骤:

      1、建立数据库连接Connection

      2、通过Connection对象创建语句对象Statement

      3、由Statement对象执行查询,获得结果集ResultSet

      4、对结果集进行遍历。

      

      Java对数据库进行写入操作步骤:

      1、建立数据库连接Connection

      2、通过Connection对象创建语句对象Statement或预编译的语句对象PrepareStatement

      3、执行语句对象Statement或预编译的语句对象PrepareStatement

      

      练习一:访问NBA所有的球队

      1、建立球队的数据模型(实体类)Team

      2、建立业务逻辑类TeamService

      3、建立控制转发的Servlet类GetTeamsServlet

      4、建立视图TeamList.jsp

      study数据库在腾讯云上的连接信息:

        数据库地址:jdbc:mysql://sh-cdb-qego3b2a.sql.tencentcdb.com:61551/study

        用户名:student

        密码:student

      

      练习二:访问NBA所有的球员

      1、建立球员的数据模型(实体类)Player

      2、建立业务逻辑类PlayerService

      3、建立控制转发的Servlet类GetPlayersServlet

      4、建立视图PlayerList.jsp

      study数据库在腾讯云上的连接信息:

        数据库地址:jdbc:mysql://sh-cdb-qego3b2a.sql.tencentcdb.com:61551/study

        用户名:student

        密码:student

      

  • 相关阅读:
    arthas-常用命令
    k8s-容器技术-Mount Namespace
    k8s-statefulset介绍
    k8s-yaml配置文件
    k8s-控制器模式
    k8s-pod使用
    k8s-pod简介(半原创)
    k8s-安装我们第一个集群
    k8s-安装
    Corn表达式详解(转)
  • 原文地址:https://www.cnblogs.com/beast-king/p/12401251.html
Copyright © 2011-2022 走看看