java web学习笔记(持续更新)

本文是Java Web学习笔记,涵盖了Java Web基础,包括Servlet的介绍、创建方式与生命周期,JSP的基础知识、内置对象与JSTL标准标签库,深入探讨了SQL攻击防范和Ajax技术。同时讲解了MVC设计模式和JDBC的使用,旨在帮助读者掌握Java Web开发的核心概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、Java Web简介

web: 前端的一些内容,在浏览器中展示的内容,html + css + js
Java Web: 使用Java语言来编写前端页面 ;

jsp属于Java ,所以学习jsp实际上就是学习Java的一个类/接口 Servlet

jsp 全名称:java server page Java服务器页面 ( 动态资源页面)

静态资源页面

当这个页面写完之后,内容就固定死了,不管在何时何地打开,页面展示的内容都是一样的;页面中的数据是死的;

**动态资源页面 **

页面中的数据会变化,写完之后,在不同时间、不同条件下,打开页面展示的内容可能会不一样;页面中的数据不是死的;

将html原本内容和从数据库中查询出来的内容重新合并组成一个新的html页面,来进行展示。

二、认识Servlet

JavaWeb程序 --> 将一个请求路径( 网络地址 ) 变成一条sql语句,发送给数据库进行查询;

1、什么是Servlet?

什么是Servlet? JavaWeb的三大组件 ( Servlet Filter过滤器 Listener监听器 )
    小服务,小组件,
主要作用:
    接收用户发来的请求( 路径及数据 ),给用户响应对应内容( 页面 );

2、请求路径

