当前位置: 首页 > 编程日记 > 正文

web开发基础

web开发:所谓web开发就是基于浏览器服务器的开发
下面将web开发基础知识作个总结:
1.http协议:是建立在TCP协议上的,基于请求响应的模型
2.http请求:
面试题:说说get与post的区别
a.传递数据量:
get只能传递1kb以下的数据,post可以传递大数据
b.安全性:
get请求,如果携带参数,参数会直接显示在浏览器上,而post不会
所以post请求会更安全
c.get请求,有请求参数,参数是在请求行的资源路径上
post请求,请求参数在请求正文中,这就解释了第二条,为什么post请求更安全
开发中,如果请求响应的是页面,则一般用get请求,不需要携带参数
如果需要传递数据参与计算,或者js中的请求等等,常需要数据的交互,则使用post
开发中常常使用chrome查看请求响应的内容,作调试
3.servlet:
web开发的核心java类,主要功能是接收浏览器的请求(数据),内部作相关运算,给出响应
编写Servlet类:

public class LifeServlet implements Servlet{@Overridepublic void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {//接收请求,响应,类似于控制层的代码//这里请求,响应是可以自己设置的,自己设置请求头,请求体,响应头,响应状态,响应内容}
}

4.request,response
当服务器接收到请求后,请求信息就会封装到request对象中,服务器给出响应后,响应信息就会封装到response中
request的生命周期:
接收请求时创建,产生响应后就会销毁,只存在一次请求响应之间
注意:
从Servlet跳转到jsp不算响应结束了,因为request域对象在jsp中还是可以用的,这是jsp的内置对象,后面会讲到
应该这样说,从Servlet跳转到jsp,数据被jsp解析(el表达式各种)显示出来了,这样才算响应了,才是一次完整的请求响应
那么程序是怎样从Servlet跳转到jsp的呢?
两种方式:请求转发和重定向
它们的区别是什么?
先看看继承HttpServlet后重写的doPost方法(写Servlet的另外一种方式,该方法相当于service方法)里面的一块代码:

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
.......
//请求转发
//将学生列表设置到requet中
//request.setAttribute("student_list", studentList);
//转发是在服务器端转发的,客户端是不知道的
//request.getRequestDispatcher("/student_list.jsp").forward(request, response);//重定向
//将studentList放到session中
HttpSession session = request.getSession();
session.setAttribute("student_list", studentList);
response.sendRedirect(request.getContextPath() + "/student_list.jsp");
}

说明:
请求转发是一次请求响应,转发发生在服务器内部,所以在这期间,requet域数据是共享的,所以可以数据可以存在requet域中,然后转发
重定向实际上是一次请求响应,然后再一次请求响应,这样显然数据不能存在requet域中,可以存在session中,然后重定向
为什么可以存在session中,涉及到session保存数据的周期,后面会讲到
请求转发在服务器端完成的,重定向是在客户端完成的
请求转发的速度快,重定向速度慢
因为是一次请求,所以请求转发地址栏没有变化,而重定向地址栏会发生变化
请求转发必须在一台服务器下完成,重定向可以在不同服务器下完成
5.cookie与session
这是浏览器的会话技术
什么是会话:就是打开浏览器到关闭浏览器就是一次会话
cookie是什么?
可以这样理解:
当浏览器请求服务器的时候,服务器会创建cookie(里面存储的访问数据)
然后在响应的时候,将cookie发送给浏览器,最后在浏览器保存
默认情况下:cookie的生命周期是一次会话,也就是关闭浏览器就没了
可以使用方法,让cookie持久化(时间),让其关闭浏览器还存在,这有什么用?后面会讲到
session:
session是服务端的会话技术,但是session的实现依赖cookie
默认情况下:session的生命周期也是一次会话.

这就解释了为什么在关闭浏览器后,再次打开时又要重新登录了(登录信息存在session 中)

