培训学习07.12

Servlet是用于WEB服务器端的Java小程序。

servlet的实现过程:

  1. 客户端请求该 Servlet

  2. 加载 Servlet 类到内存

  3. 实例化并调用init()方法初始化该 Servlet

  4. service() 方法根据请求方法不同调用doGet() 或者 doPost

  5. destroy()

说明:

service() 方法是 Servlet 的核心。每当一个客户请求一个HttpServlet 对象,该对象的service() 方法就要被调用,而且传递给这个方法一个"请求"(ServletRequest)对象和一个"响应"(ServletResponse)对象作为参数。

(HttpServletRequest req, HttpServletResponse resp

doGet()

当一个客户通过表单发出GET 请求或直接请求一个 URL 时,doGet() 方法被调用。与 GET 请求相关的参数添加到 URL 的后面,并与这个请求一起发送。

doPost()

当一个客户通过 表单发出POST 请求时,doPost() 方法被调用。与 POST 请求相关的参数作为一个单独的 HTTP 请求从浏览器发送到服务器。

destroy() 方法

destroy() 方法仅执行一次,即在Tomcat服务器停止 时执行该方法。

servlet小实例开发过程:

在WebContent文件夹下的WEB-INF文件夹的web.xml中写下代码

<welcome-file-list>

    <welcome-file>index.html</welcome-file>     //这些为页面以哪种形式显示
 
    <welcome-file>index.jsp</welcome-file>     

    <welcome-file>default.html</welcome-file>

    <welcome-file>default.jsp</welcome-file>

  </welcome-file-list>

Servlet程序必须在WEB应用程序的web.xml文件中进行注册和映射其访问路径,才可以被外界访问。
一个<servlet>元素用于注册一个Servlet,它包含有两个主要的子元素:<servlet-name>和<servlet-class>,分别用于设置Servlet的注册名称和Servlet的完整类名。
一个<servlet-mapping>元素用于映射一个已经注册的Servlet的一个对外访问路径,它包含有两个字元素:<servlet-name>和<url-pattern>,分别用于指定Servlet的注册名称和对外访问路径。

例如:在web.xml中

  <servlet>
 
    <servlet-name>Sample</servlet-name>

    <servlet-class>jp.co.nttdata.byd.Sample</servlet-class>

  </servlet>

  <servlet-mapping>

    <servlet-name>Sample</servlet-name>

    <url-pattern>/byd/Sample</url-pattern>

  </servlet-mapping>

对应的类要继承 HttpServlet 类,然后依据servlet实现过程,编写init(),doGet(),doPost(),destroy()等方法。

例如:

public class Sample extends HttpServlet {
    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = -1936901196555528367L;
//init() 
    public void init() throws ServletException {
        System.out.println("This is initMethod");
    }
//doGet() 
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        System.out.println("This is doGet");
        resp.setContentType("text/html;charset=UTF-8");
        PrintWriter out = resp.getWriter();
        out.println("<html>");
        out.println("<body>");
        out.println("This is my Servlet");
        out.println("</body>");
        out.println("</html>");
    }
//doPost() 
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        doGet(req, resp);
    }
//destroy() 
    public void destroy() {
        super.destroy();
        System.out.println("This is destroy");
    }
}

进行页面与页面间的跳转时,由jsp到blogic再到jsp

在jsp页面中的body中写下

<body>

 <form name="loginForm" action="/byd/byd/JspSample" method="POST">   //action表示所要跳转到的业务逻辑

  index

  <input name="loginId" type="text" />

  <input name="loginName" type="text" value="${loginName}"/>

  <input type="submit" value="sub" />

 </form>

</body>

在类中的doGet()或doPost()中写下

 public void doGet(HttpServletRequest req, HttpServletResponse resp)

            throws ServletException, IOException {

        System.out.println("This is doGet");

        resp.setContentType("text/html;charset=UTF-8");

        String loginId = req.getParameter("loginId");

        req.setAttribute("loginId", loginId);

        req.setAttribute("loginName", "baiyadan");

        req.getRequestDispatcher("/response.jsp").forward(req, resp); //response.jsp为所要跳转到的页面

    }





你可能感兴趣的:(培训学习07.12)