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. yum的方式搭建mysql

    1.安装相应的软件yum install mysql : 安装mysql客户端 yum install mysql-server 安装服务端 yum install mysql-devel 安装相关的 ...

  2. LINUX KERNEL SPINLOCK使用不当的后果

    LINUX KERNEL SPINLOCK使用不当的后果 spinlock(自旋锁)是内核中最常见的锁,它的特点是:等待锁的过程中不休眠,而是占着CPU空转,优点是避免了上下文切换的开销,缺点是该CP ...

  3. linux邮件服务

    linux本地常见邮件服务有: Centos5:默认使用sendmail邮件服务,开启方式/etc/init.d/sedmail start Centos6:默认使用postfix邮件服务,开启方式/ ...

  4. CSS font-style中italic和Oblique有何区别 标签: css字体 2017-01-05 14:42 60人阅读 评论

    *要搞清楚这个问题,首先要明白字体是怎么回事.一种字体有粗体.斜体.下划线.删除线等诸多属性. 但是并不是所有字体都做了这些,一些不常用的字体,或许就只有个正常体,如果你用Italic,就没有效果了~ ...

  5. AtCoder ARC 076D - Built?

    传送门:http://arc076.contest.atcoder.jp/tasks/arc076_b 本题是一个图论问题——Manhattan距离最小生成树(MST). 在一个平面网格上有n个格点, ...

  6. 第一个GTK程序

    /*我已经把代码写在此处  希望借鉴和完善!一起加油奥(PS:我的QQ是1693672542欢迎加我一起进行探讨学习奥!!!)*/#include <stdio.h>#include< ...

  7. 【ACM】poj_3981_字符串替换_201307271019

    字符串替换Time Limit: 1000MS  Memory Limit: 65536K Total Submissions: 8447  Accepted: 3988 Description 编写 ...

  8. Object对象具体解释(一)之toString

    Object作为Java中超然的存在.当中定义了一切对象都共同拥有的方法. 特点: 1. java.lang包在使用的时候无需显示导入.编译时由编译器自己主动导入. 2. Object类是类层次结构的 ...

  9. POJ 1985

    求一棵树内最远的两点,DFS,顺便记录以某节点为根内最远的两点的距离,返回最远点的距离.其实是DP. #include <cstdio> #include <iostream> ...

  10. 关于Mysql Enterprise Audit plugin的使用

    正如之前看到的一篇文章,假设想要知道是谁登陆了你的数据库server,干了什么东西,那么你须要使用Mysql Enterprise Audit plugin. 以下介绍一下Mysql Enterpri ...