依赖cookie,这也解释了为什么在浏览器清楚缓存后,也是要重新登录页面的
在tomcat/conf/web.xml文件中有一段配置了如果session如果在30分钟没有使用就会销毁,这是可以更改的
6.jsp的九大内置对象
就是直接可以在jsp上使用的对象,包括request域对象,session域对象等
其实jsp本质上是个特殊的servlet,就是为了接收数据显示数据
接收数据,数据可以存在域对象中,也可以存在封装好的javaBean中
显示数据,各种el表达式,jq前端框架
工作中session域中存放:用户信息,用户角色,对于模块
存用户角色是为了权限控制,在前端判断按钮的显示等等

转载于:https://www.cnblogs.com/jaro/p/9020841.html

相关文章:

让ubuntu下的eclipse支持GBK编码

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://leaze.blog.51cto.com/83088/195584今天,把windows下的工程导入到了Linux下eclipse中,由于以前的工程代码&#x…

Session,ViewState用法

Session,ViewState用法基本理论: session值是保存在服务器内存上,那么,可以肯定,大量的使用session将导致服务器负担加重. 而viewstate由于只是将数据存入到页面隐藏控件里,不再占用服务器资源,因此, 我们可以将一些需要服务器"记住"的变量和对象保存到vi…

【HTML】记录自己丢人过程:文本换行缩进都不会

问题描述&#xff1a; html文本想实现换行和缩进&#xff0c;最后气到摔鼠标 换行 实现代码&#xff1a; <br> 直接在文本后加个换行标签即可 缩进 实现代码&#xff1a; style"text-indent: 2em;" 注意&#xff1a;这个属性放到p标签中或者div标签中都…

CentOS5.6系统下mysql5安装

我的系统是CentOS5.6 建议大家完全安装&#xff0c;以免安装时缺少相关的编译器等等。 一、安装mysql&#xff08;mysql-5.1.50.tar.gz&#xff09; # tar zxf mysql-5.1.50.tar.gz # cd mysql-5.1.50 #./configure --prefix/usr/local/mysql --sysconfdir/etc --localstated…

CentOS 6.9/7通过yum安装指定版本的JDK/Maven

说明&#xff1a;通过yum好处其实很多&#xff0c;环境变量不用配置&#xff0c;配置文件放在大家都熟悉的地方&#xff0c;通过rpm -ql xxx可以知道全部文件的地方等等。 一、安装JDK&#xff08;Oracle JDK 1.8&#xff09; # wget --no-check-certificate --no-cookies --he…

2019牛客全国多校训练三 题解

A Gragh Games Unsolved. B Crazy Binary String 题解&#xff1a;水题&#xff0c;子序列只要统计0和1数量&#xff0c;取最小值然后乘2就是答案&#xff1b; 对于子串&#xff1a;先记录0和1 前缀和的差值&#xff0c;然后找差值相等的距离最远的两个位置即可&#xff1b; 参…

【硬件基础】有源蜂鸣器与无源蜂鸣器

辨别方法 外观&#xff1a; 无源蜂鸣器: 有源蜂鸣器&#xff1a; 注&#xff1a;可以看到底部有绿色电路板的是无源蜂鸣器&#xff0c;底部是黑胶的为有源蜂鸣器 万用表电阻档检测 无源蜂鸣器&#xff1a;发出咔、咔声的且电阻只有8Ω&#xff08;或16Ω&#xff09;。 有源…

hdu 1272 小希的迷宫

Problem Description上次Gardon的迷宫城堡小希玩了很久&#xff08;见Problem B&#xff09;&#xff0c;现在她也想设计一个迷宫让Gardon来走。但是她设计迷宫的思路不一样&#xff0c;首先她认为所有的通道都应该是双向连通的&#xff0c;就是说如果有一个通道连通了房间A和B…

技术还是商业重要

在中国IT业创业听得最多的就是&#xff0c;技术不重要&#xff0c;商业和关系才是最重要的。 到了硅谷之后&#xff0c;发现技术气氛十分浓&#xff0c;甚至有朋友说大陆创业比较容易是因为硅谷与之相比&#xff0c;硅谷太注重技术了。 可是慢慢发现其实在硅谷&#xff0c;商业…

