servlet&jsp的详解

本文详细介绍了J2EE中的模型-视图-控制器(MVC)架构原理,阐述了Servlet与JSP如何实现MVC模式,以及它们之间的交互过程。同时,文中还解释了容器的作用、请求响应流程和HTTP方法的特性。

1、J2EE是一个企业级开发平台,一个标准。

2、 模型(业务数据和处理该数据的方法的组合)-视图(表示层1-控制器(MVC)不是ServletJsp所特有的,MVC关键是业务逻辑与表示分离,业务逻辑本身就能作为一个可重用的独立Java类存在。

3、Servlet&Jsp中的MVC

M(普通Java类)具体的业务逻辑和状态。

CServlet)从请求获得用户输入,明确输入对模型的影响。告诉模型自动更新,并让视图(JSP)得到新的模型状态。(更新模型,驱动视图反应新的模型)

VJsp)负责表示方面,从控制器得到模型的状态。另外视图还要获得用户输入,比交给控制器。

4、容器为Web应用提供了通信支持、生命周期管理、多线程支持、声明方式安全、以及Jsp支持。创建了一个请求对象和响应对象

5、逻辑名映射到servlet类文件

   a)点击,浏览器生成以下请求URL 

     (主机服务器的根)/Beer-v1Web应用上下文根)/SelectBeer.do(逻辑资源名)

   b)容器搜索DD,找到<Url-pattern>-/资源逻辑名相匹配的<servlet-mapping>

   c)看到对应的<servlet-name>servlet

   d)容器查找到<servlet-name>同名的<servlet>标记

   e)根据<servlet>标记中<servlet-class>容器知道负责处理这个请求的servlet

   f)容器开发一个新线程来处理这个请求,并把请求传递给这个线程(传递给servletservice方法

   g)容器把响应(当然是通过Web服务器)发回给客户

6、from表单中action=提交的地址(相对路径/绝对路径),跳转到相对应的url地址

7、MVC啤酒顾问WEB应用

   1)浏览器把请求数据发送给容器

   2)容器通过URL找到servlet,并把请求传送给servlet

   3servlet调用BeerExpert组件获得帮助

   4)这个“专家”返回一个回答,servlet把这个回答添加到请求对象

   5servlet把请求传递给Jsp

   6Jsp从请求对象获得答案

   7Jsp为容器生成一个页面

   8)容器把这个页面发回给用户

8Jsp页面注释

   1)、<% XXXXXXXXX%>内部的代码和普通java文件一样“//”,"/**/"“/* * */”
   2
)、html的代码,和html相同“<!-- XXXXXXX-->”

   3)、<%%>整体可以当做html代码来处理“<!-- <%XXXXXXXXXX %> -->”

9、servletinit方法与service方法

   Init初始化,在service调用之前完成

10、servlet中默认调用doGet()方法,

11、设置编码均是response响应!!!

response.setCharacterEncoding(“gbk”);

response.setContentType(“text/html;charset=gbk”);

 12、jspservlet之间跳转

   Jsp----->servlet   form表单的action提交

   EgLogin.jsp  Check.java Welcom.jsp

       <form action=”Check”>/<formaction=”/项目名/Check”>

    RequestDispatcher rd =getServletContext().getRequestDispatcher(“/Login.jsp”);

    RequestDispatcher rd =request.getRequestDispatcher(“Login.jsp或者 /Login.jsp”)

      Rd.forward(request,response);

      /request.sendRedirect(Login.jsp);

13 Http方法

     doGetdoOptionsdoPutdoHeaddoTracedoDelete是幂等的(不会修改服务器上的任何内容,可执行多次)

     doPost是非幂等的(提交数据可能用于不可逆转的事物,需要验证)

     方法默认为get()      

14、Request&Response

请求和响应是一切一切的关键,也是service()的参数

ServletRequest<-----------------------------HttpSerlvetRequest

|-getAttribute(String)               |-getCookie

|-getContentLength()               |-getSession

|-getInputStream()                 |-getHeader(String)

|-getLocalPort()                   |-getContentPath()

|-getParameter(String)              |-getQueryString()

|-getParameterNames()             |-getMethod()

a)getParameterValues()-->String[](复选框)

b)getInputStream 处理post中过于大的请求体(包含要处理的文本或二进制的内容),这些流只包含Http请求的体而不包含首部。

