jsp基础速成精华讲解(笔记)

本文详细介绍了Servlet的三大要素及其配置,讲解了HttpServletRequest和HttpServletResponse对象的使用。同时,文章探讨了四种会话跟踪方式,包括Session、Cookie、隐藏表单域和URL重写,并对比了内部跳转和外部跳转的差异。此外,还阐述了ServletContext对象的作用。最后,文章涵盖了JSP的基础知识,如页面构成、执行过程、脚本元素、隐式对象以及JavaBean和自定义标签的使用。
摘要由CSDN通过智能技术生成
  1.  Servlet三个要素: 
  2.   1.必须继承自HttpServlet 
  3.   2.必须实现doGet()或者doPost() 
  4.   3.必须在web.xml中配置Servlet 
  5.   <servlet> 
  6.   <servlet-name> </servlet-name> 
  7.   <servlet-class> </servlet-class> 
  8.   </servlet> 
  9.   <servlet-mapping> 
  10.   <servlet-name> </servlet-name> 
  11.   <url-pattern> </url-pattern> 
  12.   </servelt-mapping> 
  13.   HttpServeltRrequest:请求对象 
  14.   getParameter():获得表单元素的值 
  15.   getAttribute():获得request范围中的属性值 
  16.   setAttribute():设置reqeust范围中的属性值 
  17.   setCharacterEncoding():设置字符编码 
  18.   HttpSerletResponse:相应对象 
  19.   sendRedirect():外部跳转 
  20.   getWriter():获得输出流对象 
  21.   setContentType("text/html; charset=utf-8"):设置相应内容格式和编码 
  22.   四种会话跟踪方式: 
  23.   1.Session 
  24.   HttpSession session = request.getSession(); 
  25.   session.setAttribute("name", "zhangsan"); 
  26.   session.setAttribute("pwd", "aaa"); 
  27.   String name = (String) session.getAttribute("name"); 
  28.   2.cookie: 
  29.   //创建Cookie 
  30.   Cookie cookie = new Cookie("name", "zhangsan"); 
  31.   //设置Cookie的超时时间 
  32.   cookie.setMaxAge(24 * 60 * 60 *60); 
  33.   //把Cookie发送到客户端 
  34.   response.addCookie(cookie); 
  35.   //得到客户端发送的Cookie 
  36.   Cookie [] cookies = request.getCookies(); 
  37.   for(int i=0; i <cookies.length; i++) { 
  38.      Cookie temp = cookies[i]; 
  39.      String key = temp.getName(); 
  40.      String value = temp.getValue(); 
  41.   } 
  42.   3.隐藏表单域 
  43.   <input type="hidden" name="name" value="zhangsan" /> 
  44.   request.getParameter("name"); 
  45.   4.Url重写 
  46.   问号传参 
  47.   LoginServlet?username=zhangsanpwd=123 
  48.   String name = request.getParameter("username"); 
  49.   String pwd =request.getPareameter("pwd"); 
  50.   内部跳转: 
  51.   LoginServlet 
  52.   request.getRequestDispatcher("index.jsp").forward(request, resposne); 
  53.   外部跳转: 
  54.   response.sendRedirect("index.jsp"); 
  55.   内部跳转是一次请求和一次响应 
  56.   外部跳转是两次请求和两次响应 
  57.   ServletContext:Servlet上下文对象 
  58.   它是一个公共区域,可以被所有的客户端共享 
  59.   setAttribute():向公共区域里放入数据 
  60.   getAttribute():从公共区域里取数据 
  61.   二: 
  62.   三:三个标准范围:request, session, ServletContext 
  63.      共同点:都有setAttribute(), getAttribute() 
  64.      区别:范围不同,request  < session  < servletContext 
  65.   四:四种会话跟踪方式 
  66.   五:服务器上的五大对象 
  67.      request, response, servlet, session, servletContext 
  68.       
  69.   Jsp:Java Server Page 
  70.   页面构成:7种元素 
  71.   1.静态内容:html 
  72.   2.指令:page, include, taglib: 
  73.   <%@ 指令名 属性1="属性值1" 属性2="属性值2" %> 
  74.   3.表达式: <%=表达式 %> 
  75.   4.Scriptlet <% Java代码 %> 
  76.   5.声明: <%! %>:变量和方法 
  77.   6.动作: <jsp:动作名 属性="属性值"> </jsp:动作名> 
  78.   7.注释: 
  79.   客户端看不到的: <%-- --%> 
  80.   客户端可以看到的: <!-- --> 
  81.   
  82.   Jsp的执行过程: 
  83.   1.转译:Jsp--->Servlet 
  84.   2.编译:Servlet---->.class 
  85.   3.执行:.class 
  86.   第一次访问jsp的时候响应速度较慢,后面请求时响应速度快 
  87.   脚本: 
  88.   表达式: <%= %> 
  89.   Scriptlet: <% %> 
  90.   声明: <%! %> 
  91.   指令: 
  92.   page:language, import, errorPage, isErrorpage 
  93.   include:file 
  94.   taglib:uri:指定标签库描述符的路径 prefix:指定标签的前缀 
  95.   隐式对象: 
  96.   分类: 
  97.   1.输入和输出对象:request(HttpServletRequest),  
  98.                    response(HttpServletResponse),  
  99.                    out(JspWriter), servlet中的out是PrintWriter 
  100.   2.作用域通信对象:pageContext, request,  
  101.                    session(HttpSession), 
  102.                    application(ServletContext) 
  103.   3.Servlet对象:page(this), config 
  104.   4.错误对象:exception 
  105.        
  106.   JavaBean: 
  107.   一个标准的JavaBean有三个条件 
  108.   1.共有的类 
  109.   2.具有不带参数的公共的构造方法 
  110.   3.具有set()和get()方法 
  111.   4.私有属性 
  112.   Jsp中的标准动作: 
  113.   1.useBean:创建JavaBean的一个实例 
  114.   <jsp:useBean id="stu" class="com.westaccp.test.Student" scope="page/session/application/request" /> 
  115.   2.setProperty:给JavaBean的属性赋值 
  116.   <jsp:setProperty name="stu" property="stuName" value="zhangsan" /> 
  117.   <jsp:setProperty name="stu" property="stuName" param="txtName" /> 
  118.   value和param不能同时使用 
  119.   偷懒的方法: <jsp:setProperty name="stu" property="*" /> 
  120.   这个时候需要注意的是,表单元素的名字必须和JavaBean的属性值 
  121.   一模一样 
  122.   3.getProperty:获得JvaBean的属性值 
  123.   <jsp:getProperty name="stu" property="stuName" /> 
  124.   4.forward:内部跳转,相当于request.getRequestDispatcher().forward(request, response); 
  125.   <jsp:forward page="index.jsp" /> 
  126.   5.include:包含 
  127.   <jsp:include page="header.jsp" flush="true" /> 
  128.   表达式语言: 
  129.   EL: Expression Language 
  130.   语法格式: ${表达式 } 
  131.   表示式 = 运算符 + 操作数 
  132.   运算符:跟Java比较,多了一个empty, 少了一个赋值运算符 
  133.   ${empty ""} : true 
  134.   ${empty null} :true 
  135.   操作数: 
  136.   -->常量:布尔型(true/false), 整型, 浮点型, 字符串(可以用'', 还可以用""), Null 
  137.   -->变量: 
  138.       1.指的是放在四个标准范围里的属性(page, request, session, application) 
  139.       2.在编准范围内的搜索顺序:page-->request--->session--->application 
  140.       3.怎么取得变量值:点运算符., 还以用[] 
  141.        <%  
  142.         request.setAttribute("name", "lisi"); 
  143.       %> 
  144.       ${requestScope.name} 
  145.       或者 
  146.       ${requestScope["name"]} 
  147.   -->隐式对象 
  148.       1.pageContext:通过它可以访问request, session, servletContext 
  149.       2.跟范围由关的:pageScope, requestScope, sessionScope, applicationScope 
  150.       3.跟输入有关的:param, paramValues 
  151.       4.其他的:header, cookie, headervalues, 
  152.   EL表达式适用的场合: 
  153.   1.可以在静态文本中使用 
  154.   2.与自定义标签结合使用 
  155.   3.和JavaBean结合使用 
  156.   <jsp:userBean id="stu" class="com.westaccp.test.Student" scope="session" /> 
  157.   <jsp:setProperty name="stu" property="stuName" value="hello" /> 
  158.   ${stu.stuName} 
  159.   自定义标签: 
  160.   1.标签处理程序实现 
  161.   --->实现:继承自BodyTagSupport或者TagSupport 
  162.             一般会重写doStartTag(), doEndTag(), doAfterBody() 
  163.   --->描述:在标签库描述符文件中描述(.tld) 
  164.        <taglib> 
  165.           <tlib-version>1.0 </tlib-version> 
  166.           <jsp-version>2.0 </jsp-version> 
  167.           <short-name>simpletag </short-name> 
  168.        
  169.           <tag> 
  170.            <name>showbody </name> 
  171.            <tag-class>com.westaccp.test.ShowBodyTag </tag-class> 
  172.            <body-content>empty/jsp </body-content> 
  173.            <attribute> 
  174.             <name>color </name> 
  175.            </attribute> 
  176.           </tag> 
  177.        </taglib> 
  178.   --->使用: <%@ taglib uri="WEB-INF/mytag.tld" prefix="my" %> 
  179.              <my:showbody /> 
  180.   2.标签文件 
  181.   --->实现和描述 
  182.        在.tag文件中实现 
  183.        设置主体内容: <%@ body-content="empty/scriptless" %> 
  184.        设置属性: <%@ attribute name="name" required="true" rtexprvalue="true" %> 
  185.        有主体内容: <jsp:doBody scope="session" var="theBody" /> 
  186.         <
  187.           String body = (String) session.getAttribute("theBody"); 
  188.        %> 
  189.   --->使用 
  190.        WEB-INF/tags/sayhello.tag 
  191.         <%@ taglib tagdir="/WEB-INF/tags/" prefix="you" %> 
  192.         <you:sayhello /> 
  193.         
  194.   标准标签库: 
  195.   1.核心标签库 
  196.   -->通用: 
  197.        set: <c:set var="" value="" scope="" /> 
  198.        out: <c:out value="" /> 
  199.        remove:  <c:remove var="" scope="" /> 
  200.   -->条件: 
  201.        if: <c:if test="">..... </c:if>  
  202.        choose:  <c:choose> 
  203.                <c:when test="">... </c:when> 
  204.                <c:when test="">... </c:when> 
  205.                <c:when test="">... </c:when> 
  206.                   ..... 
  207.                    <c:otherwise>... </otherwise>            
  208.                 </c:choose> 
  209.   -->迭代: 
  210.       forEach: <forEach var="" items="" varStatus="" begin="" end=""> 
  211.       foTokens: <foTodens var="" items="" delim=",; ¦"> </foTodens> 
  212.       Java,C#;SQL ¦C 
  213.   2.I18N与格式化标签库 
  214.   -->setLocale:设置本地区域 
  215.   -->bundle:设置资源包 
  216.   -->setBundle:设置资源包 
  217.   -->message:输出消息 
  218.   3.SQL标签库 
  219.   -->setDataSource:设置数据源,用于获得与数据库的连接 
  220.   -->query:执行查询 
  221.   -->update:执行增,删,改 
  222.   -->transaction:事务 
  223.   -->param:参数 
  224.   4.XML标签库 
  225.   过滤器: 
  226.   生命周期: 
  227.   1.实例华: 
  228.   2.初始化:init() 
  229.   3.过滤:doFilter() 
  230.   4.销毁:destroy() 
  231.   5.不可用 
  232.   配置: 
  233.   <filter> 
  234.   <filter-name> </filter-name> 
  235.   <filter-class> </filter-class> 
  236.   </filter> 
  237.   <filter-mapping> 
  238.   <filter-name> </filter-name> 
  239.   <url-pattern> </url-pattern> 
  240.   </filter-mapping> 
  241.   几个重要的接口: 
  242.   1.Filter:init(), doFilter(), destroy() 
  243.   2.FilterChain: doFilter(request, response) 
  244.   3.FilterConfig:getFilterName(), getInitParameter(), 
  245.   过滤器链:--->1--->2--->3--->Servlet 请求 
  246.            <----1 <---2 <---3 <---        响应 
  247.            
  248.   MvC设计模式 
  249.   1.ModelI:jsp+JavaBean 
  250.   2.ModelII:jsp+Servlet+JavaBean 
  251.             jsp---view 
  252.             servlet---control 
  253.             javabean---model 
  254.   MVC: 
  255.   M--Model:模型:访问后台数据库 
  256.   V--view:视图:展示 
  257.   C--control:控制器:控制程序流程 
  258.   ModelII和MVC的关系: 
  259.   MVC是一种设计模式,ModelII它是MVC的一种具体的实现  
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值