一般来讲,请求路径指的是 网络访问路径 (不带盘符,基本格式为:协议://ip地址:端口号/路径 )
网络路径:
    http://192.168.15.52:8080/web01/hello.html
    http://220.181.38.149:80 --> 百度首页 www.baidu.com (域名商)
本机路径:带盘符的路径
    D:\工作\apache\apache-tomcat-8.5.57
    
将一个本地路径,变成网络路径
需要使用到服务器:tomcat服务器服务 服务器机器

3、tomcat

tomcat的安装,百度搜索tomcat,去官网下载core中的zip格式,解压版
解压之后的tomcat分布:
    bin:放置的都是可执行文件,包含启动执行文件startup.bat( 如果点击之后,出现闪退的情况,说明jdk的环境变量java_home没有配置好 )、
关闭执行文件shutdown.bat;
    conf:放的都是tomcat的配置文件,tomcat的端口号、编码格式、服务配置、支持的文件配置;server.xml web.xml
    lib:tomcat也是Java编写的,在执行的时候,同样需要Java jar包的支持,都存放在这;编写servlet时需要的jar包
    logs:日志记录文件夹,在使用tomcat过程,出现问题,或者没有问题是,形成的日志文档,都在这个文件夹中;
    temp:临时文件,可以删除,但每次执行时都会自动创建
    webapps:tomcat实际执行过程中,所访问的文件地址,所有的页面文件都保存在这个文件夹中;ROOT表示没有项目名
    work:在执行tomcat时,程序中如果有jsp文件,会在这个文件夹中转换成.java文件

4、Servlet的使用

jdk java开发工具包 --> ( jre java运行环境 --> ( JVM + java运行jar包,jdk自带jar包 ) + java开发工具 )
Servlet是Java中的接口,不属于jdk自带jar包,需要导入第三方的jar包( tomcat ) ;
    1、先导入tomcat的jar包,到项目中;
    2、创建一个AServlet,实现Servlet接口

将一个类变成Servlet的三种方式
    1、实现Servlet接口,重写接口中的全部方法;
    2、继承GenricServlet抽象类,重写抽象方法;
    3、继承HttpServlet抽象类,根据需要进行重写;

三、Servlet简单应用

Servlet是 javaweb的三大组件之一,接受请求,给出响应;

1、创建Servlet的方式:

3种创建Servlet的方式:

  1. 通过现实Servlet接口,重写全部方法;
  2. 通过继承GenericServlet抽象类,重写service()方法;
  3. 通过继承HttpServlet抽象类,重写自己需要的方法;(开发种常用)

一般情况下,Java程序,想要执行需要通过main方法,声明对象,使用对象进行调用方法; Servlet的使用

编写完成Servlet之后,需要将Servlet类与路径相互绑定;

2、Serlvet的生命周期

Serlvet的生命周期: Servlet对象从出生、使用、死亡; Servlet会自己创建对象,然后自己调用自己 的生命周期方法;

3个生命周期方法;

  1. init(ServletConfig servletConfig) 初始化方法,看成servlet对象的出生; 当servlet对象一旦被创建时,就会马上执行init方法
  2. service(ServletRquest request , ServletResponse response) 服务方法,是servlet的主要方法,每当路径被请求时,就会执行此方法;
  3. destroy() 结束方法,当Servlet对象一被销毁,在销毁之前的时间执行此方法;

3、路径与servlet绑定的方式

1、使用web.xml配置文件进行绑定; 比较复杂
<servlet>
    <servlet-name>servlet</servvlet-name>
    <servlet-class>cn. hp. Aservlet</Servlet-class>
</servlet>
servlet-mapp1ng>
    <servlet-name>servlet</servlet-name>
    <!--当用户请求http://locathost:8080/web/a-->
    <url-pattern>/a</url-pattern>
</servlet-mapping>

2、使用注解的方式:简单 
在类的名称上一行,@WebServlet("/b");

4、servlet种的request 和 response

request:数据类型: HttpServletRequest请求
    包含:用户发送来的内容以及浏览器的信息等等;
        路径之后跟?key=value&key=value浏览器请求参数,当用户使用get方式时,就是用户发送的请求操作内容
    用来接收用户从浏览器发送过来的数据
   request.getParamter("key的名称") 获取到参数的value
   
请求转发:表面上还是你这个路径,但实际显示的内容由转发后的对象进行处理
    只能转发给本程序中的路径
req.getRequestDispatcher("success.html").forward(req,resp);

请求包含:用法和转发一样 
    语法中将forward换成include 
req.getRequestDispatcher("success.html").include(req,resp);

response:数据类型:HttpServletResponse 响应

重定向:将本次的请求,重新换了一个路径进行访问; 
    此路径,不局限于本项目,可以访问任意网路路径;
请求转发和重定向的区别: 
1、请求转发由request对象发出,只能发送给本项目中存在的路径 重定向由response对象发出,不仅可以发送给本项目中的路径还能够发送给外部路径; 
2、请求转发中一共有一个请求,导致页面中的路径只会是请求的路径 重定向包含两个请求,一个是用户原请求,第二个是servlet做的重定向请求; 
3、请求转发可以支持post、get的请求 重定向第一个请求post、get都支持,第二个请求只支持get方式

4、服务器中,页面的跳转

当一个路径以 / 开头, /就代表 http://localhost:8080/ 
当一个路径不以 / 开头, 就是把原路径的最后一个文件名换成当前的路径内容 

如 原文件路径 http://localhost:8080/web01/a.html ; 
login 路径 --> http://localhost:8080/web01/login 
/login 路径 --> http://localhost:8080/login 
只有在一种情况下,两者跳的路径相同,javaweb项目没有设置项目名时

四、JSP简介

1、JSP是什么?

JSP:是一种页面,java server pages java服务器页面;想要这个页面运行,必须通过服务器中启跳转

只能通过网络访问的方式查看效果,不能直接从本地通过浏览器打开; http://localhost:8080/web02/i ndex.jsp

2、JSP和与html的区别?

1、html是静态资源页面,jsp是动态资源页面,页面内的数据会改变; 
2、html中只能使用标签,进行编写内容;jsp = html + java代码 + 指令 ;

3、jsp三大指令

三大指令

  1. page
  2. taglib
  3. include
在jsp页面最上方<%@ 指令名 属性... %> 
1、page 用来配置当前jsp页面中的相关信息 
属性:
    contentType:用来配置当前jsp中文件的类型,以及编码格式 
    session:设置当前页面是否支持会话,false表示页面不支持session对象 
    isErrorPage:设置当前页面是否为错误页面 
    errorPage:指定哪一页面是错误页面 
    pageEncoding:设置当前页面的编码格式 
    import:向页面中导入Java的jar包 
    isELIgnored:用来设置当前页面中是否需要忽略el表达式 
2、taglib:用来向jsp页面中导入 jstl表达式的 
3、include:用来将多个页面合并成一个页面进行展示;

4、在jsp中Java代码编写格式

Java代码编写片段:
    <% Java代码 %> 
Java代码输出片段:
    <%= 将数据内容输出到页面中 %>

5、jsp的作用域

四大作用域

  1. page
  2. request
  3. session
  4. application
域:用来保存数据;只不过,不用的域大小不一样,保存的数据时间也不一样; 
page域: 页面域,当前页面中的全部数据,整个页面都共享;pageContext 只能在本页面中进行使用 
request域:请求域,在同一次请求中,所有数据共享;域对象 request 
    在servlet中就是 HttpServletRequest类型的对象 
    在jsp中存在这默认内置对象,这个对象可以不用声明,直接在jsp中使用 对象名:request 
session域:会话域,给服务器一次请求,服务器给一次响应,来回的交互过程就叫会话, 域对象: session 
    session即打开浏览器后的操作,都归为一次session,一旦关闭浏览器,此次session即结束; 
    随着第一次请求而创建,随着浏览器的关闭而销毁; 
application域:应用域,最大的一个域,只要将数据保存在应用域中,在整个程序的任意位置都可以 获取到应用域中的数据, 
    随着程序的启动而创建,随着程序的关闭而销毁; 
    
如何使用域中数据; 
    向域中存数据:req.setAttribute("key","value"); 
    从域中取数据:req.getAttribute("key");

6、jsp的本质

先将jsp转换成.java文件,然后通过Java代码将JSP页面以及域对象数据,获取之后,重新拼接成一个新 的页面; 
域数据 和 页面参数

7、域数据 和 页面参数

页面参数数据:
    http://localhost:8080/web02/login?username=zs&pwd=123 
?之后都是页面参数数据 
    在后端servlet中,通过request.getParamter(key)方法进行获取 
域数据:必须是有放才有拿; 
    放数据:域对象.setAttribute("key",value); 可以在servlet中放、也可以在jsp中放 
    拿数据:域对象.getAttribute("key"); 可以在servlet中拿、也可以在jsp中拿

五、JSP内置对象

1、jsp的组成部分 html + java代码 + 指令

hmtl: 超文本标记语言

hmtl: 超文本标记语言
表格标记:格式化显示数据;
<table> 声明一个表格
    <tr> 声明一行
        <th></th> 标题,加粗居中
        <th></th>
        <th></th>
    </tr>
    <tr> 声明一行
        <td></td> 声明一个单元格
        <td></td> 声明一个单元格
        <td></td> 声明一个单元格
    </tr>
    <tr> 声明一行
        <td></td> 声明一个单元格
        <td></td> 声明一个单元格
        <td></td> 声明一个单元格
    </tr>
</table>

表格的特殊属性:

表格的特殊属性:
给table设置的属性:cellspacing="" 设置当前表格中每个相邻单元格之间的间距
给td设置的属性:colspan=""设置当前单元格占几列 rowspan="" 设置档当前单元格占
几行
表单标记:收集用户的信息,让用户进行填写、选择、点击操作;
<form action="后端地址">
    <input type="text" value="默认值" placeholder="提示内容" /> 文本输入框
    input类型 四种类型( 输入框、选择样式、按钮样式、隐藏样式 )
    <input type="password" /> 密码输入框  // 
    <input type="radio" /> 单选框
    <input type="checkbox" /> 多选框
    <input type="button" /> 默认按钮
    <input type="submit" /> 提交按钮
    <input rype="reset" /
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

z1427094386

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值