Servlet:

①字符集问题:
②身份验证:
③统一的输入输出:类似母版,重写ServletResponeceWraper的getWriter,使用缓存流。
然后输出时,分析stringWriter ,重构html结构。
原因:之前的方式存在两个问题:
①目录结构混乱
②程序可能将printwriter关闭,导致下边的输出停止。

解决方法:filter 过滤器
特点:
①过滤方向是双向的
②request和response,chaine
③配置web.xml
④默认只过滤client的请求
<dispatcher>request</dispatcher> 默认状态
<dispatcher>forward</dispatcher>内部转发也过滤
<dispatcher>include</dispatcher>

修饰模式(装配模式)
实现接口,成员为其实现类的对象,增加其他数据。
①ServletResponeceWraper就是这样一个类,
②我们继承其类,即可完成。

listener
===监听生命周期的事件==
创建:*Init ①服务器启动时,加载公用数据。
销毁:*Destroy

=============================
ServletContextListener
HttpSessionListener :购物车collection<Product>;
ServletRequestListener
=============================
ServletContextAtrributeListener
HttpSessionAtrributeListener
ServletRequestAtrributeListener
=============================

JSP与Servlet的对比:
①实质都是Servlet,应用服务器将其翻译,转换成java,然后使用。tomcat/work/catalina/...
②servlet更适合业务处理,jsp更适合视图,即显示数据

JSP:
一、语法:
①.jsp的后缀
②存在位置:webapps下,web-inf外的路径下
③直接访问,无须web.xml配置
④当jsp首次访问时,服务器将jsp翻译成java文件,然后javac成执行文件

二、元素:
1>脚本元素:
①声明脚本 <%! 声明体%> 成员变量
②表达式脚本 <%= 表达式 %> 编译在service方法中,当局部变量与成员变量重复时,所以优先使用普通脚本中的变量。
③普通脚本 <% %> 在service方法中,变量是局部变量 可以编写除了函数声明外的任何java代码

2>指令元素:
1.页面指令:<%@page 属性="值" 属性2="值2" ...%>
对jsp页面描述说明
①contentType="text/html"
contentType="text/html;character-set"
②import 导包、类
<%@page import="java.util.*"%>
默认,已导入:java.lang.*,javax.servlet.*,javax.servlet.http.*,javax.servlet.jsp.*
③isErrorPage="true|false"
④errorPage="URI"
⑤session="true" 是否使用session,默认true
⑥language="java"
2.包含指令:
静态包含:<%@ include file="url"%> 静态包含,编译前包含

三、隐含对象
不需要new,直接使用的一组对象,tomcat自动创建
只能在<%=%>、<% %>中使用。
1.request
type:HttpServletRequest
method:getParameter
setAttribute
getAttribute
getSession
getMethod
getRequestURL:全球资源定位
getRequestURI:主机资源定位
getContextPath:应用名

2.session
type:httpSession
method:setAttribute
getAttribute
removeAttribute
isNew:第一次访问true,之后是false
3.out
type:javax.servlet.jsp.jspWriter
4.exception
注意:只能在error.page中使用
5.responce:

6.application
type:javax.servlet.ServletContext
setAttribute()
getAttribute()
removeAttribute()
7.page
type:java.lang.Object
代表当前jsp对象
8.config
type:javax.servlet.servletConfig

9.pageContext
type:javax.servlet.jsp.PageContext
①获取其他8个隐含对象
pageContext.getRequest();
②作用域:代表请求中的一个页面,其作用域只是一个请求中的一个页面对象
③可以直接获取其他3个作用域中的属性:依次从小到大查找
Object o = pageContext.findAttribute();
getAttribute(name,scope)
④include|forward
四、EL表达式:express language 表达式语言
1>语法:${ name } 按照从小到大的顺序在四个作用域中查,找名字为name的命名属性
2>作用:计算表达式,且输出${param.name} == <%= request.getParameter(“name” ) %>
3>基本运算:${ empty a } :a如果为空返回true ,否则返回false
4>简化获取作用域中的命名属性:

②当作用域中存在重名变量时,可以在EL中明确指定查找的作用域:
5>作用域:pageSope/requestScope/sessionScope/applicationScope
6>如果属性是对象,可以使用点语法。
7>获取Client的数据:${param.age} 等价于 request.getParameter(age);
8>获取Cookie的数据:${cookie.JSESSIONID.value}
等价于:Cookie cookies = request.getCookies();
遍历;
9>隐含对象:

五、JSTL :java standard tag library apache提供的

四、静态包含和动态包含(类似静态库和动态库)
<%@include file=“fun.jsp”%>
静态包含指令,用于将目标文件的源代码包含到本页面中
相当于进行了一次拷贝粘贴操作,被包含的目标文件不会生成独立的servlet源码
如果被包含的多个文件中有重名的变量,会出现变量冲突

<jsp:include page=“header.jsp” />
动态包含指令,用于将目标文件的输出结果和本页面合并在一起
被包含的目标文件独立运行,会生成独立的servlet文件
由于只是进行结果的合并,不存在变量冲突

参数传递:
动态包含参数传递:当前jsp对象向被包含对象传递参数,使用getparameter("name")获取即可
<jsp:include page=“/common/header.jsp”>
<jsp:param name=“a” value=“123”/>
<jsp:param name=“b” value=“456”/>
</jsp:include>

<jsp:forward page=“sub/b.jsp”>
<jsp:param name=“a” value=“1”/>
<jsp:param name=“b” value=“2”/>
</jsp:forward>

五、Java标准标签库 JSTL java standt tag libary
①引入包文件:jstl.jar 和 standard.jar

②标签作用域scope
page : pageConetxt
session : HttpSession
application : ServletContext

框架学习:

一、Hibernate框架:

二、Struts2框架:
1.struts.xml
<package name="user" namespace="/User" extends="struts-default">
<action name="Login">
<result>/login.jsp</result>
</action>
<action name="Welcome" class="com.yiibai.user.action.WelcomeUserAction">
<result name="SUCCESS">/welcome_user.jsp</result>
</action>
<action name="Hello">
<result>/WEB-INF/page/hello.jsp</result>
</action>
</package>
①package的namespace不写,则为默认命名空间,找不到的action都会在默认命名空间下寻找
②action:
name:action的名字,区分大小写,请求中可以不添加action的后缀
class:默认是"ActionSupport"
method:默认是"execute"
搜索顺序:
①请求url中寻找,如未找到,跳至上一级,继续①,如果找到,则处理返回
②如果根命名空间下还未找到,则到默认命名空间寻找
③如果找到,则报错
③result:
name:默认"SUCCESS"

三、spring mvc框架
1.spring mvc是spring框架的一部分,即在spring框架下的mvc的具体处理和实现
2.执行过程:
1.request->dispacherServlet
2.dispacherServlet -> handlerMapping 根据注解、xml
3.handlerMapping -> dispacherServlet 返回handlerExcutionExplain(Handler)
4.dispacherSerlet -(handler)> handlerAdapter
5.handlerAdapter -> 执行handler
6.handlerAdapter —> dispacherServlet 返回ModelAndView
7.dispacherServlet -(ModelAndView)> Viewresolver
8.Viewresolver -> dispacherServlet 返回物理View
9.dispacherServlet 填充model,视图渲染,相应结果

3.组件:
1.前端控制器 DispatcherServlet (不需要开发,配置即可)
作用:Controller,接受请求,相应结果,即转发器dispacher

2.处理器映射器 HandlerMapping (不需要开发)
作用:根据请求url,根据注解、查找handler

3.处理器适配器 HandlerAdapter (不需要开发)
作用:按照特定规则,执行handler
注意:编写handler按照adapter的要求编写

4.处理器 Handler (需要按照adapter进行开发)

5.视图解析器 View resolver
作用:根据逻辑视图,解析成真正的视图
6.视图 View (jsp freemaker pdf excel)(需要开发)

