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. vue 导航菜单默认子路由

    export default new Router({ routes: [ { path: '/', name: 'index', component: index, children: [ { pa ...

  2. 洛谷P1192 台阶问题【dp递归】

    有NN级的台阶,你一开始在底部,每次可以向上迈最多KK级台阶(最少11级),问到达第NN级台阶有多少种不同方式. 输入输出格式 输入格式: 两个正整数N,K. 输出格式: 一个正整数,为不同方式数,由 ...

  3. [poj1325] Machine Schedule (二分图最小点覆盖)

    传送门 Description As we all know, machine scheduling is a very classical problem in computer science a ...

  4. Syncfusion在WinPhone8.1实现统计图

    using Syncfusion.UI.Xaml.Charts; public static SfChart InitCompareChart(string fundName, double tenT ...

  5. ElasticSearch中profile API的使用

    1. 前言 profile API 是 Elasticsearch 5.x 的一个新接口.通过这个功能,可以看到一个搜索聚合请求,是如何拆分成底层的 Lucene 请求,并且显示每部分的耗时情况. 2 ...

  6. tomcat日志采集

    1. 采集tomcat确实比之前的需求复杂很多,我在搭建了一个tomcat的环境,然后产生如下报错先贴出来: Jan 05, 2017 10:53:35 AM org.apache.catalina. ...

  7. POJ 2607

    一次FLOYD,再枚举. 注意题目要求的输出是什么哦. #include <iostream> #include <cstdio> #include <cstring&g ...

  8. Web端即时通讯、消息推送的实现

    https://blog.csdn.net/DeepLies/article/details/77726823

  9. BNU 51638 Air Hockey 三分二分法

    Air Hockey   无聊的过河船同学和无聊的胀鱼同学非常喜欢打桌上冰球(其实只是喜欢听球碰撞时的声音).在无聊的一天,无聊的过河船同学想到了一个无聊的玩法:两人同时将两个球放桌面上,同时击出,然 ...

  10. [POJ 3621] Sightseeing Cows

    [题目链接] http://poj.org/problem?id=3621 [算法] 01分数规划(最优比率环) [代码] #include <algorithm> #include &l ...