资讯详情

Java Web

文章目录

  • 软件架构
  • HTML
  • URL-pattern编写方式
  • CSS
  • Servlet
  • 会话技术
    • cookie技术
    • session技术
  • JSP
    • 脚本:
      • jsp程序段:
      • jsp声明:
      • jsp表达式:
      • JSP内置对象
      • JSP指令
      • JSP动作
  • JDBC
    • 抽取jdbc工具类:JDBCUtils
      • 数据库连接池
  • MVC
    • EL表达式
  • Filter
  • Listener

软件架构

使用Java基于互联网项目的语言开发 : 1. C/S: Client/Server 客户端/服务器端 * 用户本地有客户端程序,远程有服务器端程序 * QQ * 优:用户体验好 * 缺陷:开发、安装、部署、维护麻烦 2. B/S: Brower/Server 浏览器/服务器端 * 用户通过不同的网站访问不同的服务器端程序只需要一个浏览器 * 优发、安装、部署、维护方便 * 缺乏:过度应用会影响用户体验;硬件要求高

资源分类:

  • 静态资源:利用静态网页开发技术发布的资源 特点:所有用户访问的结果都是一样的 HTML:构建基本网页,显示页面内容 CSS :美化页面,布局页面 JAVAScript:控制页面元素, 用户要求静态资源,服务器将直接向浏览器发送静态资源,浏览器内置的静态资源分析引擎可以显示静态资源

  • 动态资源:利用动态网页技术发布的资源 特点:所有用户访问的结果可能不同 JSP, Servlet,php 用户要求动态资源,服务器将动态资源转换为静态资源,然后发送给浏览器

HTML

Hyper Text Markup Language 超文本标记语言 超文本:网状文本以超链接的形式组织各种空间的文本信息 标记语言:由标签组成的语言<标签名称>HTML XML 标记语言不是编程语言,没有逻辑 语法: 1) HTML的后缀名是.html或.htm 2) 标签: 封标签:开始标签,结束标签;< html> < /html> 自闭症和标签:开始和结束标签;< br> 3)标签可以嵌套:正确嵌套 < a > < b >< /b >< /a> 4)属性可以在开始标签中定义,属性由键对组成,需要引号(单双都可以) 5)html标签不区分大小写,但建议使用小写

<html> <head> <title>title</title> </head> <body> <font color='red'> hello world</font><br> <font color='bule'> hello world</font> </body> </html> 标签: <head> <meta charset = "UTF-8">//指定中文
<title> title</title>
</head>
  • :最基本的标签 html:html文档的艮标签 head:头标签,指定html文档的属性,引入外部的资源 title:标题 body:体标签 <!doctype html>:

  • :与文本相关的标签

 注释:<!-- 注释 -->
 <h1> to<h6>:标题标签 加黑加粗,h1~h6逐渐字号减小
 <p>:段落标签 自行加换行
 <br>:换行
 <hr>:显示一条水平线,自闭和标签
<hr color ="red" width ="200" size= "10" align = "left">
                  颜色                   宽度                     宽度                对其方式
 <b>:加粗
 <i>:斜体
 <font>:字体标签; color颜色  size大小  face字体
<center>:文本居中

color:
   *英文单词,red,green,blue
   *rgb(值1,值2,值3) 0~255;rgb(0,0,255)
   *#值1值2值3:00~FF之间;#FF00FF
width:
   *数值:width=“20” 单位,默认是px(像素)width = “50%”
空格:&nbsp
  • :展示图片
<img src="SJ/云1.jpg" align = "right" alt = "大云" width ="500" high="300"/>
相对路径:以 ./ 开头的路径;当前目录
                  ../  代表上一级目录
有序列表:<ol><li> </li> </ol>
<!--有序列表-->
早上起床
<ol type="1" start = "5">
// 1,2,3     开始从5开始
    <li>睁眼</li>
    <li>看手机</li>
    <li>洗脸</li>
</ol>
无序列表:<ul><li></li></ul>
<!--无序列表-->
<ul type="square">
   //type类型 disc 圆点  square方框 circle圆圈
    <li>睁眼</li>
    <li>看手机</li>
    <li>洗脸</li>
</ul>
  • : 定义一个超链接:< a> < /a> href :跳转到的URL target:指定打开资源的方式 _blank:在空白页面打开 _self:在当前页面打开
