java-web 老师的呆呆问题

java-web 老师的呆呆问题

1. 总结GET和POST请求的区别。

1、GET请求,请求的数据会附加在URL之后,以?分割URL和传输数据,多个参数用&连接。URL的编码格式采用的是ASCII编码,而不是uniclde,即是说所有的非ASCII字符都要编码之后再传输。
POST请求:POST请求会把请求的数据放置在HTTP请求包的包体中。上面的item=bandsaw就是实际的传输数据。
因此,GET请求的数据会暴露在地址栏中,而POST请求则不会。

2、传输数据的大小:
在HTTP规范中,没有对URL的长度和传输的数据大小进行限制。但是在实际开发过程中,对于GET,特定的浏览器和服务器对URL的长度有限制。因此,在使用GET请求时,传输数据会受到URL长度的限制。
对于POST,由于不是URL传值,理论上是不会受限制的,但是实际上各个服务器会规定对POST提交数据大小进行限制,Apache、IIS都有各自的配置。

3、安全性:
POST的安全性比GET的高。这里的安全是指真正的安全,而不同于上面GET提到的安全方法中的安全,上面提到的安全仅仅是不修改服务器的数据。比如,在进行登录操作,通过GET请求,用户名和密码都会暴露再URL上,因为登录页面有可能被浏览器缓存以及其他人查看浏览器的历史记录的原因,此时的用户名和密码就很容易被他人拿到了。除此之外,GET请求提交的数据还可能会造成Cross-site request frogery攻击。

4、HTTP中的GET,POST,SOAP协议都是在HTTP上运行的。

2.总结forword 和 sendredirect 区别

SendRedirectForward
不同的request不同的对象,但是可以取到上一个页面的内容
send后面的语句会继续执行,除非returnForward后面的语句不会继续发送给客户端
速度慢速度快
需要到客户端的往返,可以跳转到任何页面服务器内部转换
地址栏有变化地址栏没有变化
可以传参数,直接写在URL后面可以传参数
“/” 代表的是http://127.0.0.0/<%response.sendRedirect();%>test“/” 代表的是 http://127.0.0.1/testthis.getServletContext().getRequestDispatcher(“/servlet_jsp/ServletUseJSP.jsp”).forward(req,resp); 并且只能以 / 开头

image-20201107184914757

  • 转发是服务器行为

  • 转发地址栏路径不变

  • 转发只能访问当前服务器下的资源

  • 转发是一次请求

  • 可以使用request对象来共享数据,请求域中数据不会丢失

  • 重定向是客户端(浏览器)行为

  • 重定向地址栏路径改变

  • 重定向可以访问任意服务器(站点)的资源

  • 重定向是两次请求

  • **不可以共享数据,**请求域的数据会丢失

3. javaweb 四大作用域的作用

【1】ServletContext 域— application

ServletContext代表整个web应用的对象。

**生命周期:**web应用被tomcat服务器加载时,ServletContext对象产生,生命周期开始。

web应用被移除容器或者tomcat服务器关闭的时候,ServletContext对象销毁,生命周期结束。

**作用范围:**整个web应用。

**主要功能:**在整个web应用范围内共享数据。

【2】session 域—session

Session代表整个会话的对象

**生命周期:**当调用request.getSession()时,Session对象被创建。生命周期开始

调用session.invalidate()方法销毁Session对象

在设定的时间内,Session对象没有被使用,则Session对象被销毁。默认为30分钟

当服务器意外关闭的时候,Session对象被销毁。当服务器正常关闭的时候,Session对象中仍有数据,会序列化到磁盘上形成一个文件,

这个过程称之为钝化。在服务器再次启动的时候,这个文件会被重新读取到服务器中使用,这个过程称之为活化。

**作用范围:**整个会话范围

**主要功能:**在会话范围内共享数据

【3】request 域—request

Request代表请求的对象

**生命周期:**请求链开始,request对象被创建,请求链结束,request对象销毁。

**作用范围:**整个请求链

**主要功能:**在请求链内共享数据

【4】pageContext域—pageContext

PageContext代表当前页面的对象