bzoj1036: [ZJOI2008]树的统计Count 树链剖分

一棵树上有n个节点&#xff0c;编号分别为1到n&#xff0c;每个节点都有一个权值w。我们将以下面的形式来要求你对这棵树完成一些操作&#xff1a; I. CHANGE u t : 把结点u的权值改为t II. QMAX u v: 询问从点u到点v的路径上的节点的最大权值 III. QSUM u v: 询问从点u到点v的…

cocos lua 加密方案

cocos2d使用的是luajit&#xff0c;lua原生编译出来的bytecode和luajit是不兼容的&#xff0c;所以直接用luac法编译出来的bytecode脚本无法在cocos2d中使用。 目前所指的解决方案有2个&#xff1a; A.luajit加密&#xff1a; 1、官网下载luajit&#xff08;http://luajit.org/…

VS2010创建ATL类时需要手动填写ProgID

在新建ATL类的时候VS2010默认是不填写ProgID的&#xff1a; 所以默认创建的类生成的rgs文件中只有NoRemove CLSID这一栏&#xff0c;导致在JS中使用new ActivexObject(“LibName.ClassName”)失败。如果想用ActivexObject创建类的话就必须填写ProgID。转载于:https://www.cnblo…

【官网搭建】在网站首页底部添加备案号链接至工信部首页及版权所有。

在网站首页底部添加备案号链接至工信部首页及版权所有。&#xff08;工信部链接&#xff1a;http://beian.miit.gov.cn或http://www.beian.miit.gov.cn&#xff09; 在搭建网址的时候你是否受到过这种邮件&#xff1f; 下面提供一个代码模板 <div class"foot_bot&quo…

如何在linux下解压缩rar格式的文件压缩包

前言&#xff1a;没有特殊原因&#xff0c;文档如果要传到linux上&#xff0c;一定要打成*.zip格式&#xff0c; 这样方便解压&#xff0c;一般来说没有理由要用rar.关于 linux上unzip命令有空细讲&#xff0c; 本节讲下&#xff0c;如何让linux支持解压缩rar文件 一 、系统环境…