<a href="http://www.baidu.com">点我</a>  //没有设置target则默认在当前页面打开
<a href="http://www.baidu.com" target="_blank"> 点我</a>//在空白页面打开URL
<a href="./列表标签.html" target="_blank"> 点我</a>  //空白页面打开该目录下的列表标签
<a href="http://www.baidu.com"><img src="SJ/云1.jpg"></a>//点击图片之后跳转到新的链接地址
  • :由于其本身没有样式,所以在CSS时方便修改使用 span:文本信息在一行展示,行内标签,内联标签 div:每一个div会占满一行,块级标签

  • : < header> < header> :页眉 < footer> < /footer>:页脚

  • :表格中没有列的概念 定义多少行 行内定义多少个单元格

<table>  </table>:定义表格
  width:宽度
  border:边框
  cellpadding:定义内容和单元格之间的距离
  cellspacing:定义单元格之间的距离,如果指定为0,则单元格之间的线会合为一条
  bgcolor:背景色
  align:对齐方式
  
<tr> </tr>:定义行
  bgcolor:背景色
  align:对齐方式
<td> </td>:定义单元格
 
<td colspan="2">//合并
  colspan:合并行
  rowspan:合并列
<th> </th>:定义表头单元格
<caption>:表格标题
<thead>:表示表格的头部分
<tbody>:表示表格的体部分
<tfoot>:表示表格的脚部分,最下边
<table border="2" cellpadding="0" cellspacing="0">  //加的边框
   
      <tr>  //定义的表行
        <td>编号</td>  //每个的单元格
        <td>姓名</td>
        <td>成绩</td>
        
        <th>编号</th>  //每个的单元格
        <th>姓名</th>//th默认加粗居中
        <th>成绩</th>
    </tr>
</table>
  • : 表单:用于采集用户输入的数据,用于和服务器进行交互 < form>< /form>
action 提交数据的URL
method 指定提交方式
post 1)不会再地址栏中显示,会封装在请求体中 2)请求参数的大小没有限制3)较为安全
get 1)请求参数会在地址栏中显示2)请求参数长度有限3)不太安全

表单项中的数据想要被提交,必须指定name属性 表单项标签: input: 可以通过type取值 改变元素样式

  • type: **text:文本输入框,默认值

placeholder:指定输入框的提示信息; 当输入框的内容发生变化(有数据输入),则提示信息会自动消失

    **password:密码输入框
    **radio: 单选框
        1.要想让多个属性实现单选的效果,则必须让name属性值一致
        2.一般会给每一个单选框提供value属性,指定其被提交的值
             不写value则选择后只会出现on 而不知道选了什么
        3.checked:默认被选中 
    **checkbox:复选框
        1 .一般会给每一个单选框提供value属性,指定其被提交的值
             不写value则选择后只会出现on 而不知道选了什么
        2.checked:默认被选中 
    ** file:文件选择框
    **hidden:隐藏域 
    **按钮
         1.submit:
         2.button:普通按钮
         3.image:图片,可提交信息
    **email:邮箱
    **number: 只能输入数字
    **color:颜色
    **date:日期 ,描述日期到那一天
    **datetime-local:描述日期到分
 *lable:指定输入项的文字描述信息
     **lable 的for属性会和Input的id属性对应;如果对应了,则点击lable区域,会让input输入框获取焦点
select:下拉列表
<select name="province">    //加上name之后才能提交上去
<option value="陕西”> 陕西</option>   //加上value才能知道提交的是什么
 </select>
textarea:文本域
cols:指定列数
rows:指定行数

URL-pattern编写方式

-  <a href = "/项目名/资源路径">   </a>
-  <form action = "/项目名/资源路径">  </form>
-  重定向:response.sendRedirect("/项目名/资源路径");
-  转发:request.getRequestDispatcher("/资源路径").forward(request,response);
-  servlet路径
  <servlet>
      <servlet-name> hello  </servlet-name>
      <servlet-class> com.helloservlet  </servlet-class>
  </servlet>
  <servlet-mapping>
      <servlet-name> hello  </servlet-name>
      <url-pattern> /hello  </url-pattern>
 </servlet-mapping>
- Cookie设置path
  cookie.setPath("/资源路径");