**生命周期:**在访问jsp页面时,pageContext对象产生,生命周期开始。在结束访问jsp页面时,pageContext对象销毁,生命周期结束。

**作用范围:**整个jsp页面

**主要功能:**在整个jsp页面内共享数据

4. servlet 的三大生命周期

servlet的生命周期:初始化—>服务—>销毁

  1. 初始化时Servlet容器装载Servlet:

Servlet被装载后,Servlet容器创建一个Servlet实例并且调用Servlet的init()方法进行初始化。在Servlet的整个生命周期内,init()方法只被调用一次。

2.服务阶段调用service()方法,它是Servlet的核心,负责响应客户的请求。每当一个客户请求一个HttpServlet对象,该对象的Service()方法就要调用,而且传递给这个方法一个“请求”(ServletRequest)对象和一个“响应”(ServletResponse)对象作为参数。

  1. 销毁阶段调用destory()方法,当Servlet对象退出生命周期时,负责释放占用的资源。一个Servlet在运行service()方法时可能会产生其他的线程,因此需要确认在调用destroy()方法时,这些线程已经终止或完成。

    image-20201117215210601

5.MVC设计模式

MVC 模式(Model–view–controller)是软件工程中的一种软件架构模式,它把软件系统分为三个基本部分:模型(Model)视图(View)控制器(Controller)

  • 模型(Model):程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实现具体的功能);
  • 控制器(Controller):负责转发请求,对请求进行处理;
  • 视图(View):界面设计人员进行图形界面设计。

6优点与缺点

6.1 MVC模式的优点

6.1.1 低耦合

通过将视图层和业务层分离,允许更改视图层代码而不必重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变,只需要改动MVC的模型层(及控制器)即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。

模型层是自包含的,并且与控制器和视图层相分离,所以很容易改变应用程序的数据层和业务规则。如果想把数据库从 MySQL 移植到 Oracle,或者改变基于 RDBMS 的数据源到 LDAP,只需改变模型层即可。一旦正确的实现了模型层,不管数据来自数据库或是 LDAP服务器,视图层都将会正确的显示它们。由于运用 MVC 的应用程序的三个部件是相互独立,改变其中一个部件并不会影响其它两个,所以依据这种设计思想能构造出良好的松耦合的构件。

6…1.2 重用性高

随着技术的不断进步,当前需要使用越来越多的方式来访问应用程序了。MVC模式允许使用各种不同样式的视图来访问同一个服务端的代码,这得益于多个视图(如WEB(HTTP)浏览器或者无线浏览器(WAP))能共享一个模型。

比如,用户可以通过电脑或通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式(流程)是一样的。由于模型返回的数据没有进行格式化,所以同样的构件能被不同的界面(视图)使用。例如,很多数据可能用 HTML 来表示,但是也有可能用 WAP 来表示,而这些表示的变化所需要的是仅仅是改变视图层的实现方式,而控制层和模型层无需做任何改变。

由于已经将数据和业务规则从表示层分开,所以可以最大化的进行代码重用了。另外,模型层也有状态管理和数据持久性处理的功能,所以,基于会话的购物车和电子商务过程,也能被Flash网站或者无线联网的应用程序所重用。

6.1.3 生命周期成本低

MVC模式使开发和维护用户接口的技术含量降低。

6.1.4 部署快

使用MVC模式进行软件开发,使得软件开发时间得到相当大的缩减,它使后台程序员集中精力于业务逻辑,界面程序员集中精力于表现形式上。

6.1.5 可维护性高

分离视图层和业务逻辑层使得WEB应用更易于维护和修改。

6.1.6 有利软件工程化管理

由于不同的组件(层)各司其职,每一层不同的应用会具有某些相同的特征,这样就有利于通过工程化、工具化的方式管理程序代码。控制器同时还提供了一个好处,就是可以使用控制器来联接不同的模型和视图,来实现用户的需求,这样控制器可以为构造应用程序提供强有力的手段。给定一些可重用的模型和视图,控制器可以根据用户的需求选择模型进行处理,然后选择视图将处理结果显示给用户。

6.2 MVC模式的缺点

