servlet/jsp/javabean学习笔记

来源:互联网 发布:多线程数据共享 编辑:程序博客网 时间:2024/04/29 16:27
--------------------------------------------------Servlet----------------------------------


3.1 servlet基础 
3.2 第一个servlet 
3.3 处理客户端输入 
    getParameter(name)    Enumeration getParameterNames() 
    String[] getParameterValues(name)
3.4 发送非html文档 
    ServletOutputStream
3.5 获取servlet配置参数  --ServletConfig对象
    init(ServletConfig config) myConfig.getInitParameter("FilePath")
    getServletConfig()


3.6 会话管理  --Cookie、URL重写、HttpSession对象
    request.getCookies() new Cookie(name,value) response.add(cookie)        cookie.setPath() cookie.setMaxAge() cookie.setValue()         cookie.getAttributeNames() removeAttribute()         request.getContextPath()    request.getSession() 
    response.encodeURL(contextPath+"/url2?name=张三&age=27");
    response.encodeURL("servletname")
    request.getSession()  session.setAttribute(name,value);
    session.getAttribute(name); 浏览器一关session就结束。


3.7 servlet上下文  --ServletContext对象
    ServletConfig.getServletContext() 
    Enumeration ServletContext.getInitParameterNames()
    ServletContext.getInitParameterName(name)
    ServletContext.getAttribute() .getAttributeNames() 
    .removeAttr... .setAttr...


   一个web project可能有多个servlet,但每个servlet有各自的<init-param>:
    <context-param>
      <param-name>xxx
      <param-value>xxx
    </context-param>
    <servlet>
      <init-param>
         <param-name>xxx
         <param-value>xxx
      </init-param>
      ... ...
    </servlet>
    <servlet>
      ... ...
    </servlet>
    ... ...
   
3.8 servlet间协议  --RequestDispatcher对象
    if(userID.equals("guest")&&......){
    RequestDispatcher dispatcher = getServletConfig().
    getServletContext().getRequestDispatcher("/mapping url")
    dispatcher.forward(request.response)
    }else{   RequestDispatcher dispatcher=get......;
             dispatcher.forward(request.response);   }


    
