• Servlet


    1、Applet是由Java语言编写的小应用程序,可以包含在HTML页面中,用<applet></applet>来标记。

    2、Applet工作原理

      当浏览器遇到<applet></applet>这样的标签的时候,就会处理Applet程序,但前提是浏览器是支持Java的。

      当用户访问这样的网页的时候,Applet应用程序是被下载到客户的本地计算机内的,然后再执行。

      Applet具有设计精美用户界面的优势。

      Applet有很大的安全限制。

    3、Servlet是在服务器上运行的小程序,而Applet是随着网页一起打包到客户端,在客户端上执行。由于是在服务器端运行,所以可以用java语言来实现,在通信量大的情况下,javaServlet的执行速度是快于CGI(公共网关接口)的。

    4、最早支持Servlet的是JSP,后来很多技术都支持了Servlet API接口,Servlet可以交互式地浏览和修改数据。

    5、Servlet的实现过程

      客户端发送请求到服务器端;

      服务器将请求发给Servlet;

      Servlet生成相应内容并将响应内容发送给服务器;

      服务器将响应返回给客户端。

    6、Servlet只初始化一次,因为只有一个对象。

    7、Servlet和Applet的相同的和不同点:相同点是他们都不是独立的应用程序,没有main()主函数,它们都是被另外的程序(容器)调用的,不同点是Servet没有图形用户界面,在服务器端运行,而Applet有很好的图形用户界面并且与浏览器在客户端运行。

    8、Servlet和CGI:前者比后者有更好的性能、移植性和经济性。

    9、Servlet常见的容器:Apache、Websphere等等,提供Servlet功能的服务器叫Servlet容器。容器好比是桌面应用程序对于的操作系统一样。

    10、Servlet与JSP:Servlet是一句一句地输出HTML语句,而JSP像PHP,ASP那样是镶嵌型的语言。Servlet方便与写业务层,而JSP方便于写表现层。一般,JSP只用于写表现层的东西,而业务层的东西用javaBean来写。可以说JSP是Servlet的替代方案,但一般的学习者还是需要从Servlet开始学,然后学JSP,最后是JSP+BEAN。

    11、Servlet可以方便地对Web中的HTTP请求进行处理,Servlet主要用于处理各种业务逻辑。Servlet主要应用与B/S结构的开发中。通常情况下我们编写的Servlet对象都继承于HttpServlet。

    12、创建Servlet有两种方法:一是创建一个Java类,然后实现Servlet接口或者继承于Servlet接口的实现类(HttpServlet)来实现;另一种是通过IDE集成开发环境。继承HttpServlet实现的Servlet对象重写了HttpServlet类中的部分方法。

    13、创建Servlet后还需要对其进行配置,目的是将创建的Servlet注册到Servlet容器之中,以方便Servlet容器对Servlet的调用。Servlet3.0及以后版本中可以在web.xml和注解中配置。前者需要自己配置,后者在Eclipse下自动完成配置。前者如下:

    <!--注册Servlet-->
    <servlet>
        <!--Servlet描述信息-->
        <description>This is my first Servlet</description>
        <!--Servlet的名称-->
        <servlet-name>FirstServlet</servlet-name>
        <!--Servlet类的完整类名-->
        <servlet-class>com.joeshine.FirstServlet</servlet-class>
    </servlet>
    <!--Servlet映射-->
    <servlet-mapping>
        <!--Servlet名称-->
        <servlet-name>FirstServlet</servlet-name>
        <!--访问URL地址-->    
        <url-pattern>/FirstServlet</url-pattern>
    </servlet-mapping>

    14、在Servlet中实现页面转发:利用RequestDispatcher接口实现。该接口有两个方法:

      forward()方法:用于将请求转发到服务器上的另一个资源,可以是Servlet、JSP或HTML;

      include()方法:用于把服务器上的另一个资源(Servlet,JSP,HTML)包含到响应中。

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // TODO Auto-generated method stub
            RequestDispatcher requestdispatcher=request.getRequestDispatcher("main.jsp");
            requestdispatcher.forward(request, response);
        }

    15、用Servlet处理表单数据

    ServletFormDeal.java文件

     1 package com.joeshine;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 import javax.servlet.ServletException;
     6 import javax.servlet.annotation.WebServlet;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 /**
    12  * Servlet implementation class ServletFormDeal
    13  */
    14 @WebServlet("/ServletFormDeal")
    15 public class ServletFormDeal extends HttpServlet {
    16     private static final long serialVersionUID = 1L;
    17        
    18     /**
    19      * @see HttpServlet#HttpServlet()
    20      */
    21     public ServletFormDeal() {
    22         super();
    23         // TODO Auto-generated constructor stub
    24     }
    25 
    26     /**
    27      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    28      */
    29     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    30         // TODO Auto-generated method stub
    31         request.setCharacterEncoding("UTF-8");        //设置请求编码,防止中文乱码
    32         String person=request.getParameter("person");    //获取留言人
    33         String content=request.getParameter("content"); //获取留言内容
    34         response.setContentType("text/html;charset=utf-8");//设置内容类型
    35         PrintWriter out=response.getWriter();            //创建输出流
    36         out.println("<html><head><title>获取留言信息</title></head><body>");
    37         out.println("留言人:&nbsp;"+person+"<br><br>");
    38         out.println("留言内容:"+content+"<br><br>");
    39         out.println("<a href='index.jsp'>返回</a>");
    40         out.println("</body></html>");
    41         out.close();                                  //关闭输出流
    42     }
    43 
    44 }

    index.jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>用Servlet处理表单信息</title>
    </head>
    <body>
    <form name="form1" method="post" action="ServletFormDeal">
    留言人:&nbsp;<input type="text" name="person"><br><br>
    留言内容:<textarea name="content" rows="6" cols="30" ></textarea><br><br>
    <input type="submit" name="submit1" value="提交">
    <input type="reset" name="submit2" value="重置">
    </form>
    </body>
    </html>

    16、Servlet过滤器:它和Servlet十分相似,是针对客户端(浏览器)请求资源而言的。它主要是将客户端(浏览器)的请求进行过滤后转交给下一个资源。其实质上就是在Web应用服务器上的Web应用组件,用于拦截客户端(浏览器)和目标资源的请求。过滤器可以有多个构成过滤器链,通过层次请求转交后达到目标资源,然后层层响应传到客户端。

    17、过滤器的核心对象:过滤器的对象都放在javax.servlet包中,Filter接口对象、FilterConfig接口对象、FilterChain接口对象。每一个过滤器都要直接或间接地实现Filter接口对象,其包括三个方法init()初始化过滤器、doFilter()对请求进行过滤处理、destroy()销毁方法;FilterConfig对象由Servlet容器实现,主要用于获取过滤器中的配置信息,其有四个方法;FilterChain接口对象也由Servlet容器实现,其只有一个方法,就是将过滤后的请求传递给下一个过滤器。

    18、过滤器的创建和配置,类似于Servlet

     1 package com.joeshine;
     2 //过滤器的创建和配置
     3 import java.io.IOException;
     4 import javax.servlet.Filter;
     5 import javax.servlet.FilterChain;
     6 import javax.servlet.FilterConfig;
     7 import javax.servlet.annotation.*;
     8 import javax.servlet.ServletException;
     9 import javax.servlet.ServletRequest;
    10 import javax.servlet.ServletResponse;
    11 import javax.servlet.annotation.WebFilter;
    12 
    13 /**
    14  * Servlet Filter implementation class FirstFilter
    15  */
    16 /*过滤器的配置代码,filterName属性是指定Servlet过滤器名,urlPatterns属性用于指定哪些URL应用该过滤器,
    17 ,如果所有页面均使用则设为"/*",iniParams属性用于指定初始化参数。这些属性不是必须的,可以在需要的时候选择使用
    18 */
    19 @WebFilter(filterName="/FirstFilter",
    20 urlPatterns={"/*"},
    21 initParams={@WebInitParam(name="mood",value="awake")})
    22 public class FirstFilter implements Filter {
    23 
    24     /**
    25      * Default constructor. 
    26      */
    27     public FirstFilter() {
    28         // TODO Auto-generated constructor stub
    29     }
    30 
    31     /**
    32      * @see Filter#destroy()
    33      */
    34     public void destroy() {
    35         // TODO Auto-generated method stub
    36     }
    37 
    38     /**
    39      * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
    40      */
    41     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    42         // TODO Auto-generated method stub
    43         // place your code here,放置过滤器代码的地方
    44 
    45         // pass the request along the filter chain
    46         chain.doFilter(request, response);
    47     }
    48 
    49     /**
    50      * @see Filter#init(FilterConfig)
    51      */
    52     public void init(FilterConfig fConfig) throws ServletException {
    53         // TODO Auto-generated method stub
    54     }
    55 
    56 }

    19、使用过滤器实现网站访问次数的功能

    CountFilter.java

     1 package com.joeshine;
     2 //创建CountFilter类过滤器,实现javax.servlet.FilterJiek ,用于实现统计网站访问人数
     3 import java.io.IOException;
     4 import javax.servlet.annotation.*;
     5 import javax.servlet.ServletContext;
     6 import javax.servlet.FilterChain;
     7 import javax.servlet.FilterConfig;
     8 import javax.servlet.ServletException;
     9 import javax.servlet.ServletRequest;
    10 import javax.servlet.ServletResponse;
    11 import javax.servlet.annotation.WebFilter;
    12 
    13 /**
    14  * Servlet Filter implementation class Filter
    15  */
    16 //在过滤器配置信息里初始化count计数器参数,保证过滤器编译后count还可以更改
    17 @WebFilter(filterName="/Filter",
    18         urlPatterns="/index.jsp",
    19         initParams={
    20                 @WebInitParam(name="count",value="3000")
    21 })
    22 public class CountFilter implements javax.servlet.Filter {
    23 
    24     /**
    25      * Default constructor. 
    26      */
    27     //定义一个计数器变量
    28     private int count;
    29     public CountFilter() {
    30         // TODO Auto-generated constructor stub
    31     }
    32 
    33     /**
    34      * @see Filter#destroy()
    35      */
    36     public void destroy() {
    37         // TODO Auto-generated method stub
    38     }
    39 
    40     /**
    41      * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
    42      */
    43     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    44         // TODO Auto-generated method stub
    45         //doFilter方法拦截客户端的请求
    46         // place your code here
    47         //计数器自加运算
    48         count++;
    49         //用FiterConfig的获取过滤器
    50         ServletContext context=request.getServletContext();
    51         //将来访数量值放入ServletContext中
    52         context.setAttribute("count", count);
    53         //向下传递过滤器
    54         // pass the request along the filter chain
    55         chain.doFilter(request, response);
    56     }
    57 
    58     /**
    59      * @see Filter#init(FilterConfig)
    60      */
    61     public void init(FilterConfig fConfig) throws ServletException {
    62         // TODO Auto-generated method stub
    63         //获取初始化参数
    64         String param=fConfig.getInitParameter("count");
    65         //将字符串转换为Int型
    66         count=Integer.valueOf(param);
    67     }
    68 
    69 }

    index.jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>Insert title here</title>
    </head>
    <body>
    <h2>
        欢迎光临,<br>
        您是本站的第【<%=application.getAttribute("count") %>
        】位访客!
    </h2>
    </body>
    </html>

    20、Servlet监听器:Servlet监听器和Servlet过滤器的很多特性是一致的,甚至与过滤器的很多概念也是一致的。监听器的作用是坚挺Web容器的有效期事件,因此它是由容器管理的。Servlet和JSP中有8个Listener接口和6个Event类。功能是监听由于Web应用中状态改变而引起的Servlet容器产生的相应事件,然后接受并处理这些事件。

    21、Servlet监听器分为几大类

      1)  Servlet上下文监听可以监听ServletContex对象

        ServletContextListener接口:该接口存放在javax.servlet包中,主要监听ServletContext对象的创建和删除,它提供两个方法,参数是Event类,称为“Web应用程序的生命周期方法”。

        ServletAttributeListener接口:存放在javax.servlet包中,主要监听ServletContext属性的增加、删除、修改。该接口提供了三个方法,参数是Event类。

      2)   HTTP会话监听:主要用于监听信息。4个接口可以使用。

        HttpSessionListener接口:用于监听HTTP会话的创建、销毁。提供了两个方法,参数是HttpSessionEvent类。

        HttpSessionActivationListener接口:用于监听HTTP会话active、passivate的情况。提供了三个方法,参数是HttpSessionBindingEvent类,该类有三个方法。

        HttpBindingListener接口:用于监听HTTP会话中对象的绑定信息,它是唯一一个不需要在web.xml中设定Listener的。提供两个方法,参数是HttpSessionBindingEvent类。

        HttpSessionAttributeListener接口:用于监听HTTP会话中属性的设置请求。提供两种方法,参数是HttpSessionEvent类。

      3)  HTTP请求监听:监听客户端的请求,一旦可以在监听程序中获取客户端的请求,就可以对请求统一处理。

        ServletRequestListener接口:提供了两个方法;

        ServletRequestAttributeListener接口:提供了三种方法。

    22、Servlet监听器实例:统计在人数

    UserInfoList.java

     1 package com.joeshine;
     2 
     3 import java.util.Vector;
     4 
     5 public class UserInfoList {
     6     private static UserInfoList user = new UserInfoList();
     7     private Vector<String> vector = null;
     8 
     9     /*
    10      * 利用private调用构造函数, 防止被外界产生新的instance对象
    11      */
    12     public UserInfoList() {
    13         this.vector = new Vector<>();
    14     }
    15 
    16     /* 外界使用的instance对象 */
    17     public static UserInfoList getInstance() {
    18         return user;
    19     }
    20 
    21     /* 增加用户 */
    22     public boolean addUserInfo(String user) {
    23         if (user != null) {
    24             this.vector.add(user);
    25             return true;
    26         } else {
    27             return false;
    28         }
    29     }
    30 
    31     /* 获取用户列表 */
    32     public Vector<String> getList() {
    33         return vector;
    34     }
    35 
    36     /* 移除用户 */
    37     public void removeUserInfo(String user) {
    38         if (user != null) {
    39             vector.removeElement(user);
    40         }
    41     }
    42 }

    UserInfoTrace.java类

     1 package com.joeshine;
     2 
     3 import javax.servlet.http.HttpSessionBindingEvent;
     4 
     5 public class UserInfoTrace implements
     6         javax.servlet.http.HttpSessionBindingListener {
     7     private String user;
     8     private UserInfoList container = UserInfoList.getInstance();    //获得UserInfoList类的对象
     9 
    10     public UserInfoTrace() {
    11         user = "";
    12     }
    13 
    14     // 设置在线监听人员
    15     public void setUser(String user) {
    16         this.user = user;
    17     }
    18 
    19     // 获取在线监听
    20     public String getUser() {
    21         return this.user;
    22     }
    23     //当Session有对象加入时执行的方法
    24     public void valueBound(HttpSessionBindingEvent arg0) {
    25         System.out.println("[ " + this.user + " ]上线");
    26     }
    27     //当Session有对象移除时执行的方法
    28     public void valueUnbound(HttpSessionBindingEvent arg0) {
    29         System.out.println("[ " + this.user + " ]下线");
    30         if (user != "") {
    31             container.removeUserInfo(user);
    32         }
    33     }
    34 }

    index.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>用户登录</title>
    <script language="javascript">
        function checkEmpty(form) {
            for (i = 0; i < form.length; i++) {
                if (form.elements[i].value == "") {
                    alert("表单信息不能为空");
                    return false;
                }
            }
        }
    </script>
    <style type="text/css">
    section {
        margin:0 auto auto auto;            /*设置外边距*/
        width:363px;                        /*设置页面宽度*/
        clear:both;                        /*设置两侧均不可以有浮动内容*/
        background-image:url(images/login.png);            /*设置背景图片*/
        height:224px;                        /*设置高度*/
    }
    form{
        padding-left: 80px;        /*设置左内边距*/
        padding-top: 120px;        /*设置上内边距*/
    }
    body{
        margin: 0px;
    }
    </style>
    </head>
    <body>
    <section>
    
     
      <form name="form" method="post" action="showuser.jsp" onSubmit="return checkEmpty(form)">
        <input type="text" name="user">
        <input type="submit" name="Submit" value="登录">
      </form>
    
    </section>
    </body>
    </html>

    logout.jsp

    <%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
    <%
             session.invalidate();
     out.println("<script>parent.location.href='index.jsp';</script>");
    %>

    showUser.jsp

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <%@ page import="java.util.*"%>
    <%@ page import="com.mingrisoft.*"%>
    <%
        UserInfoList list = UserInfoList.getInstance();//获得UserInfoList类的对象
        UserInfoTrace ut = new UserInfoTrace();//创建UserInfoTrace类的对象
        request.setCharacterEncoding("UTF-8");//设置编码为UTF-8,解决中文乱码
        String name = request.getParameter("user");    //获取输入的用户名
        ut.setUser(name);    //设置用户名
        session.setAttribute("list", ut);
        list.addUserInfo(ut.getUser());    //添加用户到UserInfo类的对象中
        session.setMaxInactiveInterval(30);//设置Session的过期时间为30秒
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>在线用户列表</title>
    
    <style type="text/css">
    section {
        margin:0 auto auto auto;            /*设置外边距*/
        width:311px;                        /*设置页面宽度*/
        clear:both;                        /*设置两侧均不可以有浮动内容*/
        background-image:url(images/listbg.png);            /*设置背景图片*/
        height:254px;                        /*设置高度*/
    }
    textarea{
        border: none;    /*设置不显示边框*/
        background-color: #FDF7E9;    /*设置背景颜色*/
        margin-left: 20px;
        margin-top: 100px;
        padding: 0px;    /*设置内边距*/
    }
    body{
        margin: 0px;    /*设置外边距*/
    }
    </style>
    </head>
    <body>
    <section>
    <div>
        <textarea rows="10" cols="34"><%
            Vector vector = list.getList();
            if (vector != null && vector.size() > 0) {
                for (int i = 0; i < vector.size(); i++) {
                    out.println(vector.elementAt(i));
                }
            }
        %>
        </textarea>
    </div>
    </section>
    </body>
    </html>

    23、编写一个字符编码过滤器,使得所有的表单数据输入支持中文,并编写一个Servlet类输出request获取的数据。实例为添加图书信息并输出:

    index.jsp页面

    <%@ page language="java" contentType="text/html; charset=UTF-8"
        pageEncoding="UTF-8"%>
    <!DOCTYPE html>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <title>首页</title>
    <style type="text/css">
        ul{
            list-style:none;
        }
        li{
            padding:4px;
        }
    </style>
    </head>
    <body>
    <!-- 实现图书信息的添加,并创建字符编码过滤器,避免中文乱码 -->
    <form name="form" method="post" action="AddServlet">
    <ul>
        <li>图书编号:<input type="text" name="id"></li>
        <li>图书名称:<input type="text" name="name"></li>
        <li>&nbsp;&nbsp;格:<input type="text" name="price"></li>
        <li>&nbsp;&nbsp;者:<input type="text" name="author"></li>
        <li><input type="submit" name="submit" value="添加"></li>
    </ul>
    </form>
    </body>
    </html>

    CharactorFilter.java类(字符编码过滤器)

     1 package com.joeshien;
     2 //创建字符编码过滤器类CharactorFilter
     3 import java.io.IOException;
     4 import javax.servlet.annotation.*;
     5 import javax.servlet.Filter;
     6 import javax.servlet.FilterChain;
     7 import javax.servlet.FilterConfig;
     8 import javax.servlet.ServletException;
     9 import javax.servlet.ServletRequest;
    10 import javax.servlet.ServletResponse;
    11 import javax.servlet.annotation.WebFilter;
    12 
    13 /**
    14  * Servlet Filter implementation class CharactorFilter
    15  */
    16 @WebFilter(filterName="/CharactorFilter",
    17             urlPatterns={"/*"},
    18             initParams={
    19                     @WebInitParam(name="encoding",value="UTF-8")
    20             })
    21 public class CharactorFilter implements Filter {
    22     String encoding=null;        //定义字符编码字符串变量
    23     /**
    24      * Default constructor. 
    25      */
    26     public CharactorFilter() {
    27         // TODO Auto-generated constructor stub
    28     }
    29 
    30     /**
    31      * @see Filter#destroy()
    32      */
    33     public void destroy() {
    34         // TODO Auto-generated method stub
    35         encoding=null;
    36     }
    37 
    38     /**
    39      * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain)
    40      */
    41     public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
    42         // TODO Auto-generated method stub
    43         // place your code here
    44         if(encoding!=null)                    //判断字符编码是否为空
    45         {
    46             //设置请求的编码格式
    47             request.setCharacterEncoding(encoding);
    48             //设置响应response的编码
    49             response.setContentType("text/html; charset="+encoding);
    50         }
    51         // pass the request along the filter chain
    52         chain.doFilter(request, response);
    53     }
    54 
    55     /**
    56      * @see Filter#init(FilterConfig)
    57      */
    58     public void init(FilterConfig fConfig) throws ServletException {
    59         // TODO Auto-generated method stub
    60         encoding=fConfig.getInitParameter("encoding");    //获取初始化参数
    61     }
    62 
    63 }

    AddServlet.java(增加图书信息的Servlet类)

     1 package com.joeshien;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 import javax.servlet.ServletException;
     6 import javax.servlet.annotation.WebServlet;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 /**
    12  * Servlet implementation class AddServlet
    13  */
    14 @WebServlet("/AddServlet")  //配置SERVLET
    15 public class AddServlet extends HttpServlet {
    16     private static final long serialVersionUID = 1L;
    17        
    18     /**
    19      * @see HttpServlet#HttpServlet()
    20      */
    21     public AddServlet() {
    22         super();
    23         // TODO Auto-generated constructor stub
    24     }
    25 
    26     /**
    27      * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
    28      */
    29     protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    30         // TODO Auto-generated method stub
    31         doPost(request,response);  //处理GET请求
    32     }
    33 
    34     /**
    35      * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
    36      */
    37     protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    38         // TODO Auto-generated method stub
    39         PrintWriter out=response.getWriter();               //获取PrintWriter
    40         String id=request.getParameter("id");               //获取图书编号
    41         String name=request.getParameter("name");        //获取图书名称
    42         String price=request.getParameter("price");        //获取图书价格
    43         String author=request.getParameter("author");    //获取图书作者
    44         out.print("<h2>图书信息添加成功</h2>");             //输出图书信息
    45         out.print("图书编号:"+id+"<br><br>");
    46         out.print("图书名称:"+name+"<br><br>");
    47         out.print("价&nbsp;&nbsp;格:"+price+"<br><br>");
    48         out.print("作&nbsp;&nbsp;者:"+author);
    49         out.flush();
    50         out.close();
    51     }
    52 
    53 }

        

      

  • 相关阅读:
    C++迭代器
    JdbcTemplateUtil 工具类分享
    PE和CDlinux二合一启动盘制作
    程序员自述——2019新年篇
    HTML/CSS常用单词
    JAVA学习常用单词
    Spring集成Mybatis3
    Spring集成struts2
    解决VS2010打开Web页面时经常由于内存较低而导致VS2010自动关闭的问题
    年终总结
  • 原文地址:https://www.cnblogs.com/joeshine/p/4432447.html
Copyright © 2020-2023  润新知