6.2.1 没有明确的定义

完全理解MVC模式并不是很容易。使用MVC模式需要精心的计划,由于它的内部原理比较复杂,所以需要花费一些时间去思考软件的架构。同时由于模型和视图要严格的分离,这样也给调试应用程序带来了一定的困难。每个构件在使用之前都需要经过彻底的测试。

6.2.2 不适合小、中型应用程序

花费大量时间将MVC模式应用到规模并不是很大的应用程序通常会得不偿失。

6.2.3 增加系统结构和实现的复杂性

对于简单的界面来说,非要严格遵循MVC模式,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。

6.2.4 视图对模型数据的低效率访问

依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。

**说明:**如果通过控制器访问模型层(而非视图层直接访问),则避免对未变化数据的不必要的频繁访问,从而解决此问题。

7 九大内置对象

request           请求对象      类型 javax.servlet.ServletRequest        作用域 Request
response            响应对象              类型 javax.servlet.SrvletResponse        作用域 Page
pageContext          页面上下文对象        类型 javax.servlet.jsp.PageContext       作用域 Page
session           会话对象              类型 javax.servlet.http.HttpSession      作用域 Session
application       应用程序对象      类型 javax.servlet.ServletContext      作用域 Application
out               输出对象              类型 javax.servlet.jsp.JspWriter         作用域 Page
config            配置对象              类型 javax.servlet.ServletConfig      作用域 Page
page              页面对象              类型 javax.lang.Object          作用域 Page
exception         例外对象              类型 javax.lang.Throwable          作用域 page

8 JSP和servlet得区别

相同点

jsp经编译后就变成了servlet,jsp本质就是servlet,jvm只能识别java的类,不能识别jsp代码,web容器将jsp的代码编译成jvm能够识别的java类。

不同点

JSP侧重视图,Sevlet主要用于控制逻辑。

Servlet中没有内置对象 。

JSP中的内置对象都是必须通过HttpServletRequest对象,HttpServletResponse对象以及HttpServlet对象得到。

9. jsp得六种元素

1.注释元素

格式:<%–注释内容–%>

2.指令元素

格式:<%@指令名 属性列表 %>

3.输出表达式元素

格式:<%= Java表达式 %>

4.Java脚本元素

格式:<% Java语法表达 %>

5.声明元素

格式:<%! 声明变量、Java类或者方法 %>

6.动作元素

空标记格式:<jsp:动作名 属性列表 />
非空标记格式:<jsp:动作名 属性列表>
动作设置参数选项[<jsp:param.../>] </jsp:动作名>

10 jsp得六大基本动作

JSP 共有以下 6 种基本动作
jsp:include :在页面被请求的时候引入一个文件。
jsp:useBean :寻找或者实例化一个 JavaBean 。
jsp:setProperty :设置 JavaBean 的属性。
jsp:getProperty :输出某个 JavaBean 的属性。
jsp:forward :把请求转到一个新的页面。
jsp:plugin :根据浏览器类型为 Java 插件生成 OBJECT 或 EMBED 标记

11. 注释

java注释 单行 // 多行 /* */

jsp 注释 <% – 和 --%>

12 . css的选择符

1)id 选择器(#myid)
2)类选择器(.myclassname)
3)标签选择器(div,h1,p)
4)相邻选择器(h1 + p)
5)子选择器(ul > li)
6)后代选择器(li a)
7)通配符选择器(* )
8)属性选择器( a[rel = “external”])
9)伪类选择器(a: hover, li: nth - child)

13. css的设置方式

1.内部样式

内部样式,将样式设置写在head中的style中,格式为 标签/元素 {属性: 值;}

<head><style>
    p {
    color: red;
      font-size: 50px;
        }
    </style>
</head>

2.外部样式(推荐)

外部样式,将style单独写在style.css文件中,其他网页在head中通过link引用

p {
	color: red;
	font-size: 100px;
}

3.内联式(不推荐)

在结构标签中直接使用style属性,通过:分割的键值对定义,通过;隔开多个属性,例如<p style="color:SkyBlue;font-size:60px">白日依山尽,黄河入海流</p>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值