appium+python自动化45-夜神模拟器连不上(adb server version (36) doesn't match this client (39); killing...)...

前言 最新下了个最新版的夜神模拟器&#xff0c;然后adb devices发现连不上模拟器了&#xff0c;报adb server version (36) doesnt match this client (39); killing... 从报错信息看是adb版本不匹配导致的&#xff0c;接下来讲如何解决这个问题 环境&#xff1a; 夜神模拟器 …

Android.mk文件语法规范

序言&#xff1a; ------------- 此文档旨在描述Android.mk文件的语法&#xff0c;Android.mk文件为Android NDK(原生开发&#xff09;描述了你C/C源文件。为了明白下面的内容&#xff0c;你必须已经阅读了docs/OVERVIEW.TXT的内容&#xff0c;它解释了Android.mk文件扮演的角色…

【硬件基础】制作直流电源

要求&#xff08;其实就是个课设&#xff09;&#xff1a; 利用二极管的基本特性、三极管的基本特性、稳压电源等知识&#xff0c;设计相 应的模拟电路&#xff0c;设计制作放大倍数可变的直流放大器。 任务要求&#xff1a; &#xff08;1&#xff09;用集成芯片制作一个 0~1…

RanceQuest2_从委托到Lambda_会用(递归数学函数)

二连发 使用Lambda表达式编写递归函数 ——摘自老赵点滴 - 追求编程之美。 todo用手敲30遍&#xff0c;搞定——泛型委托&#xff0c;Lambda表达式&#xff0c;简单的数学递归。 遗憾的是&#xff0c;原本希望更进一步做出一个通用的递归方法表达式出来&#xff0c;受所学所限&…

[转载].sscanf的用法

原作者不详。 名称: sscanf() - 从一个字符串中读进与指定格式相符的数据. 函数原型: Int sscanf( string str, string fmt, mixed var1, mixed var2 ... ); int scanf( const char *format [,argument]... ); 说明&#xff1a; sscanf与scanf类似&#xff0c;都是用于输入的&a…

As与强制类型转换的区别以及Is运算符的使用

前言&#xff1a; 开发人员经常需要将一个对象从一个类型转换成其他类型。 在c#中&#xff0c;类型转换按照转换方式分类分为了隐式转换和显式转换&#xff0c;按对象分类又分为了值类型转换和引用类型转换  CLR(参考&#xff1a;http://baike.baidu.com/view/605055.htm)允许…

SQL命令执行数据库备份

backup database XXXXX to diskD:\Bak\BACKUP.bak with init XXXXX是数据库名字转载于:https://www.cnblogs.com/lx0831/archive/2009/04/07/1431115.html

【硬件基础】振荡(时钟)周期、状态周期、机械周期、指令周期

前言&#xff1a; 尽管关于单片机的各种周期在网上随便一查就能查到&#xff0c;但于博主个人而言容易搞混&#xff0c;于复习定时器时决定写下这篇博客&#xff0c;相当于一次知识复习总结 振荡&#xff08;时钟&#xff09;周期&#xff1a; 以12M的单片机为例&#xff0c;其…

14条改善jquery代码的建议

2019独角兽企业重金招聘Python工程师标准>>> 从国外网站找到的。 http://www.tripwiremagazine.com/ajax/developer-toolbox/more-jquery-and-general-javascript-tips-to-improve-your-code.html 很有用。 转载于:https://my.oschina.net/dlpinghailinfeng/blog/26…

HDFS配额查询

### 查看目录配额 hdfs dfs -count -q -h /user/hive/warehouse/db_name.db ### 查看整个HDFS的空间大小 hdfs dfs -df -h /user/ Filesystem Size Used Available Use% hdfs://hdfs01 10 P 8 P 2 P 80%### 查看指定目录/数据库的大小 hdfs …

# 命令行新建 job 错误: ORA-01008 并非所有变量都已绑定 。

# 命令行新建 job 错误: ORA-01008 并非所有变量都已绑定 。 1、改正前代码: DECLARE job NUMBER; begin sys.dbms_job.submit(job > :job, what > P_AUTO_FETCH_RECORDS;, next_date > to_date(10-05-2011 15:58:35, dd-mm-yyyy hh24:mi:ss), interval > s…

【单片机】以输出方波为例的 定时器使用

实验要求&#xff1a; 利用Proteus软件画出电路图&#xff0c;单片机定时器/计数器以查询方式工作&#xff0c;在P1.0口产生周期为100us的连续方波&#xff0c;在P1.0口线上接上示波器观察波形。 前言&#xff1a;写这篇博客的意义在于&#xff0c;借助本实验可以复习定时器中断…

经典GNA整理

最近学习了各种GAN的结构。在此记录下。 转载于:https://www.cnblogs.com/yeran/p/11251842.html

Global.asax

GlobalFilterCollectionRepresents a classthat contains all the globalfilters.HandleErrorAttributemvc中提供了HandleErrorAttribute特性&#xff0c;该特性用于处理由操作方法引发的异常AreaRegistration.RegisterAllAreas();注册 ASP.NET MVC 应用程序中的所有区域RouteC…

leetcode_1. Two Sum

leetcode_1. Two Sum 前言&#xff1a; 这段时间开始敲leetcode。我认为这并不仅仅只是为了应付笔试&#xff0c;面试。而是确实有着一定的意义。 尤其&#xff0c;你提交代码后&#xff0c;网站会多方面验证你的答案。 另外&#xff0c;提交成功后&#xff0c;你可以查看自己的…

linux ngxtop安装安装及使用

写在前面&#xff1a; ngxtop是Nginx日志实时分析利器 1.下载 下载地址&#xff1a;https://github.com/lebinh/ngxtop 下载zip文件到本地 登录linux服务器&#xff0c;定位到安装目录&#xff0c;执行 rz&#xff0c;选中上一步下载的zip文件&#xff0c;上传完成后执行unzip…