zoukankan      html  css  js  c++  java
  • jsp学习笔记

     

    1.Jsp基本指令:

    <%存放标准Java程序代码%>

    <%!变量、方法和类别宣告区(Declarations)%>(声明全局变量)

    <%=输出表示式%>

    <%=foo%> ?在页面上显示变量foo的值

    <%--批注区--%>

    <%@编译指令  属性=属性值%>

    编译指令:page、include、taglib

     

     

    2.常用Jsp编译指令:

    <%@ page import=java.io.*,java.sql.* %>

    import其它的package,可以用,分开不同的package ,或写2个<%@ page import= %>

    <%@ page contentType=text/html; charset=GBK %>

    设定目前本页的档案内容格式,及用何种编码

    <%@ include file=/erp/jsp/dzjjmenu.jsp %>

    引用其它的jsp file,在转成servlet code的时候,会把这file的内容也include进来最后只会转成一个servlet class.

     

    3.Request Object - a

    每支Jsp会自动产生request的object - javax.servlet.http.HttpServletRequest,此object主要用作传递client的一些information.例如:已填写好的表单数据。Server处理client的数据(如会员登录)都是透过此object来取得数据。

    取得方式:

    例如网页中有一个

    <input type=text name=myName value=InfoChamp>的录入字段,表单经submit送至server处理时,处理的Jsp需要用String aa = request.getParameter(myName)  ;

            (aa is just a name and will be equal to InfoChamp)

     

    getParameterValues(String name) 取得相同名称的字段数据,所有结果会保存在一个String[]中。

     

     

     

     

     

     

     

    Jsp&Servelet 学习笔记(1)

    1.1    写出一个 servelet 程序

    1.2    写出一个 Jsp程序

    1.3    编译一个 Servlet 程序

    1.4    打包一个Servlets 和 Jsps程序

    1.5    构建一个部署描述器

     

     

    1.1    写出一个 servelet 程序

     

    问题

    你想写一个servlet作为一个web应用程序

    解决方案

    写一个java class 从 javax.servlet.http.HttpServlet.继承。首先必须倒入一个类包servlet.jar。你将需要里面的类库来编译这个servlet程序。

    讨论

    一个servlet程序就是一个java类,用于响应客户端通过网络请求的动态内容。如果你熟悉(CGI)程序,那么java技术的servlets完全能取代CGI程序。通常称为一个web 组件,一个servlet 程序在一个运行环境执行将被提供一个servles容器比如 tomcat和bea weblogic.

    注释:一个web容器能够被

    Servlets被安装在一个web容器中作为一个web应用程序的一部分。这个应用程序将包含 WEB资源。像HTML页面,图片,多媒体片断,servlets, jsps,xml 配置文件,java运行类和类库当一个web应用程序部署到一个web容器里,这个容器将产生和装载这个java servlet类的实例到JVM去处理对于servlet的请求。

    所有的servlet继承 javax.servlet.Servlet接口。开发Web应用的程序员特别的写了一个servlet

    继承于javax.servlet.http.HttpServlet,一个抽象类实现了Servlet接口并且它是特别为处理HTTP请求设计的。

    当一个web容器产生一个servlet实例时,它的基本顺序如下:

    1、 servlet容器首先调用这个servlet的init()方法,它建会初始化一个资源给servlet使用。列如一个logger。这个init()方法在整个servlet的生存周期只会被调用一次。

    2、 init()方法初始化了一个对象,对象继承了java.servlet.ServletConfig接口。这个对象使servlet能够初始化那些被声明在部署描述符的参数。ServletConfig也使servlet有权使用一个 javax.servlet.ServletContext 的对象,用这个对象servlet可以记录信息,分派请求到其他的web组件上并且能够使用在同一个应用上的其他web资源。

    3、 servlet容器调用这个servlet的service()方法去响应servlet的一些请求。根据HttpServlets,service()自动的调用合适的HTTP方法去处理请求通过调用servlet的doGet()或者doPost()方法。几个例子,用户发送了个Post请求这时servlet通过doPost()方法的执行来响应这个请求。

    4、 当调用两个主要的HttpServlet的doPost(),doGet()方法,这个servlet容器将产生javax..servlet.http.HttpServletRequest和HttpServletResponse 的对象并且把它们作为参数传到这些处理请求的方法中。

    http://www.knowsky.com/

    5、 管理一个servlet的生命周期,或者决定这个servlet实例对request请求的处理,在java虚拟机上的存在时间。当一个servlet容器开始移除一个servlet的时候将调用servlet的destroy()方法,在这个方法中能够释放所有的资源,比如一个数据库连接。

    Example  A typical HttpServlet

     

     package com.mydev;  

     import java.io.IOException; import java.io.PrintWriter;  

     import java.util.Enumeration; import javax.servlet.ServletException;

     import javax.servlet.http.HttpServlet;

     import javax.servlet.http.HttpServletRequest;

     import javax.servlet.http.HttpServletResponse;

     //必须继承HttpServlet接口

     public class FirstServlet extends HttpServlet ...{    

             public void doGet(HttpServletRequest request,     HttpServletResponse response) throws ServletException, java.io.IOException ...{       

          //set the MIME type of the response, "text/html" 

            response.setContentType("text/html");   

          //use a PrintWriter to send text data to the client who has requested the 

         //servlet 

           java.io.PrintWriter out = response.getWriter( );  

        //Begin assembling the HTML content    out.println("<html><head>");   

            out.println("<title>Help Page</title></head><body>"); 

            out.println("<h2>Please submit your information</h2>");   

        //make sure method="post" so that the servlet service method

        //calls doPost in the response to this form submit 

             out.println(        "<form method="post" action ="" + request.getContextPath( ) +            "/firstservlet" >"); 

             out.println("<table border="0"><tr><td valign="top">"); 

             out.println("Your first name: </td> <td valign="top">"); 

             out.println("<input type="text" name="firstname" size="20">"); 

             out.println("</td></tr><tr><td valign="top">"); 

             out.println("Your last name: </td> <td valign="top">"); 

             out.println("<input type="text" name="lastname" size="20">"); 

             out.println("</td></tr><tr><td valign="top">"); 

             out.println("Your email: </td> <td valign="top">"); 

             out.println("<input type="text" name="email" size="20">"); 

             out.println("</td></tr><tr><td valign="top">"); 

             out.println("<input type="submit" value="Submit Info"></td></tr>"); 

             out.println("</table></form>");    out.println("</body></html>");   

       }

    //doGet

        public void doPost(HttpServletRequest request,     HttpServletResponse response) throws ServletException,    java.io.IOException   ...{    

        //display the parameter names and values 

            Enumeration paramNames = request.getParameterNames( );  

            String parName;

           //this will hold the name of the parameter   

             boolean emptyEnum = false; 

            if (! paramNames.hasMoreElements( ))  

            emptyEnum = true;      

               //set the MIME type of the response, "text/html" 

            response.setContentType("text/html");    

             //use a PrintWriter to send text data to the client 

            java.io.PrintWriter out = response.getWriter( );    

             //Begin assembling the HTML content 

            out.println("<html><head>"); 

            out.println("<title>Submitted Parameters</title></head><body>");   

              if (emptyEnum)  ...{  

                    out.println(           "<h2>Sorry, the request does not contain any parameters</h2>");

              } else   ...{  

                            out.println(        "<h2>Here are the submitted parameter values</h2>");  

              }    

              while(paramNames.hasMoreElements( ))  ...{     

                      parName = (String) paramNames.nextElement( );    

                      out.println(            "<strong>" + parName + "</strong> : " +                request.getParameter(parName));   

                     out.println("<br />");  

              }//while     

             out.println("</body></html>");  

             }

     // doPost

     }

     

    你有可能注意到doGet()和doPost()每个将抛出ServletException和IOException.那是因为response.getWriter()将会抛出IO异常。

     

    http://blog.csdn.net/bruceleey/archive/2007/02/07/1503843.aspx

     

    Jsp&Servelet 学习笔记(2)

     

     

    1.2第一个jsp程序介绍:

     

    1、    打开一个文本编辑器,或者一个jsp专用的文本编辑器能标出一些语法的高亮。

    2、    如果你编写一个jsp来处理http请求那么。将会和编写html文件一样。

    3、    一个jsp文件如果要包含一些Jsp命令(列如一个taglib)的话要在文件开头写上<%@%>

    4、    你可以在你需要的地方输入一个普通的表单提交或者用户标签。

    5、    保存文件时以.jsp为扩展名进行保存。在一个web应用中放在整个目录的顶层。既放在

    Web-info同级目录下。

     

    Example :

    // 表示注释内容 <%-- --%>

    <%-- use the 'taglib' directive to make the JSTL 1.0 core tags available; use the uri "http://java.sun.com/jsp/jstl/core" for JSTL 1.1 --%>//使用c:out标签http://www.knowsky.com/

    <%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>

    <%-- use the 'jsp:useBean' standard action to create the Date object; the object is set as an attribute in page scope --%>//在jsp中使用javabean指明其(id)对象和(java.util.Date)类.

    <jsp:useBean id="date" class="java.util.Date" /> <html><head><title>First JSP</title></head><body><h2>Here is today's date</h2>//使用表达式输出${data}

    <c:out value="${date}" /> </body></html>

    http://blog.csdn.net/bruceleey/archive/2007/02/07/1503844.aspx

     

     

     

    Jsp&Servelet 学习笔记(3)

    1.3 编译一个servlet

      你如果写好了一个servlet你现在想把它编译成一个class文件该如何操作;

    首先你要确认servlet-api.jar是不是配置到你的classpath之下。然后你可以像编译其他java源文件一样用javac 命令进行编译;(注意:一个servlet必须打包并且放置在classpath之下)

    · Tomcat 5 支持 servlet API 2.4;  jar文件所在路径:

    <Tomcat-5-installation-directory>/common/lib/servlet-api.jar.

    · 编译一个servltet需要导入 javax.servlet javax.servlet.http包

     

     

    对于一个BEA WebLogic 7.0 servlet也许将用到javax的子包比如 javax.ejb, javax.mail , javax.sql 以上这些包将在<WebLogic-installation-directory>/weblogic700/server/lib/weblogic.jar 下

    例如:javac -classpath K:/tomcat5/jakarta-tomcat-5/dist/common/lib/servlet-api.jar    -d ./build ./src/FirstServlet.java

     

     

     

    Jsp&Servelet 学习笔记(4)

    1.4打包发布servlets和jsp程序

     

    先建立一个目录结构。然后你就可以使用 jar工具或者Ant来创建一个War文件。

     

    /mywebapp

        /images

        /WEB-INF

            /classes

            /lib

    一个servlet规范指定包含一个WEB-INF目录,在这之下有两个子目录classer和lib目录 WEB-INF包含了一个web应用程序的部署描述文件。叫做web.xml。jsp和htm文件将会放到/mywebapp之下。

    Servlets 和JavaBeans 将放到classes目录下。

    例如:com.mydev.MyServlet, 这个servlet 类 必须在 WEB-INF/classes/com/myorg/MyServlet.class 下.

     

    Lib文件夹将包含web应用其他的一些需要的jar包。比如log4j.jar、数据库的连接驱动、jstl

    等等…..

    ·进入根目录之下:jar cvf mywebapp.war .  不要遗忘了最后这个点(.)

    ·解包命令:jar tvf xxxx.war

    http://blog.csdn.net/bruceleey/archive/2007/02/07/1503848.aspx

     

     

    Jsp&Servelet 学习笔记(5)

    1.5创建一个部署描述文件

     

    ·为你的servlets注册并且创建一个url mapping

    ·注册并指定应用中的监听器和过滤器

    ·指定上下文中的初始化参数。

    ·配置错误页,和欢迎页

    ·配置seeion 超时

     <?xml version="1.0" encoding="ISO-8859-1"?>

    <!DOCTYPE web-app    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"  "http://java.sun.com/dtd/web-application_2_3.dtd">

    <web-app> 

         <display-name>Servlet 2.3 deployment descriptor</display-name>

         <filter>

             <filter-name>RequestFilter</filter-name>

             <filter-class>com.mydev.RequestFilter</filter-class>

         </filter>

         <filter-mapping> 

            <filter-name>RequestFilter</filter-name> 

            <url-pattern>/*</url-pattern>

         </filter-mapping> 

         <listener>  

            <listener-class>com.mydev.ReqListener</listener-class>

         </listener>

         <servlet>

            <servlet-name>MyServlet</servlet-name> 

            <servlet-class>com.mydev.MyServlet</servlet-class>

          </servlet> 

          <servlet-mapping> 

             <servlet-name> MyServlet </servlet-name>  

             <url-pattern>/myservlet</url-pattern> 

          </servlet-mapping>

          <session-config> 

             <session-timeout>15</session-timeout>

             </session-config>  <error-page> 

          <error-code>404</error-code> 

              <location>/err404.jsp</location>

          </error-page>

    </web-app>

    http://blog.csdn.net/bruceleey/archive/2007/02/07/1503854.aspx

     

     

     

     

     

     

     

    --------------------------------------------------------------------------------------------------

     

     

     

     

     

    第一部分为Servlet技术,包括Servelt入门,会话跟踪,JavaMal和Servlet.第二部分就是Jsp技术,包括:jsp简介,jsp脚本和指令的使用,jsp隐式对象,JavaBean与jsp中的标准动作,jsp表达式语言,自定义标签,jsp自定义表签库.第三部分就是过滤器的设计模式,包括过滤器和MVC设计模式.

     

        一.Servlet知识及常见错误和规律.

     

    1.桌面运行程序与WEB应用程序在过程实质是一样的---基于请求与响应的过程.

    2.http协议(超文本传输协议)

      1).无状态:多次请求信息之间无联系.

      2).用于internet发送请求和响应消息

      3).使用端口接收和发送消息,默认为80端口.

    端口:为内存缓冲区(多线程接收数据)

    windows: 0---65535端口

      0---4096为系统端口

    3.什么是Servlet?

      Server let服务器端小程序.

      用来处理客户端发送的请求,并由服务器响应给客户端的java编写的程序.

      Servlet只在服务器运行

     

    4.Servlet详解:

    import java.io.*;

    import javax.servlet.*;

    import javax.servlet.http.*;

    import java.util.*;

    public class MyServlet extends HttpServlet

    {

              public void doGet(HttpServletRequest request,HttpServletResponse response)

                            throws ServletException,IOException

              {

                           response.setContentType("text/html;charset=gb2312");

                           request.setCharacterEncoding("gb2312");

     

                            response.sendRedirect("Login.jsp"); //重定向方法

                            request.getParameter("");  //读取客户端数据

     

                           / /以下方法为转发,不同于重定向的是:转发时数据不丢失.

                          ServletContext context=this.getServletContext();

                          RequestDispatcher dispatcher=context.getRequestDispatcher("/welcome.jsp");

                          dispatcher.forward(request,response);

     

                          ...//以下方法为包含(用得相对较少)

                         dispatcher.include(request,response);

     

              }

             public void doPost(HttpServletRequest request,HttpServletResponse response)

                            throws ServletException,IOException

             {

                         doGet(request,response);

             }

    }

     

     (2).当需要向Servlet传递参数的时候,Src="Servlet?name=' '  ";

     

    5.执行servlet时,发生下载提示:

     

    (1).可能性一:text/html;charset=GBK中间分号写成逗号.

    (2).可能性二:XML中配置信息出错.

    (3).可能性三:如定义全局变量时,例:CONTENT_TYPED在以后所用中放在双引号之中.

    (4).可能性四:当上面的text/html,charset中写错字符的时候,也会提示下载.

     

    6执行servlet时,发生404错误:

     

    (1).多为xml中配置出错.

    (2).可能在servlet通信方法中url出错.

    (3).表单提交时:action路径.

    (4).比较弱智的错误就是标记写错,请仔细检查.

     

    7.执行servlet时,发生403错误:

     

    (1).tomcat下站点里发生错误.

     

    8.执行servlet时,发生405错误:

     

    (1).servlet中没有post提交方法时.

     

    95.执行servlet时,发生500错误:

     

    (1).多数为servlet程序代码中发生异常错误.

     

    10.执行时,取出的数据为null.就要根据实际情况对应错误提示去找.

     

    11.执行jsp页时,发生500错误提示....

      

            多数为jsp页面在转译过程中发生编译错误! 甚是严重错误,可以按提示回头去找...

     

     

    二.XML配置

     

    <!--config中的配置信息,当中配置需要在servlet中的xml中-->

    <servlet>

     <init-param>

      <param-name>sess</param-name>

      <param-class>com.serv<param-class>

     </init-param>

        <servlet-name>Myservlet</servlet-name>

        <servlet-class>com.Myservetl</servlet-class>

    </servlet>

     

    <!--此为对Myservlet进行映射-->

    <servlet-mapping>

     <servlet-name>Myservlet</servlet-name>

     <servlet-class>/url</servlet-class>

    <servlet-mapping>

     

    <!--context中配置信息-->

    <context-param>

     <param-name>ses</param-name>

     <param-class>com.ser</param-class>

    </context-param>

     

     

    注意:配置信息只能读取,并且config是在单个Servlet中能访问,context是全局访问

     

    三.

    ========================会话跟踪技术总结========================

     

    用户授权.

    隐藏表单域

    URL重写

    Cookie使用

    --------------------------------------------------------------------------------------------

    1.会话:是同一客户端和服务器之间在同一段时间的多次请求和响应.

     

    2.Session使用(重点)

     

      HttpSession session=request.getSession();

      session.setAttribute("name",Object); //附值

      session.getAttribute(); //取值

      session.removeAttributer();

     

    3.Cookie(类)

     1).Cookie是什么?

          cookie是一段字符串,由HTTP支持,在客户端可以永久保存.写入(硬盘).

          每次请求,响应中都会为cookie留有空间.

     2).用法:

            Cookie cookie=new Cookie("name",cookie); //必须指定cookie的键与值,且必须为字符串.

            response.addcookie(cookie);

            cookie.setMaxAge(3600);  //以秒为单位.

     

     //读取客户端发送过来的cookie,返回值类型为: cookie数组

     request.getCookies();

     //循环读取键与值.

     

       使用过程:(1).生成cookie, new cookie("","")

       (2).设置生存周期 >0,SetMaxAge(秒).

       (3).发送到客户端:response.addCookie(cookie);

     

    小常识:(1).一个网站最多向一个客户端写20个cookie.

                 (2).一个客户端最多接收300个cookie.

     

    4.Session与Cookie这间的关系:

    session的ID作为Cookie的值在客户端与服务器之间进行传递.

    --------------------------------------------------------------------------------------------

     

    四.构建实体Bean的原则:

     

    /*

     *  1.bean类为公有

     *  2.类成员为私有

     *  3.必有一个无参构造

     *  4.有set()和get()方法

     *  5.方法命名为setXxx()或getXxx()方法

    */

     

     

    五.MVC实现数据封装

     

    此数据封装标准按MVC总结.

     

    所需内容: 1.Servlet 2.JavaBean 3.OperBean(DBconnection) 4.Jsp

     

      由Servlet提取前台数据,然后将数据封装于JavaBean中,再实例化OperBean,调用OperBean中方法,

    将JavaBean对象以参数的形式传过去,并进行一系列的操作后,返回数据存入ArrayList中或者其它集合内,并将集合对象封装Session对象中,便于在前台取值.

     

    Servlet控制:

     

      ........

     Arraylist lis=new ArrayList();

     

     String name=request.getParameter("username");

     

     JavaBean bean=new JavaBean();

     bean.setName(name);

     

     OperBean oper=new OperBean();

     lis=oper.operMethod(bean);

     

     HttpSession session=request.getSession();

     session.setAttribute("list",lis);

     

    OperBean逻辑:

     ...

     public ArrayList OperMethod(JavaBean bean)

     {

      ArrayList lis=new ArrayList();

      String usr=bean.getName("name");

     

      String sql="select * from student where name='"+usr+"'";

     

      DBconnection db=new DBconnection();

      ...//操作数据业务

     

      return lis;

     }

     

    前台业务:

     ...

     ArrayList list=(ArrayList)session.getAttribute("lis");

     Iterator ite=list.iterator();

     while(ite.harNext())  //遍历输出

     {

      JavaBean bean=(JavaBean)ite.next();

      .

      //取bean中值

     }

     

     

    //由此可以进行"用户登陆","数据的增删改查","注销登陆"等操作.....

     

     

    文章来源: 动态网站制作(www.knowsky.com) 出处:http://www.knowsky.com/343935.html

     

  • 相关阅读:
    (转)树状数组
    poj 3041 Asteroids(二分图最小顶点覆盖)
    poj 2513 Colored Sticks
    (转)优先队列的用法 附:poj2442 poj1442
    poj 1094 Sorting It All Out (拓补)
    poj 3026 Borg Maze(bfs+最小生成树)
    poj 3349 Snowflake Snow Snowflakes
    poj 3020 Antenna Placement(二分图的最大匹配)
    mysql explain
    php strtotime
  • 原文地址:https://www.cnblogs.com/yefengmeander/p/2887929.html
Copyright © 2011-2022 走看看