本次学习的是java-web项目,整个课程下来的总结就是连接数据库实现前后端的交互,实现数据库的增删改查并在jsp界面上体现出来。

本次阶段性学习让我觉得很难的是实现页面的跳转以及request和response之间的关系等等,对于这些概念还是有些模糊。浏览器没办法直接访问java中的方法所以需要tomcat容器将java类和浏览器的访问地址做一个映射,而tomcat容器的作用是将我们的web项目打包启动tomcat容器的时候才能访问web程序。

整个学习过程最难还是前端后端的交互

HTTP和Servlet的执行

  • HTTP协议建立连接
  • 发送请求(get和post两种请求方式)
  • tomcat容器内部解析请求数据包,然后将请求数据存放在request对象当中,并同时创建了一个response对象。
  • tomcat容器创建servlet对象。
  • 调用重写之后的service(req,resp)中的方法。
  • 将响应数据包打包发送
  • 浏览器解析响应数据包,并展示在当前页面。
  • 断开连接。

1.创建工程

创建工程的时候记得选择maven-archetype-webapp

创建完工程后记得更改配置信息Project Structrue-Modules

记得删除后重新添加

配置tomcat

配置tomcat路径和选择默认浏览器

删除过后记得重新添加

Servlet地址的获取

常见的三种

  1. getContextPath( )
  2. getServletPath( )
  3. getRequestURI( )

转发与重定向

转发是服务器行为,重定向是客户端行为。转发耗时比重定向少。

转发——>客户浏览器发送HTTP请求——>web服务器接受请求——>调用内部一个方法在容器内部完成请求处理和转发动作——>再将转发跳转到的那个网页资源返回给客户;  转发只能在同一个容器内完成 转发的时候浏览器地址是不会变的,在客户浏览器里只会显示第一次进入的那个网址或者路径,客户看不到这个过程,只是得到了想要的目标资源。转发行为浏览器只做了一次请求。(转发只能跳转一次)

重定向——>客户浏览器发送HTTP请求——>web服务器接受请求后发送302状态码以及新的位置给客户浏览器——>客户浏览器发现是302响应,则自动再发送一个新的HTTP请求,请求指向新的地址(302:Found  临时移动,但资源只是临时被移动。即你访问网址A,但是网址A因为服务器端的拦截器或者其他后端代码处理的原因,会被重定向到网址B。)——>服务器根据此请求寻找资源发个客户;再客户浏览器中显示的是重定向之后的路径,客户可以看到地址的变化。重定向行为浏览器做了至少两次请求。(重定向可以跳转多次)

Cookie和Session

Cookie

服务器端会创建cookie,里面包含了用户的信息,然后将cookie发送到浏览器端,浏览器再次访问服务器端的时候会携带服务器端创建的cookie

Session

(1)浏览器端第一次发送请求到服务器端,服务器端创建一个Session,同时会创建一个特殊的Cookie(name为JSESSIONID的固定值,value为session对象的ID),然后将该Cookie发送至浏览器端
(2)浏览器端发送第N(N>1)次请求到服务器端,浏览器端访问服务器端时就会携带该name为JSESSIONID的Cookie对象
(3)服务器端根据name为JSESSIONID的Cookie的value(sessionId),去查询Session对象,从而区分不同用户。

el表达式

<%-- el表达式: ${reques对象中保存的key} --%> <h1>user:${user}</h1>
<%-- ${emp.eno} 1、emp对象的属性值的获取2、对象.属性名 (要求,属性必须提供了正确的get方法。) 3、el表达式中,如果获取数据值是null, 那么就不显示内容--%>

总结

以上就是本人在这次学习中认为比较重要的一些知识点,在javaweb的阶段性学习中觉得要完成一个前后端交互的过程还是有一定难度的,例如请求转发和重定向这些相关的问题都要分清楚他们之间的区别,所以在后续的学习中自己要对相关知识点进行补充复习,让自己的相关概念不在这么模糊