- ServletContext
     ServletContext application = config.getServletContext();
     application.getRealPath("/资源路径");

2.1 可以编写多个url-pattern 2.2 精确匹配 < url-pattern> /hello < /url-pattern> < url-pattern> /system/hello < /url-pattern>

CSS

页面的美化和布局控制 1.概念:Cascading Style Sheets 层叠样式表 *层叠:多个样式可以作用在同一个html的元素上,同时生效 2.好处: 1.功能强大 2.将内容和样式控制分离 *降低聚合度 *分工协作更容易 *提高开发效率 3 .css的使用 1)内联样式: *在标签内使用style属性指定CSS代码 *不常用 *作用域在当前这行标签中 < div style=“color:red;”>hello class< /div> 2)内部样式: *在head标签里,定义style标签,style标签的标签体内容就是css代码 *作用域在当前这个页面中

<head>
<style> div{ 
           color:blue; } </style>
</head>

<div>hello class</class>

3)外部样式://css资源文件要和html在同一个包下 1.定义CSS的资源文件 2.在head标签里,定义link标签,引入外部资源文件 *作用域在所有页面中 a.css文件: //单独的css包中的文件

div{
    color:green;
}

<head>
  <link rel="stylrsheet" href="css/a.css">
</head>  
  <div>hello css</div>

3.可以用style @去引用文件

<style> @import "css/a.css"; </style>

4.css语法: #格式:

选择器{
       属性名1:属性值1;
       属性名2:属性值2;
        .......
     }

#选择器:筛选具有相似特征的元素 #每一对属性需要使用 ; 隔开,最后一对属性不需要

Servlet

HTTP协议 Hyper Text Transfer Protocol 超文本传输协议 特点: 基于TCP/IP的高级协议 默认端口号是:80 基于请求/响应模型:一次请求一次响应 无状态的:每次请求之间相互独立,不能交互数据 请求消息数据的格式: 请求行 请求方式 请求URL 请求协议 GET /login.html HTTP/1.1 请求方式: HTTP协议中有7中请求方式,常用的有两种 *GET: 1.请求参数在请求行中,url后面 2.请求的url长度有限制 3.不太安全 *POST: 1.请求参数在请求体中 2.请求的url长度没有限制 3.安全 请求头 请求空行 请求体


Request:

  1. 获取请求参数

String getParmeter(String name)    username=zs&password=123
String getParmeterValues(String name) hobby=sing&hobby=dance

请求转发
request.getRequestDispatcher("/login.jsp").forward(request,response);
请求重定向
response.sendRedirect("/welcome?username=zhangs&password=123")
                       URL       参数名  参数值

会话技术

1.会话:一次会话中包含多次请求与响应 功能:在一次会话的范围内的多次请求间,共享数据 2.方式: 1.客户端会话技术:Cookie 2.服务器端会话技术:Session


cookie技术

