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


更多专业前端知识,请上 【猿2048】www.mk2048.com

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/364884.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

折腾Java设计模式之建造者模式

博文原址&#xff1a;折腾Java设计模式之建造者模式 建造者模式 Separate the construction of a complex object from its representation, allowing the same construction process to create various representations. 将复杂对象的构造与其表现分离&#xff0c;允许相同的构…

python小甲鱼练习题答案_小甲鱼Python第 013讲元组:戴上了枷锁的列表 | 课后测试题及参考答案...

测试题&#xff1a;0. 请用一句话描述什么是列表&#xff1f;再用一句话描述什么是元组&#xff1f;列表&#xff1a;一个大仓库&#xff0c;可以随时往里面添加和删除任何东西。元祖&#xff1a;封闭的列表&#xff0c;一旦定义&#xff0c;就不可改变(不能添加、删除或修改)1…

获得的经验:ActiveMQ,Apache Camel和连接池

每隔一段时间&#xff0c;我会遇到一个与ActiveMQ的连接和池相关的有趣问题&#xff0c;而今天&#xff0c;我想讨论一些并不总是很清楚的问题&#xff0c;并且在使用ActiveMQ和Camel JMS时可能会导致您大量饮酒。 并不是说您无论如何都不会在使用ActiveMQ和Camel时大量喝酒………

羊车门问题

题目描述&#xff1a;有3扇关闭的门&#xff0c;一扇门后面停着汽车&#xff0c;其余门后是山羊&#xff0c;只有主持人知道每扇门后面是什么。参赛者可以选择一扇门&#xff0c;在开启它之前&#xff0c;主持人会开启另外一扇门&#xff0c;露出门后的山羊&#xff0c;然后允许…

webapp优化

1. 优化前提&#xff1a; 业务架构与数据库设计 2. 单页web应用 &#xff1a; ExtJs backbone ng avalon 框架&#xff1a; React Native &#xff0c; ionic &#xff0c; Mui, metror,WeeX,device one Meteor(版本: 1.0) 的另一个特点是它会通过手机内存中运行的 mi…

高版本Sqlserver数据库导入低版本Sqlserver

今天想跑一个关于java网站的demo&#xff0c;结果在附加数据库项这一块出现问题&#xff0c;例程的数据库用的是sqlserver2014&#xff0c;而我的是2008&#xff0c;添加数据库出现错误。经过一番查找&#xff0c;也找到某人写的一些博客上的解决方案&#xff0c;不过不是很清楚…

mysql删除bin-log_删除MYSQl BIN-LOG 日志

1.查找当前有哪些二进制日志文件&#xff1a;mysql> show binary logs;-----------------------------| Log_name | File_size |-----------------------------| mysql-bin.000001 | 1357315 || mysql-bin.000002 | 117 || mysql-bin.000003 | 404002 ||…

WildFly 8与GlassFish 4 –选择哪个应用服务器

自从我上一个博客以来已经有一段时间了。 我显然忙于其他事情&#xff0c;包括我的主要工作。 在对应用服务器的正确选择提出更多疑问之后&#xff0c;是时候再次讨论这个话题并分享我的想法。 该博客上最常阅读的文章之一是有关选择哪种Java EE 6应用程序服务器的文章 。 我一…

Vue--- 一点车项目

一点车项目 cli脚手架 组件化 数据交互路由指向存入数据库 前端页面 cli脚手架的安装与搭建 创建对应包 页面组件化编辑 &#xff08;共享组件&#xff1a;摘取出来一模一样的组件重用&#xff09;&#xff08;私有组件:在自己的组件写入 引入共享组件&#xff09; 数据交…

设计模式:模式或反模式,这就是问题

我最近遇到了Wiki页面“ Anti-pattern” &#xff0c;其中包含详尽的反模式列表。 其中一些对我来说很明显。 他们中的一些让我想了一下&#xff0c;其他的让我想了更多。 然后&#xff0c;我开始在页面上查找反模式“ singleton”&#xff0c;但找不到。 &#xff08;文本搜索…

Redis的散列类型

Redis是采用字典结构以key-value的形式存储数据的&#xff0c;在散列类型&#xff08;所谓的hash&#xff09;中的value也是一种字典结构。如果用关系表结构去理解&#xff0c;就是key为对象&#xff0c;value是属性和属性值。如下图&#xff1a; 所以使用散列&#xff08;hash…

python configparser 注释_使用configpar添加注释

如果您想去掉尾随的&#xff0c;可以按照atomopter的建议将ConfigParser.ConfigParser子类化&#xff0c;并实现自己的write方法来替换原来的方法&#xff1a;import sysimport ConfigParserclass ConfigParserWithComments(ConfigParser.ConfigParser):def add_comment(self, …

easy html css tree 简单的HTML css导航树

code: show: 更多专业前端知识&#xff0c;请上 【猿2048】www.mk2048.com

使用Maven和WebLogic 12c开发Java EE应用程序

WebLogic Server 12c现在对Maven提供了很好的支持。 不过&#xff0c;此文档有点被隐藏&#xff0c;因此这里是直接链接http://docs.oracle.com/middleware/1212/core/MAVEN 总而言之&#xff0c;Oracle没有为其服务器工件提供公共的Maven存储库管理器托管。 但是&#xff0c;…

Java实现并发线程中线程范围内共享数据

---恢复内容开始--- 利用Map&#xff0c;HashMap键值对的数据结构&#xff0c;实现并发线程中线程范围内数据共享。 package cn.qy.heima2;import java.util.HashMap; import java.util.Map; import java.util.Random;public class ThreadScopeShareData {private static int …

Aspose 插件

百度&#xff1a;Aspose Aspose.Cells.dll Aspose.Slides.dll Aspose.Words.dll 转载于:https://www.cnblogs.com/Tpf386/p/10001814.html

mysql数据库version版本控制_MySQL数据库版本控制

你用什么方法来控制你的数据库&#xff1f;我已经将所有数据库表作为单独的.sql脚本提交到我们的respository(mercurial)。这样&#xff0c;如果团队中的任何成员对employee表进行了更改&#xff0c;比如说&#xff0c;当我更新我的存储库时&#xff0c;我会立即知道哪个表被修…

js生成二维码

1.引入js文件 https://blog-static.cnblogs.com/files/cengjingdeshuige/jquery.qrcode.js https://blog-static.cnblogs.com/files/cengjingdeshuige/qrcode.js 2.页面加入元素 <div id"qrcodeCanvas"></div>3.js里面生成二维码$(#qrcodeCanvas).qrc…

Java 8将默认使用传输级别安全性(TLS)1.2

传输级别安全性&#xff08;TLS&#xff09;1.2将默认设置为3月18日发布的标准Java的下一版本。TLS将提供加密的Internet通信&#xff0c;但不能完全解决Java的安全问题&#xff0c;因为Java的加密通信没有灵丹妙药有关安全问题的解释。 TLS版本1.2将在Java开发工具包&#xf…

18.11.16-高等数学-曲率计算

11.16 转载于:https://www.cnblogs.com/coder211/p/10005502.html