【java学习】Servlet简单的表单程序(一)
2014-11-20 16:42
761 查看
此文用于java学习,在此小记。
在此小Demo中使用到了Servlet,所以有必要了解一下Servlet的相关知识。(Servlet的相关知识摘抄自http://blog.csdn.net/jiuqiyuliang/article/details/36424981)
Servlet是Sun公司提供的一门用于开发动态web网页的技术。Sun公司在API中提供了一个servlet接口,我们如果想使用java程序开发一个动态的web网页,只需要实现servelet接口,并把类部署到web服务器上就可以运行了。
[b] 到底什么是Servlet呢?[/b]
通俗一点,只要是实现了servlet接口的java程序,均称Servlet。Servlet是由sun公司命名的,Servlet = Server + Applet(Applet表示小应用程序),Servlet是在服务器端运行的小程序。
解读API对于拒绝学习API的程序员们是一种煎熬,但它却是我们学习和进步的最好工具,且学且珍惜。
大家可以在点进去看一看,从上图,可以看出Servlet接口定义三个实现类,分别是FacesServlet, GenericServlet, HttpServlet。下面我们简单的介绍一下。
2、Servlet接口实现类
(1)FacesServlet是一个用于管理利用JSF(JavaServer Faces)构建用户界面的web应用程序请求处理生命周期的Servlet。(FacesServletis a servlet that manages the request processing lifecycle for web applications that are utilizing JavaServer Faces to construct the user interface.),大家如果想深入的学习,可以点这里。
(2)GenericServlet是HttpServlet的父类,包含了servlet的常用方法。GenericServlet使得程序员写servlets更加简单,它提供了初始化和销毁生命周期的方法,以及实现了写日志文件的方法。
(3)HttpServlet指能够处理HTTP请求的servlet。这是开发人员在编写Servlet时,通常应继承这个类即可。
对于这三个实现类,只为大家做一个简单的介绍,如果想深入的研究,直接看API就好。
3、Servlet部署
客户端通过URL地址访问web服务器中的资源,所以若想访问Servlet必须要把servlet程序映射到一个URL地址上,在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成,如上面的实例。
*<servlet>用于注册Servlet,包含了<servlet-name>和<servlet-class>两个子元素,分别用于设置servlet的名称以及servlet的类名。
*<servlet-mapping>用于映射上面<servlet>中的对外访问路径,同样包含<servlet-name>和<url-pattern>两个元素,分别用于设置servlet的名称以及servlet的对外访问路径。
在servlet映射到URL有两种格式:
1.“*.扩展名”
2.以正斜杠(/)开头并以“/*”结尾。
servlet对url的匹配规则以及路径问题,大家可以上网查,有很多相关的资料,例如:http://blog.csdn.net/xh16319/article/details/8014107
4、Web服务器调用Servlet过程(Servlet生命周期)
servlet程序是由web服务器调用,web服务器实现了对servlet生命周期的管理。servlet的生命周期分为四步:
1)加载servlet并实例化,new的过程。
2)初始化init。
3)处理请求,调用servlet的service,doget,dopost方法将Request和Response,作为参数传递。
4)退出服务,调用destory方法释放资源。
注意:
1、servlet只实例化一次。感觉有点单例模式的意思,大家可以研究一下Tomcat的实现原理。
2、init方法也只执行一次。servlet实例只创建一次,所以init初始化只调用一次。
5、Servlet线程安全问题
当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用service方法,因此,service方法内如果访问了同一个资源的话,就有可能引发线程安全问题。大家重点理解下面两句即可:
(1) Servlet是单实例多线程的,如果存在可以修改的成员变量将会出现线程安全问题。
(2) 使用Servlet最好保证Servlet是无状态的,也就是没有可以修改的成员变量。
以上为servlet的相关知识。
[b]以下为相关Demo[/b]
1.在Eclipse下New一个新的Web Project在此命名为Demo17自带生成web.xml(WEB-INF目录下)和index.jsp(WebRoot目录下),在WebRoot目录下New一个html在此起名为formdemo.html
2.右击Demo17下的src目录,在此目录下New一个java文件名为FormDemo.java
贴源码:
FormDemo.java
formdemo.html
最后在web.xml文件里完成Servlet的配置
web.xml
3、一定要启动服务器,之后在浏览器中输入你的URL,此时我们就可以调用Servlet了
Submit之后
于是乎一个简单的表单Demo完成。
在此小Demo中使用到了Servlet,所以有必要了解一下Servlet的相关知识。(Servlet的相关知识摘抄自http://blog.csdn.net/jiuqiyuliang/article/details/36424981)
Servlet是Sun公司提供的一门用于开发动态web网页的技术。Sun公司在API中提供了一个servlet接口,我们如果想使用java程序开发一个动态的web网页,只需要实现servelet接口,并把类部署到web服务器上就可以运行了。
[b] 到底什么是Servlet呢?[/b]
通俗一点,只要是实现了servlet接口的java程序,均称Servlet。Servlet是由sun公司命名的,Servlet = Server + Applet(Applet表示小应用程序),Servlet是在服务器端运行的小程序。
Servlet基础
1、解读API文档,纯手工编写一个Servlet程序,并部署访问(如上所示)。解读API对于拒绝学习API的程序员们是一种煎熬,但它却是我们学习和进步的最好工具,且学且珍惜。
大家可以在点进去看一看,从上图,可以看出Servlet接口定义三个实现类,分别是FacesServlet, GenericServlet, HttpServlet。下面我们简单的介绍一下。
2、Servlet接口实现类
(1)FacesServlet是一个用于管理利用JSF(JavaServer Faces)构建用户界面的web应用程序请求处理生命周期的Servlet。(FacesServletis a servlet that manages the request processing lifecycle for web applications that are utilizing JavaServer Faces to construct the user interface.),大家如果想深入的学习,可以点这里。
(2)GenericServlet是HttpServlet的父类,包含了servlet的常用方法。GenericServlet使得程序员写servlets更加简单,它提供了初始化和销毁生命周期的方法,以及实现了写日志文件的方法。
(3)HttpServlet指能够处理HTTP请求的servlet。这是开发人员在编写Servlet时,通常应继承这个类即可。
对于这三个实现类,只为大家做一个简单的介绍,如果想深入的研究,直接看API就好。
3、Servlet部署
客户端通过URL地址访问web服务器中的资源,所以若想访问Servlet必须要把servlet程序映射到一个URL地址上,在web.xml文件中使用<servlet>元素和<servlet-mapping>元素完成,如上面的实例。
*<servlet>用于注册Servlet,包含了<servlet-name>和<servlet-class>两个子元素,分别用于设置servlet的名称以及servlet的类名。
*<servlet-mapping>用于映射上面<servlet>中的对外访问路径,同样包含<servlet-name>和<url-pattern>两个元素,分别用于设置servlet的名称以及servlet的对外访问路径。
在servlet映射到URL有两种格式:
1.“*.扩展名”
2.以正斜杠(/)开头并以“/*”结尾。
servlet对url的匹配规则以及路径问题,大家可以上网查,有很多相关的资料,例如:http://blog.csdn.net/xh16319/article/details/8014107
4、Web服务器调用Servlet过程(Servlet生命周期)
servlet程序是由web服务器调用,web服务器实现了对servlet生命周期的管理。servlet的生命周期分为四步:
1)加载servlet并实例化,new的过程。
2)初始化init。
3)处理请求,调用servlet的service,doget,dopost方法将Request和Response,作为参数传递。
4)退出服务,调用destory方法释放资源。
注意:
1、servlet只实例化一次。感觉有点单例模式的意思,大家可以研究一下Tomcat的实现原理。
2、init方法也只执行一次。servlet实例只创建一次,所以init初始化只调用一次。
5、Servlet线程安全问题
当多个客户端并发访问同一个Servlet时,web服务器会为每一个客户端的访问请求创建一个线程,并在这个线程上调用service方法,因此,service方法内如果访问了同一个资源的话,就有可能引发线程安全问题。大家重点理解下面两句即可:
(1) Servlet是单实例多线程的,如果存在可以修改的成员变量将会出现线程安全问题。
(2) 使用Servlet最好保证Servlet是无状态的,也就是没有可以修改的成员变量。
以上为servlet的相关知识。
[b]以下为相关Demo[/b]
1.在Eclipse下New一个新的Web Project在此命名为Demo17自带生成web.xml(WEB-INF目录下)和index.jsp(WebRoot目录下),在WebRoot目录下New一个html在此起名为formdemo.html
2.右击Demo17下的src目录,在此目录下New一个java文件名为FormDemo.java
贴源码:
FormDemo.java
import java.io.PrintWriter; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class FormDemo extends HttpServlet{ public void doGet(HttpServletRequest request,HttpServletResponse response) { try { response.setContentType("text/html;charset=gb2312"); PrintWriter out = response.getWriter(); String name,sex,phone,address,email; name = request.getParameter("name"); sex = request.getParameter("sex"); phone = request.getParameter("phone"); address = request.getParameter("address"); email = request.getParameter("email"); out.println("<html><head><title>a</title></head>"); out.println("<body>"); out.println("<P><H3>名字:"+convertToChinese(name)+"</H3></P>"); out.println("<P><H3>性别:"+convertToChinese(sex)+"</H3></P>"); out.println("<P><H3>电话:"+phone+"</H3></P>"); out.println("<P><H3>地址:"+convertToChinese(address)+"</H3></P>"); out.println("<P><H3>电子邮件:"+email+"</H3></P>"); out.println("</BODY></HTML>"); } catch(Exception ex) { ex.printStackTrace(); } } private String convertToChinese(String source) { String s = ""; try { s = new String(source.getBytes("ISO8859_1")); } catch(java.io.UnsupportedEncodingException ex) { ex.printStackTrace(); } return s; } }
formdemo.html
<!DOCTYPE html> <html> <head> <title>简单的表单程序</title> </head> <body> <center> <form action="http://localhost:8080/Demo17/login"> <table border="0" cellpadding="3"> <tr> <td>姓名:</td> <td><input type="text" name="name"></td> </tr> <tr> <td>性别:</td> <td><input type="radio" name="sex" value="男" checked>男 <input type="radio" name="sex" value="女" checked>女</td> </tr> <tr> <td>电话:</td> <td><input type="text" name="phone"></td> </tr> <tr> <td>地址:</td> <td><input type="text" name="address"></td> </tr> <tr> <td>电子邮件:</td> <td><input type="text" name="email"></td> </tr> <tr> <td align="center" colspan="2"> <input type="submit" value="Submit"> <input type="reset" value="Reset"> </td> </tr> </table> </form> </center> </body> </html>
最后在web.xml文件里完成Servlet的配置
web.xml
<?xml version="1.0" encoding="UTF-8"?> <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0"> <display-name>Demo17</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <welcome-file>default.jsp</welcome-file> </welcome-file-list> <servlet> <servlet-name>loginServlet</servlet-name> <servlet-class>FormDemo</servlet-class> </servlet> <servlet-mapping> <servlet-name>loginServlet</servlet-name> <url-pattern>/login</url-pattern> </servlet-mapping> </web-app>
3、一定要启动服务器,之后在浏览器中输入你的URL,此时我们就可以调用Servlet了
Submit之后
于是乎一个简单的表单Demo完成。
相关文章推荐
- 【java学习】Servlet简单的表单程序(一)
- [原]java专业程序代写(qq:928900200),学习笔记之基础入门<servlet_文件下载>(二十七)
- [JavaWeb 用MyEclipse分别创建最简单的JSP程序和Servlet程序]
- Java开发学习笔记之二:一个简单的Servlet
- Java学习3:基于Intellij IDEA实现一个简单Servlet
- 系统学习JavaWeb之七servlet处理HTML表单
- 【JavaEE学习笔记】Servlet_01_入门,简单的Servlet程序
- 简单JAVA程序学习
- 【java学习记录】3.采用面向对象的方法设计一个能对复数(Complex)进行加、减、乘法的简单运算的程序
- JAVA学习之 Model2中的Servlet与.NET一般处理程序傻傻分不清楚
- Java学习笔记·Servlet互相传递参数简单实例
- Java+MyEclipse+Tomcat (二)配置Servlet及简单实现表单提交
- 【java学习记录】12.用Socket网络访问方法,实现简单的网络聊天程序
- 系统学习JavaWeb之三编写一个简单的Servlet应用程序
- 黑马程序员-JAVA学习之用多线程实现简单UDP聊天程序
- Servlet学习笔记_03_使用servlet编写一个简单的helloworld程序
- JAVA学习第六十课 — UDP协议 &基于多线程模拟简单的QQ聊天程序
- Java爬虫学习:利用HttpClient和Jsoup库实现简单的Java爬虫程序
- java学习2:记录如何简单的将idea编写的程序打包并转为exe格式
- JAVA 学习日志 利用循环打印简单的菱形程序