1. 理解典型的Web应用
1.1 浏览器客户端、Web服务器、应用服务器、数据库服务器
1.1.1 在我们的项目里Tomcat即是Web服务器,又是应用服务器。
1.1.2 Web服务器一般用来处理静态的内容,HTML,CSS之类的东西
1.1.3 应用服务器主要负责在服务器端运行的应用程序,比如说我们的Servlet和JSP
1.2 典型的Web应用的请求处理过程
1.2.1 我们的请求从客户端那边递交过来,首先会到达Web,如果是请求一个Servlet或JSP,他会把请求转发给应用服务器。
然后由应用服务器去初始化那个程序。比如说我们调用一个Servlet,他会初始化一个Servlet对象,这时候他的init()方法就被调用。
然后再调用他里面的Service方法这些东西。
在Servlet可能要访问数据库,把一些数据存储起来,或者查询一些数据。完了以后再返回来,通过Response返回数据。
由应用服务器向客户端浏览器返回一些响应的html代码。
1.2.2这是一个请求和响应的过程。他的底层是基于TCP/IP协议。数据肯定会被传到后台,因为他不是基于UDP的。
1.2.3Web应用会有个根目录,Servlet被编译以后会被放到WEB-INF的classes目录下面,WEB-INF下面的还有个lib目录,放的都是些依赖包。
WEB-INF目录是在运行的时候类路径的一部分。在classes里面的那些类在运行的时候会先于lib里面的那些jar包被加载。
2. 理解Get和Post请求
2.1 发生get请求的情况:在浏览器里面输入地址请求,在网页里面点击一个连接地址,在表单里面定义method=get
2.2 post发生的情况只有在表单里面定义的method为post,表单默认采用的是get
2.3 get请求是通过在url后面加参数的方式来传递参数的,post是通过httpheader的方式来传递参数的。
2.4 post可以提交文件,get不可以。
2.5 这两个对于后台没有多大差异,可能要考虑的是编码
3. 理解Servlet/JSP的职责划分
3.1 一般来讲JSP适合编写html代码负责展现,servlet适合编写java代码负责逻辑,
一般来讲,在jsp里面只有把与展现有关的一些逻辑放到里面去。
servlet主要负责把页面里面传递过来的参数取出来,在页面里面对参数进行转换,然后调用后台的业务逻辑,比如说DAO和Service,来进行业务逻辑的处理。
处理完成后由servlet将结果通过request的setAttri()方法放到request里面再将结果forward到一个jsp,再由JSP进行呈现。
4. 理解服务器端重定向和客户端重定向
4.1 服务器端重定向只是从后台的一个Servlet转向另一个Servlet或者jsp,请求对象仍然是同一个请求对象,他的Attribute仍然存在。
客户端重定向:在浏览器里面向客户端发一个请求,实际上客户端已经响应了,响应代码302。
4.2 客户端在收到响应后,他就知道这是个从定向的请求。所以咯他重新再发一个请求。
5. 理解路径问题
5.1 对于服务器端重定向,我们使用的路径将跟服务器有关,配置的Servlet的具体映射是什么样的地址,就用什么样的地址。
eg:request.getRequestDispatcher("/admin/ArticleServlet").forward(request,response);
5.2 对于客户端的重定向,要加上一个requset.getContextPath(),
eg:response.sendRedirect(request.getContextPath()+ "/admin/ArticleServlet");
5.3 <%jsp:include%> 和 <%@include%>的路径都是相对路径
5.4 <img src="../images/tb.gif"> src里面可以用相对路径也可以用http://开头的绝对路径
5.5 在<head>标签下定义<base href="..."/>,那么在这个页面下所有的相对路径都会以href开头。
6. 理解编码问题
6.1 get请求与当前操作系统以及页面编码有关。
如果在页面里面的请求参数有中文的,则按照页面编码;如果在浏览器的地址栏里面输入,则与操作系统的编码有关
6.2 post请求与当前页面的编码有关
6.3 通过get请求的参数处理需要在tomcat里面改一个uriEncoding的参数
6.4 post请求通过下面方式修改
HttpServletRequest httpServletRequest=(HttpServletRequest)request;
httpServletRequest.setCharacterEncoding(encoding);
6.5 Tomcat有两种编码,一种是给服务器用的,另一种是给客户端用的
服务器端的编码主要讲的是数据存储到数据库里面是怎样的一种编码
客户端的编码主要是通过客户端连接服务器,客户端是什么编码
7. 理解HttpSession
7.1 服务器不会可以为客户端保留状态信息,比如说购物车,就要用到HttpSession对象
客户端已请求,服务器可以创建一个HttpSession对象
//判断session 是否有LOGIN_ADMIN
String loginAdmin=(String) httpServletRequest.getSession().getAttribute("LOGIN_ADMIN");
if (loginAdmin==null&&!page.equals("/admin/login.jsp")&&!page.equals("/admin/LoginServlet")) {
httpServletResponse.sendRedirect(httpServletRequest.getContextPath()+"/admin/login.jsp");
}
7.2 在服务器端创建Session对象的时候会创建一个JSESSIONID,他会把这个id通过Response里面的httpHead返回给客户端。
这个客户端可以通过request传到本地的cookie,然后每次通过这个请求来发送这个JSESSIONID的值。
服务器拿到这个信息就能找到对应的HttpSession对象。
7.3 session是以cookie或URL重写为基础的,默认使用cookie来实现,系统会创造一个名为 JSESSIONID的输出cookie,我们叫做session cookie,
以区别persistent cookies,也就是我们通常所说的cookie,注意session cookie是存储于浏览器内存中的,并不是写到硬盘上的,
这也就是我们刚才看到的JSESSIONID,我们通常情是看不到JSESSIONID的,但是当我们把浏览器的cookie禁止后,
web服务器会采用URL重写的方式传递Sessionid,我们就可以在地址栏看到 sessionid=KWJHUG6JJM65HS2K6之类的字符串。
7.4 session cookie针对某一次会话而言,会话结束session cookie也就随着消失了,
而persistent cookie只是存在于客户端硬盘上的一段文本(通常是加密的),而且可能会遭到cookie欺骗以及针对cookie的跨站脚本攻击,
自然不如 session cookie安全了。
7.5 通常session cookie是不能跨窗口使用的,当你新开了一个浏览器窗口进入相同页面时,系统会赋予你一个新的sessionid,
这样我们信息共享的目的就达不到了,此时我们可以先把sessionid保存在persistent cookie中,然后在新窗口中读出来,
就可以得到上一个窗口SessionID了,这样通过session cookie和persistent cookie的结合我们就实现了跨窗口的session tracking(会话跟踪)。
7.6 服务器也可以通过URL重写的方式来传递SessionID的值,因此不是完全依赖Cookie。如果客户端Cookie禁用,
则服务器可以自动通过重写URL的方式来保存Session的值,并且这个过程对程序员透明。
可以试一下,即使不写Cookie,在使用request.getCookies();取出的Cookie数组的长度也是1,
而这个Cookie的名字就是JSESSIONID,还有一个很长的二进制的字符串,是SessionID的值。
Cookie是客户端的存储空间,由浏览器来维持。
8. 理解pageContext,request,session,ServletContext(application scope)
8.1 可以把他们想象成一个个的容器,存储着一个个的对象。但是他们有不同的范围。
8.2 pageContext范围是页面,servlet里面没有这个东西,只有jsp里面才有。
在jsp里面可以通过pageContext.setAttribute("...","...")来传对象,然后在页面的其他地方接收。
pageContext用的比较少,可以在jsp页面与包含taglib的jsp之间传递数据。在taglib里面可能产生了一些数据,在页面里面会用,这时候就可以用pageContext。
8.3 ServletContext是一个全局对象,jsp在缺省的情况下已经创建了一个session对象,在servlet中可以通过request.getSession()
客户端浏览器关闭了以后,session还可能存在,只有在session超时了以后才可能被销毁。
request是从浏览器里面一个请求过去的时候,tomcat自动创建的,再传递给servlet
分享到:
相关推荐
Jsp-Servlet复习笔记-----第3章 Servlet技术 - 堕落天使 - JavaEye技术网站.mhtJsp-Servlet复习笔记-----第3章 Servlet技术 - 堕落天使 - JavaEye技术网站.mht
7. **Servlet与JSP的关系**:理解何时使用Servlet,何时使用JSP,以及如何通过Servlet和JSP协同工作来构建Web应用。 8. **MVC(Model-View-Controller)**设计模式:在JSP应用中,模型负责业务逻辑,视图负责展示,...
本篇复习笔记主要关注的是JSP构架以及MVC(Model-View-Controller)设计模式的应用。 MVC设计模式是软件工程中的一种架构模式,它将应用程序分为三个核心部分:模型(Model)、视图(View)和控制器(Controller)...
Java EE的复习笔记是学习这个复杂框架的重要参考资料,尤其对于开发者来说,深入理解其核心概念和技术是必不可少的。 首先,Struts是Java EE中的一个MVC(Model-View-Controller)框架,它的主要任务是分离业务逻辑...
【JAVA Web复习笔记】 在JAVA Web开发中,我们首先要理解几个关键的概念。Web技术主要分为两种架构模式:C/S(客户端/服务器端)和B/S(浏览器/服务器)。C/S架构通常涉及到专用的客户端应用程序与服务器进行交互,...
Java Servlet是Java Web开发中的核心组件之一,它用于构建动态网站和Web应用程序。...学习笔记中可能包含了从基础概念到实践操作的全过程,通过不断复习和实践,可以逐步提升对Servlet的理解和运用能力。
虽然具体的内容没有给出,但从整体框架来看,这份笔记可能覆盖了JSP的基础概念、页面结构、内置对象、生命周期以及一些高级特性如指令和标签库等内容。对于准备JSP相关考试的学生来说,这些知识点都是十分重要的复习...
【JSP七个小项目代码和笔记汇总(java web).rar】是一个包含多个JSP(Java Server Pages)项目的资源包,主要用于帮助学习者深入了解和实践Java Web开发。这些小项目提供了实际应用JSP技术的机会,同时也涵盖了相关...
JSP文件在服务器上被编译成Servlet,然后由服务器执行并返回结果给客户端。 #### 二、JSP注释类型 JSP支持三种类型的注释: 1. **HTML注释**:`<!-- 这是HTML注释 -->`,这种注释在源代码中可见,但在浏览器显示...
这份笔记可能包含了整个JSP课程的重点、难点以及实践案例,对于学习者来说,是理解和掌握JSP技术的重要参考资料。 【描述】中提到“直接下载解压就可以看,不是PDF格式,可打印”,意味着笔记是以一种可直接查看和...
期末复习的笔记,其中有servlet,jsp,spring,mvc等等 ,以及整理的各种简答题,里面还有考完之后,本人凭记忆,回忆考了什么?
【JavaEE复习笔记】 在JavaEE开发中,Servlet是一个核心组件,它负责处理HTTP请求并生成响应。Servlet是一个Java接口,定义了Web应用程序中的服务端组件。`javax.servlet.Servlet`接口是所有Servlet的基础,而`...
本篇复习笔记将深入探讨Servlet技术模型及其相关知识点。 Servlet技术是Java EE平台的核心组成部分,用于处理HTTP请求。Servlet是一个Java类,它扩展了`javax.servlet.GenericServlet`或实现了`javax.servlet....
### Java考试详细复习笔记 #### 一、传统MVC与Struts比较 ##### 1. 含义: 在Web开发中,MVC(Model-View-Controller)架构模式是一种常用的设计模式,它将应用程序分为三个核心组件,即模型(Model)、视图(View)和...
复习书:head first servlet & JSP 1, 边看书 边看 head first 复习笔记 (7天) 2,看过一遍书后 看head first 串讲笔记,结合head first 复习笔记,有不懂的再看书 (3 天) 3,看真题 (3天)
Core Java Unix JSP HTML javascript Oracle HIbernate JSP EJB Spring AJAX Servlet JDBC OOAD UML CVS Struct笔记汇总,最初学者,开发者是一个很好的知识汇总复习参考资料
这份"java web 笔记整理"涵盖了该领域的关键概念和技术,包括Servlet、JSP、MVC模式、JNDI、JTA以及EJB等核心内容。以下是根据笔记内容整理出的知识点详解: 1. **Servlet**:Servlet是Java平台上的服务器端组件,...
【标题】"7个JSP小项目源代码和笔记资料汇总Java源码"涉及的知识点主要集中在Java Web开发,特别是JSP(JavaServer Pages)的应用上。JSP是一种动态网页技术,它允许开发者将HTML代码与Java代码混合编写,从而在...
这些笔记涵盖了Java基础、JSP和Servlet的使用,以及SSH框架的应用,对于已有一定J2EE基础的学习者来说,是一份很好的复习和提升资料。通过深入理解和实践这些知识点,开发者能够构建出高效、稳定的Web应用程序。