c)getServerPort(请求用来发送到的端口)

     getLocalPort(请求最后发送到的端口)

     getRemotePort(得到发出请求的客户端口,远程即是客户)

ServletRsponse<----------------------------HttpSerlvetResponse

|-setContentType(String)            |-addCookie(Cookie)

|-getContentLength(int)             |-encodeRedirectURL(String url)

|-getOutputStream()                |-addHeader(String name,Stringvlaue)

|-getBufferSizet()                  |-sendError(int)

|-getWriter()                      |-sendStatus(int)

    a)addHeader()setHeader()区别

     首部以是响应的一部分,set会替换原有值,add另增一个值,无时,都会增加一个值。

    setIntHeader()用提供的整数值替换现有首部的值,或者另增加一个新的。

    b) setContentType(“内容类型/MIME类型”)

      MIME类型:text/html 

                 application/pdf 

               video/quicktime

               application/java

               Image/jpeg

               Application/jar

              Appilcation/octet-stream

               Application/x-zip

HttpServletRequestHttpServletResponse接口增加了与Http协议相关的方法......你的Servlet与客户/浏览器通信时就要使用这些方法。

15、Http请求方法有8

GET:doGet() 得到请求Url上的一个东西(资源或文件)

-->数据小、不安全、但可建立书签、幂等、默认方法

POST:doPost() 要求服务器接收附加的请求的体信息(似扩展的Get

-->数据大、安全、不可建立书签、非幂等、非默认

HEAD:doHead() 得到Get返回结果的首部部分,可提供信息,不会真正返回实际的那个东西(资源或文件)

TRACE:doTrace() 请求信息回送,客户可以看到,以便测试或排错

PUT:doPut() 把包含的信息体包含到请求的Url

DELETE:doDelete()删除所请求的URL上的东西(资源或文件)

OPTIONS:doOptions()要求得到Http方法的列表,所请求的URL上的东西可对这些HTTP方法做出响应。

CONNECTION:连接以便建立隧道

16、servlet初始化参数

DD(web.xml):

<servlet>

<init-param>

<param-name>参数名</param-name>

<param-calue>参数值</param-value>

</init-param>

</servlet>

Servlet:

Out.println(getServletConfig().getInitParameter(“参数名”));

详解:

getServletConfig()-->每个servlet均继承了一个getServletConfig()方法--->该方法返回一个ServletConfig--->getInitParameter()ServletConfig的一个方法。

容器初始化一个servlet时,会为这个servlet建立唯一一个ServletConfig,容器从DD“读出”servlet初始化参数,并把这些参数交给ServletConfig(),然后把ServletConfig交给servletinit方法

超类包括两个版本的initinit()init(ServletConfig)

17、ServletConfig

|-getInitParameter(String)

|-EnumerationgetInitParameterNames()

|-getServletContext()

|-getServletName()

Enumeration e

e.hasMoreElements()枚举对象中是否还存有元素

e.nextElement() 下一个元素

18、上下文初始化参数----->针对这个web应用

    DD(web.xml)

     <servlet>

     </servlet>

     <context-param>

     <param-name>参数名</param-name>

     <param-value>参数值</param-value>

     </context-param>

Servlet

 Out.println(getServletContext().getInitParameter(“参数名”));

详解:

getServletCOntext()-->每个servlet均继承了一个getServletContext()jsp以特殊的方式访问上下文-->该方法返回一个ServletContext对象--->getInitParameter()ServletContext的一个方法。

#初始化参数可认为是部署时的常量,可在运行时得到这些初始化参数,但不能设置。

19、ServletContext

|-getInitParameter(String)

|-getInitParametrNames()

|-getAttribute(Sring)         得到初始化参数,以及获取/设置属性

|-getAttributeNames()

|-setAttribute(String,Object)

|-removeAttribute(String)

|-getRequestDispatcher(String)  请求分派(sendRedirect请求重定向)

20、监听者

EgServletContextListener是否创建或撤销了一个上下文

要监听ServletContext事件,需要编写一个实现了ServletContextListener的监听者类,并在部署描述文件中放一个listener元素来告诉容器。

21、属性---->即是一个对象,可设置到(ServletContextHttpServletRequestHttpSession),简单认为既是一个映射实例对象的名值对(StringObject),我们关心谁能访问、存多久既是属性作用域是什么?

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值