j2ee学习笔记的更多相关文章

  1. J2EE学习笔记-第二章(Web应用初步)

    首先要理解一些概念的词语,到底这些是什么(当我读懂了后,会逐一填补完整,现在我真的有点混淆) web组件-相当于功能性的组件,就像是零件,汽车的轮胎,汽车的门,所有组件组合后,才能成为一辆车,有时候也 ...

  2. j2ee学习笔记 Filter过滤器

    作用:过滤response和request对象的内容 使用: Filter是J2EE的一个接口,自定义Filter需要实现该接口,并重写所有的方法. Filter提供的方法: init() doFil ...

  3. <J2EE学习笔记>关于Servlet的讲义

    题外话:接触java又是半年之前的事情了,当初好好学了java却把cpp给忘了,到现在又把手里发热的cpp给放下重新捡起来java,究竟这两种OOP语言我能不能清晰分开记住呢 以下全部课件来自于同济大 ...

  4. j2ee学习笔记 javascript 学习

    JavaScript 组成: ECMAScript + BOM + DOM Window对象是JS中的顶层对象 ECMAScript: 规定了一些语法,变量,for循环等等结构 BOM: Browse ...

  5. j2ee学习笔记URLEncoder.encode(String , enc)处理特殊字符

    从页面上传递数据时,特殊字符对于超链接会自动进行解码 : 其他方式需要手动进行解码.

  6. <J2EE学习笔记>续上次Servlet部分提升内容 以及JSP的内容纲要

    以下全部课件均来自于同济大学刘岩老师的<EnterpriseJavaProgramming> 因为授课语言问题,如果翻译有不正确之处欢迎指正 Section 1. 关于Servlet的部分 ...

  7. j2ee开发之Spring2.5框架学习笔记

    Spring 2.5框架学习笔记 1.是一个开源的控制反转IOC和面向切面AOP的容器框架 2.IOC控制反转 public class PersonServiceBean { private Per ...

  8. j2ee开发之hibernate框架学习笔记

    hibernate框架技术重点学习笔记 1.针对不同的数据库,有不同的数据库实现类,使其符号对应的数据库? mysqlDaoImpl oracleDaoImpl ... ... 2.对象和表记录的转换 ...

  9. Java学习笔记之JNDI(六)

    JNDI 是什么 JNDI是 Java 命名与目录接口(Java Naming and Directory Interface),在J2EE规范中是重要的规范之一,不少专家认为,没有透彻理解JNDI的 ...

随机推荐

  1. package、folder和source folder的区别

    在用myeclipse工具开发java的过程中,新建目录时发现会有package,folder和source folder等不同类型的选项, 因此在网上搜集了一些资料:如下 以下文章转自:https: ...

  2. HTTP 返回码中 301 与 302 的区别

    转自:http://blog.csdn.net/qmhball/article/details/7838989 一.官方说法301,302 都是HTTP状态的编码,都代表着某个URL发生了转移,不同之 ...

  3. 关于linux suse11忘记root密码修改方法

    SUSE Linux忘记root密码   1.重新启动机器,在出现grub引导界面后,按F2,在启动linux的选项里加上init=/bin/bash,通过给内核传递init=/bin/bash参数使 ...

  4. 2.Eclipse中绑定Tomcat

    1.下载并成功安装Eclipse和Tomcat(该步骤有问题请查看我的相关经验): 2.打开Eclipse,单击“window”菜单,选择下方的“Preferences”: 3.找到Server下方的 ...

  5. hdu 3594 强连通好题仙人掌图,对自己的tarjan模板改下用这个

    #include<stdio.h> #include<string.h> #define N 21000 struct node { int v,next; }bian[510 ...

  6. mysql-windows修改root密码

    安装mysql完成后 直接进入方式 mysql -u root -p 设置mysql的root密码 mysql -u root -p password 8888

  7. redis-windows上的安装与其他命令

    为什么用Redis 数据库的IO是一个性能瓶颈,需要用redis来解决,100个IO并发已经很不错了,因为数据库天生就需要写磁盘,而redis不需要实时写磁盘而又可以存入数据库 安装 以服务的方式启动 ...

  8. Android之——自己主动挂断电话的实现

    转载请注明出处:http://blog.csdn.net/l1028386804/article/details/47072451 通过<Android之--AIDL小结>与<And ...

  9. 例说linux内核与应用数据通信(三):读写内核设备驱动文件

    [版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet.文章仅供学习交流.请勿用于商业用途]         读写设备文件也就是调用系统调用read()和write(),系 ...

  10. HTML的表单form以及form内部标签

    <html> <head> <title> form表单的使用 </title> <!-- 标签名称:form 表单标签 属性:action:提交 ...