3.9 servlet Filter
    import javax.servlet.Filter 、FilterChain 、FilterConfig;
    public class IPFliter implements Filter{...
    必须重写下面3个方法:
    doFilter(ServletRequest req,ServletResponse res,FilterChain chain){
      if....else{chain.doFilter(req,res);//沿过滤链传下去} }
    init(FilterConfig)
    destroy()
    
    <filter>
       <filter-name>xxx
       <filter-class>xxx
       <filter-name>YYY
       <filter-class>YYY
    </filter>
    <filter-mapping>
       <filter-name>xxx
       <filter-pattern>/xxx
       <filter-name>YYY
       <filter-pattern>/YYY
    </filter-mapping>




------------------------------------------------------------JSP---------------------------------
    
4.1 概述 
4.2 第一个jsp 
4.3 jsp脚本元素  --<% Java代码块 %>
    输出表达式:<%=表达式%>(决不能以;结尾)  如:<h<%=i%>>你好</h<%=i%>>
    <%@ page language="java" pageEncoding="gb2312" %>
    <%@ page contentType="text/html;charset=gb2312" %>
    <!-xx客户端能看到x->  <%--xxx--%>
    声明变量:用于定义特定于 JSP 页面的变量,声明的变量成了 JSP 页面转                换到的 Servlet 类的成员变量,可以被该JSP页面中其他任何部                分使用。 
            <%!声明代码%>   <%!int i=0; %>作用域为整个页面
    声明方法:声明的方法在JSP页面有效,它编译成Servlet 类的成员方法。可              以由页面上所有脚本元素访问。                                        <%!String sayHello(){ return "Hello"; }%> <%=sayHello()%>
    声明类:声明类是JSP页面对应的Servlet类的内部类,页面上所有脚本元素            都可以创建该类的对象。
            <%!public class Hello{ ...}%>
            <% Hello a=new Hello(false);%> <%=a.sayHello()%>
    注:<%!声明%>    <%脚本%>
        JSP声明中定义的变量是全局的,脚本程序中定义的变量是局部的
        
    
4.4 指令元素  --<%@ 指令名 属性=“属性值” %>
    page指令:属性:language import session errorPage contentType 
    include指令:<%include file="relative url"%>页面中嵌入页面


4.5 jsp动作组件  --<jsp:xxx>
    <jsp:include page="文件名">
    <jsp:forward page="网页名称">
    <jsp:param name=参数名,value=值>
         <jsp:include page="add.jsp">
            <jsp:param name="start" value="0">
            <jsp:param name="end" value="100" />
         </jsp:include> 然后可以在"add.jsp"里获取参数
         <jsp:forward page="wel.jsp">
            <jsp:param name="A" value="a">
         </jsp:forward>
    <jsp:plugin> <jsp:plugin type="applet/bean" code="Circle.class" >
    
4.6 jsp内置对象 request response out session application
                config pagecontext page exception 
    1.request对象:封装了客户端信息(向服务器提交请求)
    通过属性对象可传递任何类型的数据:
    request.setAttribute("name",arraylist) <jsp:forward page="rec.jsp">
    rec.jsp: ArrayList content=(ArrayList)request.getAttribute("name")
    注:setAttribute(name,value)中参数必须是可序列化的对象,基本类型no!


    2.response对象:封装了服务器响应信息(向客户端发起响应)
    常用方法:addCookie() addHeader(name,value) containsHeader(name)
              sendError(int sc) setHeader("Refresh","5")
              setContentType("Application/pdf")  sendRedirect(url)


    3.session对象:session.getAttribute(name) 
                   session.setAttribute(name,value) ,value可为集合对象


    4.application对象:代表运行在服务器上的Web应用程序,
      相当于ServletContext,除非服务器关闭,否则一直保存下去
    getAttribute(name) setAttribute(name,value) getAttributeNames()
    getInitParameter(name) getRealPath()


    5.out对象:浏览器需要显示的内容,文本一级的,可向客户端写一个由程序      动态生成的HTML文件
    print println flush


    6.exception对象:
      makeError.jsp:<%@ page errorPage="yichang.jsp" %>
      yichang.jsp:<%@ page isErrorPage="true" %> //必须有此page指令
      常用3方法:exception.getMessage()/printStackTrace()/toString()




------------------------------------------------------JavaBean----------------------------------
    
5.1 java bean原理与应用 
  符合以下规则的任何Java类都是一个JavaBean:
     1.每个可读属性,必须有public proptype getProperty(){... }
     2.每个可写属性,必须有public void setProperty(proptype x){... }
     3.定义一个不带参数的构造方法


5.2 javabean和jsp的结合 
 定义了一个javabean:Student.java 
 成员变量:long classno,String name,int age,boolean sex,String major
    一、<jsp:useBean id="s1" class="包名.Student" scope="application"/>
        [相当于在jsp页面全局Student s1=new Student();都可用s1实例了。]
    其中,id:唯一标志一个javabean;(可当作类的实例看待)
       class:说明javabean的类型;(即,类名)
       scope:声明javabean的作用域。
    二、<jsp:getProperty name="beanId" property="propertyName" />
     如:<jsp:getProperty name="s1" property="name" />
         等价于 <%=s1.name %>
    三、<jsp:setProperty name="s1" property="classno" value="56789" />
    注:<jsp:get/setProterty...都是通过javabean的get/set方法完成功能的


    通过请求参数来给JavaBean的属性赋值:
    input.html:<form action="param.jsp">
               <input type="text" name="userName">
    param.jsp:<jsp:useBean id="s2" scope="page" class="包名.Student" />
         <jsp:setProperty name="s2" property="name" param="userName" />
         注:用param属性,就不能用value属性了。
---------------------------------------------------------------------------------------------------- ----------------------------------





















原创粉丝点击