Fork me on GitHub

浅谈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请求。

posted @ 2017-02-22 16:24  52Hz  阅读(4910)  评论(1编辑  收藏  举报