JSP精华知识点总结

Servlet三个要素

[java] view plain copy print ?
  1. 1.必须继承自HttpServlet 
  2. 2.必须实现doGet()或者doPost() 
  3. 3.必须在web.xml中配置Servlet 
  4. <servlet> 
  5. <servlet-name></servlet-name> 
  6. <servlet-class></servlet-class
  7. </servlet> 
  8. <servlet-mapping> 
  9. <servlet-name></servlet-name> 
  10. <url-pattern></url-pattern> 
  11. </servelt-mapping> 
  12.  
  13. HttpServeltRrequest:请求对象 
  14. getParameter():获得表单元素的值 
  15. getAttribute():获得request范围中的属性值 
  16. setAttribute():设置reqeust范围中的属性值 
  17. setCharacterEncoding():设置字符编码 
  18.  
  19. HttpSerletResponse:相应对象 
  20. sendRedirect():外部跳转 
  21. getWriter():获得输出流对象 
  22. setContentType("text/html; charset=utf-8"):设置相应内容格式和编码 

四种会话跟踪方式

[java] view plain copy print ?
  1. 1.Session 
  2. HttpSession session = request.getSession(); 
  3. session.setAttribute("name","zhangsan"); 
  4. session.setAttribute("pwd", "aaa"); 
  5. String name = (String) session.getAttribute("name"); 
  6.  
  7. 2.cookie: 
  8. //创建Cookie 
  9. Cookie cookie = new Cookie("name","zhangsan"); 
  10. //设置Cookie的超时时间 
  11. cookie.setMaxAge(24 * 60 * 60 *60); 
  12. //把Cookie发送到客户端 
  13. response.addCookie(cookie); 
  14.  
  15. //得到客户端发送的Cookie 
  16. Cookie [] cookies = request.getCookies(); 
  17. for(int i=0; i<cookies.length; i++) { 
  18.   Cookie temp = cookies[i]; 
  19.   String key = temp.getName(); 
  20.   String value = temp.getValue(); 
  21.  
  22. 3.隐藏表单域 
  23. <input type="hidden" name="name" value="zhangsan" /> 
  24. request.getParameter("name"); 
  25.  
  26. 4.Url重写 
  27. 问号传参 
  28. LoginServlet?username=zhangsan&pwd=123 
  29. String name = request.getParameter("username"); 
  30. String pwd =request.getPareameter("pwd"); 

内部跳转和外部跳转

[java] view plain copy print ?
  1. 内部跳转: 
  2. LoginServlet 
  3. request.getRequestDispatcher("index.jsp").forward(request, resposne); 
  4. 外部跳转: 
  5. response.sendRedirect("index.jsp"); 
  6. 内部跳转是一次请求和一次响应 
  7. 外部跳转是两次请求和两次响应 

[java] view plain copy print ?
  1. ServletContext:Servlet上下文对象 
  2. 它是一个公共区域,可以被所有的客户端共享 
  3. setAttribute():向公共区域里放入数据 
  4. getAttribute():从公共区域里取数据 
  5.  
  6. 三个标准范围:request, session, ServletContext 
  7.   共同点:都有setAttribute(), getAttribute() 
  8.   区别:范围不同,request < session < servletContext 
  9. 服务器上的五大对象 
  10.   request, response, servlet, session, servletContext 

Jsp:Java Server Page

页面构成:7种元素

[java] view plain copy print ?
  1. 1.静态内容:html 
  2. 2.指令:page, include, taglib: 
  3. <%@ 指令名 属性1="属性值1" 属性2="属性值2" %> 
  4. 3.表达式:<%=表达式 %> 
  5. 4.Scriptlet<% Java代码 %> 
  6. 5.声明:<%! %>:变量和方法 
  7. 6.动作:<jsp:动作名 属性="属性值"></jsp:动作名> 
  8. 7.注释: 
  9. 客户端看不到的:<%-- --%> 
  10. 客户端可以看到的:<!-- --> 

Jsp的执行过程

[java] view plain copy print ?
  1. 1.转译:Jsp--->Servlet 
  2. 2.编译:Servlet---->.class 
  3. 3.执行:.class 
  4. 第一次访问jsp的时候响应速度较慢,后面请求时响应速度快 

脚本

[java] view plain copy print ?
  1. 表达式:<%= %> 
  2. Scriptlet:<% %> 
  3. 声明:<%! %> 

指令

[java] view plain copy print ?
  1. page:language, import, errorPage, isErrorpage 
  2. include:file 
  3. taglib:uri:指定标签库描述符的路径 prefix:指定标签的前缀 

隐式对象

[java] view plain copy print ?
  1. 分类: 
  2. 1.输入和输出对象:request(HttpServletRequest),  
  3.   response(HttpServletResponse),  
  4.   out(JspWriter), servlet中的out是PrintWriter 
  5. 2.作用域通信对象:pageContext, request,  
  6.   session(HttpSession), 
  7.   application(ServletContext) 
  8. 3.Servlet对象:page(this), config 
  9. 4.错误对象:exception 

JavaBean

[java] view plain copy print ?
  1. 一个标准的JavaBean有三个条件 
  2. 1.共有的类 
  3. 2.具有不带参数的公共的构造方法 
  4. 3.具有set()和get()方法 
  5. 4.私有属性 

Jsp中的标准动作

[java] view plain copy print ?
  1. 1.useBean:创建JavaBean的一个实例 
  2. <jsp:useBean id="stu" class="com.westaccp.test.Student" scope="page/session/application/request" /> 
  3. 2.setProperty:给JavaBean的属性赋值 
  4. <jsp:setProperty name="stu" property="stuName" value="zhangsan" /> 
  5. <jsp:setProperty name="stu" property="stuName" param="txtName" /> 
  6. value和param不能同时使用 
  7. 偷懒的方法:<jsp:setProperty name="stu" property="*" /> 
  8. 这个时候需要注意的是,表单元素的名字必须和JavaBean的属性值 
  9. 一模一样 
  10. 3.getProperty:获得JvaBean的属性值 
  11. <jsp:getProperty name="stu" property="stuName" /> 
  12. 4.forward:内部跳转,相当于request.getRequestDispatcher().forward(request, response); 
  13. <jsp:forward page="index.jsp" /> 
  14. 5.include:包含 
  15. <jsp:include page="header.jsp" flush="true" /> 

表达式语言

[java] view plain copy print ?
  1. EL: Expression Language 
  2. 语法格式: ${表达式 } 
  3. 表示式 = 运算符 + 操作数 
  4. 运算符:跟Java比较,多了一个empty, 少了一个赋值运算符 
  5. ${empty ""} : true 
  6. ${empty null} :true 
  7. 操作数: 
  8. -->常量:布尔型(true/false), 整型, 浮点型, 字符串(可以用'', 还可以用""), Null 
  9. -->变量: 
  10.   1.指的是放在四个标准范围里的属性(page, request, session, application) 
  11.   2.在编准范围内的搜索顺序:page-->request--->session--->application 
  12.   3.怎么取得变量值:点运算符., 还以用[] 
  13.   <%  
  14.   request.setAttribute("name", "lisi"); 
  15.   %> 
  16.   ${requestScope.name} 
  17.   或者 
  18.   ${requestScope["name"]} 
  19. -->隐式对象 
  20.   1.pageContext:通过它可以访问request, session, servletContext 
  21.   2.跟范围由关的:pageScope, requestScope, sessionScope, applicationScope 
  22.   3.跟输入有关的:param, paramValues 
  23.   4.其他的:header, cookie, headervalues, 
  24.  
  25. EL表达式适用的场合: 
  26. 1.可以在静态文本中使用 
  27. 2.与自定义标签结合使用 
  28. 3.和JavaBean结合使用 
  29. <jsp:userBean id="stu" class="com.westaccp.test.Student" scope="session" /> 
  30. <jsp:setProperty name="stu" property="stuName" value="hello" /> 
  31. ${stu.stuName} 

自定义标签

[java] view plain copy print ?
  1. 1.标签处理程序实现 
  2. --->实现:继承自BodyTagSupport或者TagSupport 
  3.   一般会重写doStartTag(), doEndTag(), doAfterBody() 
  4. --->描述:在标签库描述符文件中描述(.tld) 
  5.   <taglib> 
  6.   <tlib-version>1.0</tlib-version> 
  7.   <jsp-version>2.0</jsp-version> 
  8.   <short-name>simpletag</short-name> 
  9.     
  10.   <tag> 
  11.   <name>showbody</name> 
  12.   <tag-class>com.westaccp.test.ShowBodyTag</tag-class
  13.   <body-content>empty/jsp</body-content> 
  14.   <attribute> 
  15.   <name>color</name> 
  16.   </attribute> 
  17.   </tag> 
  18.   </taglib> 
  19. --->使用:<%@ taglib uri="WEB-INF/mytag.tld" prefix="my" %> 
  20.   <my:showbody /> 
  21. 2.标签文件 
  22. --->实现和描述 
  23.   在.tag文件中实现 
  24.   设置主体内容:<%@ body-content="empty/scriptless" %> 
  25.   设置属性:<%@ attribute name="name" required="true" rtexprvalue="true" %> 
  26.   有主体内容:<jsp:doBody scope="session" var="theBody" /> 
  27.   <% 
  28.   String body = (String) session.getAttribute("theBody"); 
  29.   %> 
  30. --->使用 
  31.   WEB-INF/tags/sayhello.tag 
  32.   <%@ taglib tagdir="/WEB-INF/tags/" prefix="you" %> 
  33.   <you:sayhello /> 
    

标准标签库

[java] view plain copy print ?
  1. 1.核心标签库 
  2. -->通用: 
  3.   set:<c:set var="" value="" scope="" /> 
  4.   out:<c:out value="" /> 
  5.   remove: <c:remove var="" scope="" /> 
  6. -->条件: 
  7.   if:<c:if test="">.....</c:if>  
  8.   choose: <c:choose> 
  9.   <c:when test="">...</c:when> 
  10.   <c:when test="">...</c:when> 
  11.   <c:when test="">...</c:when> 
  12.   ..... 
  13.   <c:otherwise>...</otherwise>   
  14.   </c:choose> 
  15. -->迭代: 
  16.   forEach:<forEach var="" items="" varStatus="" begin="" end=""
  17.   foTokens:<foTodens var="" items="" delim=",;|"></foTodens> 
  18.   Java,C#;SQL|C 
  19. 2.I18N与格式化标签库 
  20. -->setLocale:设置本地区域 
  21. -->bundle:设置资源包 
  22. -->setBundle:设置资源包 
  23. -->message:输出消息 
  24. 3.SQL标签库 
  25. -->setDataSource:设置数据源,用于获得与数据库的连接 
  26. -->query:执行查询 
  27. -->update:执行增,删,改 
  28. -->transaction:事务 
  29. -->param:参数 
  30. 4.XML标签库 

过滤器

[java] view plain copy print ?
  1. 生命周期: 
  2. 1.实例华: 
  3. 2.初始化:init() 
  4. 3.过滤:doFilter() 
  5. 4.销毁:destroy() 
  6. 5.不可用 

配置

[java] view plain copy print ?
  1. <filter> 
  2. <filter-name></filter-name> 
  3. <filter-class></filter-class
  4. </filter> 
  5. <filter-mapping> 
  6. <filter-name></filter-name> 
  7. <url-pattern></url-pattern> 
  8. </filter-mapping> 

几个重要的接口

[java] view plain copy print ?
  1. 1.Filter:init(), doFilter(), destroy() 
  2. 2.FilterChain: doFilter(request, response) 
  3. 3.FilterConfig:getFilterName(), getInitParameter(), 


过滤器链

--->1--->2--->3--->Servlet 请求

<----1<---2<---3<--- 响应
   

MvC设计模式

[java] view plain copy print ?
  1. 1.ModelI:jsp+JavaBean 
  2. 2.ModelII:jsp+Servlet+JavaBean 
  3.   jsp---view 
  4.   servlet---control 
  5.   javabean---model 
  6.  
  7. MVC: 
  8. M--Model:模型:访问后台数据库 
  9. V--view:视图:展示 
  10. C--control:控制器:控制程序流程 
  11.  
  12. ModelII和MVC的关系: 
  13. MVC是一种设计模式,ModelII它是MVC的一种具体的实现 

你可能感兴趣的:(JSP精华知识点总结)