1、有效时间决定cookie的位置 1.1(默认)浏览器的缓存中 1.2 设置了缓存时间[ setMaxAge() ] 之后在客户端的硬盘文件中 2、Cookie和路径是有关系的 3、response.addCookie() 将Cookie发送给浏览器 4、request.getCookies() 获取提交的Cookie 5、浏览器禁用Cookie

  • : cookie可以保存会话状态,将数据保存在客户端 cookie可以保存在浏览器的缓存中,浏览器关闭cookie消失 cookie也可以保存在客户端的硬盘文件中,浏览器关闭cookie还在,除非cookie失效

  • : 保留购物车商品的状态在客户端上 十天内免登录。。。。

  • 默认情况下,服务器发送的Cookie给浏览器之后,浏览器将Cookie保存在缓存中,只要不关闭浏览器,Cookie永远存在,并且有效。当浏览器关闭之后,缓存中的Cookie被清除。 可以通过设置Cookie的有效时长,以保证Cookie保存在硬盘文件中,但是这个有效时长必须是>0的, Cookie的有效时长>0,则该Cookie会被保存在客户端硬盘文件中,有效时长过去之后,则硬盘文件当中的Cookie失效

  • setMaxAge(int seconds) //秒为单位 正数:将cookie数据写入到客户端硬盘的文件中,持久化存储,cookie存活时间 负数:默认值 0:删除cookie信息 在浏览器客户端无论是硬盘文件中还是缓存中保存的cookie,什么时候会再次发送给服务器呢?

    • 浏览器会不会提交发送这些Cookie给服务器,和请求路径有关系
    • 请求路径和Cookie是紧密关联的
    • 不同的请求路径会发送不同的Cookie 默认情况下Cookie和 11 可以指定路径
  • 浏览器禁用Cookie

    • 服务器发送过来的Cookie,浏览器不接收
    • 服务器还是会发送Cookie,只不过浏览器不接收
  *创建cookie对象,绑定数据
    Cookie cookie = new Cookie(String name,String value)
  *指定路径
    cookie. setPath("/king")
  *发送cookie对象
    response.addCookie(Cookie cookie)
  *获取cookie,拿到数据
    Cookies[] cookies = request.getCookies();
    if(cookies!=null)
    { 
        
        for(Cookie cookie:cookies)    
        { 
        
            String cookiename = cookie.getName();
            String cookieValue = cookie.gatValue();
            System.out.println(cookiename+" = "+cookieValue);        
        }
    }
  1. 实现原理 基于响应头set-cookie和请求头cookie实现
  2. 细节 1)一次可不可以发送多个cookie 创建多个cookie对象,使用response调用多次addCookie方法发送cookie即可 2)cookie存中文 tomcat 8之前 不能直接存储中文 tomcat 8之后 可存中文 3)cookie共享问题 3.1)多个web项目,cookie的共享问题 setPath(String path):默认是当前虚拟目录 要共享,将path设为:“/” setPat(“/”); 3.2)不同的tomcat服务器间cookie共享 setDomain(String path):设置一级域名相同,多个服务器之间cookie可共享 setDomain(“.baidu.com”),tieba.baidu.com和news.baidu.com中的cookie可以共享
  3. 特点 1.存储数据在客户端 2.浏览器对于单个cookie的大小有限制 以及 对一个域名下的总cookie数量也有限制

session技术

  1. 概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中的HttpSession
   * 获取HttpSession对象:
       HttpSession session = request,getSession();
   * 使用HttpSession对象:
       Object getAttribute(String name)
       void setAttribute(String name,Object value)
       void removeAttribute(String name)
  1. session的实现是依赖于cookie的
  2. session被销毁 1.服务器关闭 2.session对象调用invalidate() 3.session默认失效时间 30min
  3. 特点 1.session用于存储一次会话的多次请求的数据,存在服务器端 2.session可以存储任意类型,任意大小的数据
<%@ page session = "flase"%>  //默认是true
HttpSession session = request.getSession(false); //有session用session,没有session也不创建新的session
数据存储地址 数据大小 安全性
session 服务器端 没有限制 安全
cookie 客户端(浏览器端) 有大小限制 相对不安全

JSP

概念:Java Server Pages:Java服务器端页面 即可以定义HTML标签,又可以编写Java代码

脚本:

jsp程序段:

  <% 代码 %>:定义的Java代码,在service方法中,可以定义什么,该脚本中就可以定义什么
   注意:
   1)不能在jsp程序段中定义函数方法,也不能定义静态语句块  
   2)程序段中的大括号对可以跨多个程序段
   3)程序段中的变量要先定义后使用

jsp声明:

  <%! 代码 %>:定义的Java代码在jsp转换后的Java类的成员位置
   注意:
   1)jsp声明中定义的变量是网页级的,系统会优先执行
   2)可以定义访问权限控制符,也可以定义方法,可以定义静态语句块
   3)jsp声明中只能做定义,不能实现控制逻辑,|| 不能在其中使用out.print()做输出操作

jsp表达式:

  <%= 变量/返回值/表达式 %>:结果输出到客户端,
   注意:
   1)不能以“ ;”结尾
   2)不能出现多条语句
   3)表达式中的内容一定是字符串类型,或者能够通过toString()函数转换成字符串的形式

没有写到<% %>中的代码均被解释为html 注释: html注释:只能注释html片段 < !-- --> jsp注释:可以注释所有内容 < %-- --%>


JSP内置对象

不需要创建和获取,可以直接使用的对象 一共有9个内置对象 out : 1.字符输出流对象。可以将数据输出到页面上。和response.getWritter()一样 2.对应用服务器上的输出缓冲区进行管理

