zoukankan      html  css  js  c++  java
  • 浅谈servlet与jsp的关系

          servlet是用java语言编写的,是一个java类。主要功能是用来接受、处理客户端的请求,并把处理结果返回到客户端显示。Jsp是servlet发展后期的产物。在没有jsp之前,servlet利用输出流动态生成整个HTML页面,输出内容包括每一个HTML标签和每个在HTML页面中出现的内容。HTML文件包含大量标签和大量静态文本及格式等,以及所有的表现逻辑,包括布局、色彩及图像等。这些内容都必须耦合在java代码中,这样就导致servlet开发效率低下,令人不胜其烦。jsp出现后弥补了不足,因为jsp文件是通过在标准的HTML页面中插入java代码形成的。其静态的部分无需java程序控制,只有那些需要从数据库读取并根据程序动态生成信息时,才使用java脚本控制。所以jsp技术出现后,主要用jsp文件来动态生成HTML文件,然后返回客户端显示。现在的servlet,当需要将整个页面作为结果返回时,不再由其自己去处理,而是调用jsp文件。

         下面开发部署一个简单的servlet程序来展示:

         1.创建处理请求的servlet文件:

     1 package com.servlet.study;
     2 
     3 import java.io.IOException;
     4 import java.io.PrintWriter;
     5 
     6 import javax.servlet.ServletException;
     7 import javax.servlet.http.HttpServlet;
     8 import javax.servlet.http.HttpServletRequest;
     9 import javax.servlet.http.HttpServletResponse;
    10 
    11 public class HelloWorldServlet extends HttpServlet {
    12     @Override
    13     protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    14         super.doGet(req, resp);
    15     }
    16     @Override
    17     protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    18         resp.setContentType("text/html;charset=UTF-8");
    19         req.setCharacterEncoding("UTF-8");
    20         String userName = req.getParameter("username");
    21         String passWord = req.getParameter("password");
    22         PrintWriter out = resp.getWriter();
    23         out.print("<html>");
    24         out.print("<head>");
    25         out.print("<title>Helloworld</title>");
    26         out.print("</head>");
    27         out.print("<body>");
    28         out.print("<hr>");
    29         out.println("The username is "+userName);
    30         out.println("The password is "+passWord);
    31         out.print("</body>");
    32         out.print("</html>");
    33     }
    34 }

         2.创建HTML文件:

     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4 <meta charset="UTF-8">
     5 <title>用户登录页面</title>
     6 </head>
     7 <body>
     8 <h1 align="center">登录系统</h1><hr>
     9 <form action="helloworld_servlet" method = "post">//表单的action其实指明了servlet的url                                
    10     <table>
    11         <tr>
    12             <td>用户名</td>
    13             <td><input type="text" name="username"></td>
    14         </tr>
    15         <tr>
    16             <td>密码</td>
    17             <td><input type="password" name="password"></td>
    18         </tr>
    19         <tr>
    20             <td><input type="reset" value="重填"></td>
    21             <td><input type="submit" value="提交"></td>
    22         </tr>
    23     </table>
    24 </form>
    25 </body>
    26 </html>

         3.在web.xml中配置servlet:

    1 <servlet>
    2         <servlet-name>HelloWorldServlet</servlet-name>
    3         <servlet-class>com.servlet.study.HelloWorldServlet</servlet-class>//实现类
    4</servlet>
    5     <servlet-mapping>//映射
    6         <servlet-name>HelloWorldServlet</servlet-name>
    7         <url-pattern>/helloworld_servlet</url-pattern>//“/”是必须的
    8     </servlet-mapping>

         注:]servlet类必须继承HttpServlet类,而且得重写doGet、doPost方法,并创建out对象。doGet方法是HttpServlet类中处理get请求的方法,doPost处理post请求。在表单中声明method,并在servlet类中编写相对应方法即可,本例特为post请求。

  • 相关阅读:
    平衡二叉查找树——AVL树
    Java 输入输出(一)——流
    C++获取系统当前时间(精确到微秒)
    C++ STL中哈希表 hash_map介绍
    ubuntu下面编译libuv
    linux使用select实现精确定时器详解
    .dll,.lib,.def 和 .exp文件
    没有core文件时候如何定位segment/core dump
    C++中string、char *、char[]的转换
    map自定义结构体作为key
  • 原文地址:https://www.cnblogs.com/Miracle-Maker/p/6429544.html
Copyright © 2011-2022 走看看