java-web阶段性总结相关推荐

  1. 在k8s中使用gradle构建java web项目镜像Dockerfile

    在k8s中使用gradle构建java web项目镜像Dockerfile FROM gradle:6-jdk8 AS build COPY --chown=gradle:gradle . /home ...

  2. Jenkins 2.16.3默认没有Launch agent via Java Web Start,如何配置使用

    问题:Jenkins 2.16.3默认没有Launch agent via Java Web Start,如下图所示,而这种启动方式在Windows上是最方便的. 如何设置才能让出来呢? 打开&quo ...

  3. Java Web项目结构

    Java Web项目结构(一般) 1.Java src 2.JRE System Library 3.Java EE 6 Libraries 4.Web App Libraries 5.WebRoot ...

  4. Java Web 中的一些问题

    http://localhost:8080/struts2demo/online/userLogin.jsp 请求模式 :// 主机名名称(或者服务器名称) : 端口 / Servlet容器的名称(通 ...

  5. java web ubuntu_Ubuntu部署Java web项目

    登录服务器和给服务器传输文件,使用的工具是Xshell Xftp Mysql 安装mysql 输入:sudo apt-get update                     更新软件列表 输入: ...

  6. JAVA Web项目中所出现错误及解决方式合集(不断更新中)

    JAVA Web项目中所出现错误及解决方式合集 前言 一.几个或许会用到的软件下载官网 二.Eclipse的[preferences]下没有[sever]选项 三.Tomcat的安装路径找不到 四.T ...

  7. 使用Netbeans创建java Web项目

     使用Netbeans创建java Web项目 需要先搭建JDK参考: Java开发环境的搭建以及使用eclipse创建项目 Linux环境安装卸载JDK 1.安装Tomcat 去官网下载最新的T ...

  8. java axis2 开发_基于Apache axis2开发Java Web服务

    1.安装配置axis2环境 下载好后把axis2-1.4.1-war目录下面的axis2.war发布到tomcat的webapps中. 发布好,访问:http://localhost:8079/axi ...

  9. java web三大组件之filter过滤器

    过滤器是java web中相当重要的组成成分,是JavaWeb三大组件之一,它与Servlet很相似.不过过滤器有以下三条特性: 过滤器是用来拦截请求的,而不是处理请求的. 当用户请求某个Servle ...

  10. java web学习项目20套源码完整版

    java web学习项目20套源码完整版 自己收集的各行各业的都有,这一套源码吃遍所有作业项目! 1.BBS论坛系统(jsp+sql) 2.ERP管理系统(jsp+servlet) 3.OA办公自动化 ...

最新文章

  1. pycharms怎么看文件被什么引用_误删文件咋办?看我怎么起死回生……
  2. boost::convert模块实现lexical_cast的测试程序
  3. OxyPlot.Wpf 图表控件使用备忘
  4. Visual Studio 15 Preview 5 发布 大幅提升性能
  5. MySQL8.0.17 - 初探 Clone Plugin
  6. 史上最全的android学习资料
  7. LeaRun低代码平台一站式搭建项目管理系统
  8. lua table的__index ,setmetable()的一些操作
  9. 当当网超级优惠券,别错过!(限时限量)
  10. linux 注释批处理,Linux_批处理 正则表达式(findstr) 整理,语法 findstr [/b] [/e] [/l] [/r] [/s] - phpStudy...
  11. 有关是否携带首部的随笔
  12. PLC控制系统的软件设计
  13. 数据分析小实验(下)
  14. 适用于ios5的应用_适用于设计人员和开发人员的10个很棒的iOS应用
  15. java语句以什么结尾_Java程序语句结尾必须以英文字符(???? ?)结尾。
  16. 复习1:bool类型和char数组
  17. 2ex ey-or 攻防世界
  18. UltraEdit 快捷键(UE 快捷键)
  19. 模式也能开盲盒,”盲返“模式带动电商平台共享经济
  20. 物联网卡系统php,物联网卡开发文案

热门文章

  1. tf.contrib.silm学习
  2. 2022年N1叉车司机找解析及N1叉车司机复审模拟考试
  3. OutLook 2013 添加 USC gmail 邮箱 解决国内USC邮箱打不开
  4. AutoRun机制详解
  5. android依赖本地工程排除,Android Gradle依赖项排除(Android Gradle dependency exclude)
  6. windows7旗舰版序列号[经测试,第一枚即可完成升级!]
  7. esp8266_deauther第四篇
  8. 遗传算法(四)——交叉、变异与替换
  9. 三阶魔方 kociemba算法解析(IDA*的绝佳实际运用)
  10. 什么是Promise?Promise有什么好处