out.print();  //输出后不换行 
out.println(); //输出时换行,但在网页上不换行,网页上换行要用<br>
out.close();  //关闭输出流 强制终止当前页面的剩余部分向浏览器输出 
out.flush();  //输出缓冲区中的数据 
out.clear();  //清除缓冲区中数据,不把数据写到客户端去 
out.clearBuffer();  //清除缓冲区中数据,并写到客户端去 
int getRemaining();  //获取缓冲区中没有被占用的空间的大小 
int getBufferSize();   //获取缓冲区大小
   

> response.getWritter()和out.write()区别:
> 在给客户端做出真正的响应之前,先找response缓冲区数据,再去找out缓冲区数据
> response.getWritter()数据输出永远在out.write()之前

变量名 真实类型 作用
pageContext pageContext 当前页面共享数据,还可以获取其他八个内置对象
session HttpSession 一次会话的多个请求
request HttpServletRequest 一次请求访问的多个资源(转发
application ServletContext 所有用户间共享数据
response HttpServletResponse 响应对象
page Object 当前页面(servlet)的对象
out jspWriter 输出对象
config ServletConfig servlet的配置对象
exception Throwable 异常对象

JSP指令

  1. 作用:配置jsp页面,导入资源文件
  2. 格式: < %@ 指令名称 属性名1 = 属性值1 属性名2 = 属性值2.。。%>
  3. 分类:
  • :配置jsp页面 => contentType:等同于response.setContentType() 1.设置响应体的MIME类型以及字符集 2.设置当前jsp页面的便码(低级开发工具要使用pageEncoding属性设置当前页面的字符集) => import:导包 => errorPage:当前页面发生异常后,会自动跳转到指定的错误页面 => isErrorPage:表示当前页面是否是错误页面 true:是错误页面,可以使用内置对象exception false:不是错误页面,默认值,不可使用内置对象exception
<%@ page pageEncoding = "utf-8" isErrorPage = "true"%>
<%@ import = "java.util.Date"%>  //要调用exeception获取信息必须要先在page栏设置该页面是错误页面
<%@ errorPage = "/error.jsp"%>
<%  
    String message = exception.getMessage();  //获取错误信息
    out.println(message);  //输出错误信息
%>
<%
  SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");   //格式化时间
  Date now = new Date();
 out.println("now = "+sdf.format(now));
%>

JSP动作

forward

<jsp:forward page = "/next.jsp"></jsp:forward>

include 动态联编

<jsp:include page = "/next.jsp"></jsp:forward>

两个文件编译之后生成两个.java,不能共享变量 若在两个文件之间需要共享同一变量,此时只能使用静态联编 若在两个文件之间存在同名变量,且不能混淆,此时只能使用动态联编

JDBC

  1. 概念: Java database connectivity、 Java数据库连接 实质:官方(sun公司)定义了一套操作所有关系型数据库的规则(接口),各个数据库厂商实现这套接口,提供数据库驱动jar包,我们可以使用这套接口(JDBC)编程,真正执行的代码是驱动jar包中的实现类

  2. 步骤: 导入驱动jar包 复制jar包 右键-> Add As Library 注册驱动 获取数据库连接对象 Connection 定义sql 获取执行sql语句的对象 Statement 执行sql 接收返回结果 处理结果 释放资源

  3. 对象:

DriverManager:驱动管理对象
注册驱动
   static void registerDriver(Driver driver):注册与给定的驱动程序 DriverManager
   Class.forName("com.mysql.jdbc.Driver");
获取数据库连接
   Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db1" ,"root","010517");
   localhost:本机
Connection:数据库连接对象

1.获取执行sql的对象

  Statement createStatement()
  PreparedStatement preparedStatement(String sql)

2.管理事务

开启事务:void setAutoCommit(boolean autoCommit):调用该方法设置参数为false,即开启事务
提交事务:commit()
回滚事务:rollback()

Statement:执行sql对象 1.执行sql

int executeUpdate(String sql):执行DML(insert,update,delete),DDL(create,drop)语句
   返回值:影响的行数,可以通过影响的行数判断DML语句是否执行成功 >0则成功
ResultSet executeQuery(String sql):执行DQL(select)语句

ResultSet:结果集对象,封装结果

boolean next():游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据)
               如果是,则返回fal

标签: jst连接器07p

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台