2019-01-17

get和post方法提交,mvc三层模式介绍和servlet的生命周期

servlet是一个比较重要的内容,我们以后学习的很多框架技术就是对servlet的封装的,所有有很多理论基础需要在servlet时候讲解,这节课我们有几个比较重要的概念要简单先介绍一下,大家不要理解很深,只需要先初步认识这个概念就可以了,以后在练习过程中会不对加深对这写概念的理解的。

一、mvc三层框架思想

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码:

[if !supportLists]· [endif]

模型(Model)层实现系统中的业务逻辑,就是一个个的实体javaBean构成的,里面包括属性,以及属性的get和set方法,还有一些对用户操作的处理的方法。

[if !supportLists]· [endif]

[if !supportLists]· [endif]

视图(View)层是呈现给客户以及浏览者看的页面,其功能仅仅只是用户获得用户的输入和展示给用户。

[if !supportLists]· [endif]

[if !supportLists]· [endif]

控制(Controller)层是Model与View之间沟通的桥梁,在控制(Controller)层可调用模型(Model)层中的方法,也可以为视图(View)层传值是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据,视图层不能直接访问模型层。

[if !supportLists]· [endif]

这样分层的好处是使得系统每层的功能清晰,减低依赖性,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。

二、get和post提交的区别

HTTP 协议使用以下方法发送请求信息:GET方法POST 方法  

[if !supportLists]· [endif]

GET 方法:用于检索信息(如文档、图表或数据库请求结果),请求的页面可以被设置为书签和使用电子邮件发送,请求信息作为查询字符串发送。

[if !supportLists]· [endif]

[if !supportLists]· [endif]

POST 方法:用于发送敏感信息(如信用卡号)或要保存到数据库中的信息,请求的页面不能设置为书签或不能通过电子邮件发送,发送的数据没有大小限制。

[if !supportLists]· [endif]

get方法提交和post方法提交的区别是:

1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。

2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。

示例如下:

    <a href="test.jsp?uname=abc&pp=aaa">asdf</a>

3、Get是不安全的,因为在传输过程,数据被放在请求的URL中,而如今现有的很多服务器、代理服务器或者用户代理都会将请求URL记录到日志文件中,然后放在某个地方,这样就可能会有一些隐私的信息被第三方看到。另外,用户也可以在浏览器上直接看到提交的数据,一些系统内部消息将会一同显示在用户面前。Post的所有操作对用户来说都是不可见的。

4、Get传输的数据量小,这主要是因为受URL长度限制;HTTP协议规范其实没有对URL长度进行限制。IE对URL长度的限制是2083字节(2K+35) n而Post可以传输大量的数据,所以在上传文件只能使用Post。

5、Get限制Form表单的数据集的值必须为ASCII字符;而Post支持整个ISO10646字符集。

6、提交复杂数据尽量使用POST方法。注意FORM不写method属性时默认是使用GET方法。

总结一下:默认访问服务器采用的都是GET的方法,比如一般的超链接,POST表达就是安全性比较好,一般在在表单提交时候会修改表单的method方法设置提交方式,代码如下:

<form action="login" method="get">用户名:

三、servlet简介

1、Servlet容器

也叫Servlet引擎,是Web服务器或应用服务器的一部分,用于在发送请求和响应之上提供网络服务,解码请求,格式化响应。服务器软件分为J2EE服务器和WEB服务器。

WEB服务器:基于Servlet和JSP规范,不支持EJB。包括:Tomcat、Resin。Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,它是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。免费,处理速度快。大应用及大访问量支持吃力。不支持EJB。 

2、什么是servlet

要运行servlet必须先要有servlet容器,比如tomcat,那什么是servlet呢?Servlet是Java语言中编写Web服务器扩展功能的重要技术,同时它也是JSP技术的底层运行基础。Servlet是一个基于java技术的Web组件,运行在服务器端,由servlet容器管理,用于生成动态内容。

五、如何建立一个servlet和servlet的生命周期

1、我们先使用MyEclipse的向导的建立一个servlet。

(1)点击新建选择servlet。


(2)输入servlet的名称和访问的URL路径。



这样你就可以看到MyEclipse自动帮你建立的Servlet的代码了。

(3)注意web.xml中生存的代码。

除了帮你建立了一个Servlet类之外,还会修改web.xml的配置文件,打开web.xml,会看到添加了以下的代码:

    <servlet>    <servlet-name>LifeServlet</servlet-name>    <servlet-class>com.servlet.LifeServlet</servlet-class>  </servlet>  <servlet-mapping>    <servlet-name>LifeServlet</servlet-name>    <url-pattern>/lifeServlet</url-pattern>  </servlet-mapping>

(4)尝试访问这个servlet,输入Servlet的访问路径即可。


2、servlet的生命周期

servlet的生命周期有其容器管理,也就是说,我们不需要new一个servlet的实例,也不用我们手动去销毁它,因为这些都是有servlet容器管理的。重写它的构造方法,初始化方法和销毁方法。看看servlet是什么时候初始化的。代码如下:

//servlet 生命周期 单例

public class LifeServlet extends HttpServlet {


public LifeServlet(){

System.out.println("servlet的构造方法");

}


@Override

public void init() throws ServletException {

System.out.println("servlet的init初始化方法");

super.init();

}


// 接受get提交的方法

public void doGet(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {


response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<HTML>");

out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");

out.println("  <BODY>");

out.print(this.getClass());

out.println(", using the GET method");

out.println("  </BODY>");

out.println("</HTML>");

out.flush();

out.close();

}


// 接受post提交的方法

public void doPost(HttpServletRequest request, HttpServletResponse response)

throws ServletException, IOException {

response.setContentType("text/html");

PrintWriter out = response.getWriter();

out.println("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01 Transitional//EN\">");

out.println("<HTML>");

out.println("  <HEAD><TITLE>A Servlet</TITLE></HEAD>");

out.println("  <BODY>");

out.print("    This is ");

out.print(this.getClass());

out.println(", using the POST method");

out.println("  </BODY>");

out.println("</HTML>");

out.flush();

out.close();

}


@Override

public void destroy() {

System.out.println("servlet的destroy销毁化方法");

super.destroy();

}


}

安装下面的测试这个Servlet的生命周期

(1)启动tomcat,打开浏览器访问这个Servlet的时候就会实例化。可见一个servlet只会构造一次。

(2)doget和dopost两个处理业务逻辑的方法在每一次用户访问时候都会执行。

(3)只有在servlet容器关闭时,servlet才会销毁


小编整理了一些java进阶学习资料和面试题,需要资料的请加JAVA高阶学习Q群:664389243 这是小编创建的java高阶学习交流群,加群一起交流学习深造。群里也有小编整理的2019年最新最全的java高阶学习资料!

 



�$YG�;�[Iw�

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,544评论 6 501
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,430评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 162,764评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,193评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,216评论 6 388
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,182评论 1 299
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,063评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,917评论 0 274
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,329评论 1 310
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,543评论 2 332
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,722评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,425评论 5 343
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,019评论 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,671评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,825评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,729评论 2 368
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,614评论 2 353

推荐阅读更多精彩内容