servlet的简单使用
2015-12-02 21:00
120 查看
Servlet(Server
Applet),全称Java Servlet。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。
在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。
相似之处:
* 它们不是独立的应用程序,没有 main() 方法。
* 它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用。
* 它们都有一个生存周期,包含 init() 和 destroy() 方法。
不同之处:
* Applet具有很好的图形界面(AWT),与浏览器一起,在客户端运行。
* Servlet 则没有图形界面,运行在服务器端。
如何使用???
针对这样一个action为login的post请求
![](https://img-blog.csdn.net/20151202210742430?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
1.在web.xml中需要设置一个名为login的servlet
![](https://img-blog.csdn.net/20151202211228660?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
2.创建servlet类
![](https://img-blog.csdn.net/20151202211615848?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
上面有一段红色圈的语句,主要防止获取来自表单属性值时候,中文乱码的情况。
比如要获取表单中用户填写的用户名,可以通过request.getParameter("name")获取。但是java Web开发中,request.getParameter()获取URL中文参数会乱码。
出现乱码的原因是因为:Http请求传输时将url以ISO-8859-1编码,服务器收到字节流后默认会以ISO-8859-1编码来解码成字符流(造成中文乱码)
解决办法:我们需要把request.getParameter(“参数名”)获取到的字符串先用ISO-8859-1编码成字节流,然后再将其用utf-8解码成字符流
所以我们使用new String(request.getParameter("name").getBytes("iso-8859-1"), "utf-8"))来转换。
还有一个问题,为了使显示的html不乱码,应该在输出html代码时加上一句response.setContentType("text/html;charset=UTF-8");
![](https://img-blog.csdn.net/20151202212546219?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
Applet),全称Java Servlet。是用Java编写的服务器端程序。其主要功能在于交互式地浏览和修改数据,生成动态Web内容。Servlet运行于支持Java的应用服务器中。从实现上讲,Servlet可以响应任何类型的请求,但绝大多数情况下Servlet只用来扩展基于HTTP协议的Web服务器。
是一个供其他Java程序(Servlet引擎)调用的Java类,它不能独立运行,它的运行完全由Servlet引擎来控制和调度。针对客户端的多次Servlet请求,通常情况下,服务器只会创建一个Servlet实例对象,也就是说Servlet实例对象一旦创建,它就会驻留在内存中,为后续的其它请求服务,直至web容器退出,servlet实例对象才会销毁。
在Servlet的整个生命周期内,Servlet的init方法只被调用一次。而对一个Servlet的每次访问请求都导致Servlet引擎调用一次servlet的service方法。对于每次访问请求,Servlet引擎都会创建一个新的HttpServletRequest请求对象和一个新的HttpServletResponse响应对象,然后将这两个对象作为参数传递给它调用的Servlet的service()方法,service方法再根据请求方式分别调用doXXX方法。
与 Applet 的比较
相似之处:* 它们不是独立的应用程序,没有 main() 方法。
* 它们不是由用户或程序员调用,而是由另外一个应用程序(容器)调用。
* 它们都有一个生存周期,包含 init() 和 destroy() 方法。
不同之处:
* Applet具有很好的图形界面(AWT),与浏览器一起,在客户端运行。
* Servlet 则没有图形界面,运行在服务器端。
如何使用???
针对这样一个action为login的post请求
1.在web.xml中需要设置一个名为login的servlet
2.创建servlet类
上面有一段红色圈的语句,主要防止获取来自表单属性值时候,中文乱码的情况。
比如要获取表单中用户填写的用户名,可以通过request.getParameter("name")获取。但是java Web开发中,request.getParameter()获取URL中文参数会乱码。
出现乱码的原因是因为:Http请求传输时将url以ISO-8859-1编码,服务器收到字节流后默认会以ISO-8859-1编码来解码成字符流(造成中文乱码)
解决办法:我们需要把request.getParameter(“参数名”)获取到的字符串先用ISO-8859-1编码成字节流,然后再将其用utf-8解码成字符流
所以我们使用new String(request.getParameter("name").getBytes("iso-8859-1"), "utf-8"))来转换。
还有一个问题,为了使显示的html不乱码,应该在输出html代码时加上一句response.setContentType("text/html;charset=UTF-8");
相关文章推荐
- 函数重载与作用域,数组指针
- 初学链表的一些总结
- 走进Sharepoint2013至Sharepoint Online迁移②
- Web移动端调试工具Weinre(2015-12-02 20:53:59)
- 为什么指向的是最后一个节点的下一个节点 http://www.zhihu.com/question/20638791
- 7种最常见的Hadoop和Spark项目
- 将tomcat注册为windows服务
- 本地推送消息
- 自学c语言的第一天(算是吧)
- 逻辑回归、决策树和支持向量机(I)
- [CodeChef FEB14]Graph Challenge解题报告(求半支配点)
- OS开发UI篇—手写控件,frame,center和bounds属性
- LeetCode OJ:Valid Sudoku(有效数独问题)
- Java中yield()和join()在线程中的不同
- git日志 每天导出 shell脚本
- a.setAttribute('width','200px') and a.style.width="200px"
- laravel5.1框架简介及安装
- 抽屉效果的实现(DrawerLayout和SlidingMenu的对比)
- Java中Collection和Map集合总结
- 抽屉效果的实现(DrawerLayout和SlidingMenu的对比)