Servlet学习整理(二)—— 实现基于servlet的简单web应用
web应用程序
应用程序分为两种模式:C/S和B/S;
?
C/S是客户端/服务器端程序,也就是说这类程序一般独立运行;B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行;
?
web应用就是基于网络的B/S应用程序。
?
?
基于Servlet的web应用交互过程web应用一般是基于http的请求响应模式,web应用一般是部署在web服务器上的,一个使用servlet实现的web应用典型的交互过程如下:
?
1) 客户端向web服务器发起一个HTTP请求;
2) HTTP请求被web服务器接受,并移交给servlet引擎;
3) servlet引擎根据配置决定调用那个servlet,并把request对象、response对象传给它。
4) servlet通过request获取用户信息和请求的内容,servlet处理完请求后把要返回的信息放入response对象;
5)一旦servlet完成了请求的处理,servlet引擎就会刷新response,把控制权返回给web服务器;
6)web服务器将从servlet引擎获取的内容返回给客户端;
?
?
搭建web应用开发环境环境准备
?
1)JDK:java开发环境 http://www.oracle.com/technetwork/java/javase/downloads/index.html
?
2)eclipse:java开发平台 下载地址:http://www.eclipse.org/downloads/;
?
3)tomcat:Web 服务器,或者叫servlet容器,用来启动servlet引擎,执行servlet程序的;下载地址:http://tomcat.apache.org/
?
下载并安装上面提到的四个工具,并进行配置,具体的配置可参见网络。
?
本例使用的版本分别是:jdk1.6.0_29;eclipse_Indigo Service Release 2;apache-tomcat-6.0.35;
机器环境windows7。
?
?
创建web工程新建文件夹F:\work,在eclipse中新建项目:File->new->java Project,输入名称myservlet,选择存放目录为F:\work,然后点finish,生成工程如图:
然后新建webapp和webapp/WEB-INF文件夹,webapp/WEB-INFweb.xml和webapp/index.htm,如图:
?
web.xml是web应用中的一个很重要的配置文件。
?
在web.xml中添加内容如下:
?
?
<?xml version="1.0" encoding="UTF-8"?><web-app></web-app>
?
?
在index.htm中添加内容如下:
?
?
this is myservlet
?
至此,我们创建了一个名为myservlet的简单web工程。
?
?
启动tomcat上面我们已经创建好了web工程,现在我们启动tomcat来运行这个web工程;
?
找到文件$tomcat_home\conf\server.xml,在<host></host>标签下添加配置如下:
?
?
<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"> <Context path="" docBase="F:\work\myservlet\webapp" reloadable="true"/></Host>
?
?
这里配置的意思是tomcat启动后运行我们的web工程。
?
双击文件$tomcate_home\bin\startup.bat,启动tomcate,启动完毕如图:
?
?
在浏览器中输入:http://localhost:8080/index.htm,看到页面如图:
至此,我们已经成功完成一个简单的只有静态页面index.htm的web应用。
?
?
在web应用中使用servlet技术上面的web工程只能提供事先准备好的静态的文件,如果我们想要根据用户的输入动态输出内容,就需要使用servlet技术了。
?
首先在eclipse中编写servlet代码,在src中创建源码包com.myservlet.app.servlet,并在该包下创建java文件MyFirstServlet.java,如图:
?
?
MyFirstServlet.java的源码
?
public class MyFirstServlet extends HttpServlet { /** **/ private static final long serialVersionUID = 1797506326421139662L; @Override protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取用户的name String name = request.getParameter("name"); // 对name进行转码 if (name != null) { name = new String(name.getBytes("ISO-8859-1"), "GBK"); } else { name = "陌生人"; } // 设置输出 response.setContentType("text/html;charset=GBK"); PrintWriter printWriter = response.getWriter(); printWriter.println("<HTML><HEAD><TITLE>myFirstServlet</TITLE>"); printWriter.println("</HEAD><BODY>"); printWriter.println("<h1><p>" + name + ":您好!</h1>"); printWriter.println("</BODY></HTML>"); printWriter.close(); }}
?
?
注意:
如果eclipse显示没有找到HttpServlet,那是因为你没有引入servlet-api.jar;这个jar包可以在$tomcat_home\lib中找到,然后拷贝到$java_home\jre6\lib\ext目录下,重启eclipse即可;如果还是没有找到,说明eclipse使用的jre你安装的,点击window->Preferences->java->Installed JREs->Add,选择你安装的java目录,保存重启eclipse即可
?
然后配置web.xml文件,如下:
?
?
<?xml version="1.0" encoding="UTF-8"?><web-app><servlet><servlet-name>myFirstServlet</servlet-name><servlet-class>com.myservlet.app.servlet.MyFirstServlet</servlet-class></servlet><servlet-mapping><servlet-name>myFirstServlet</servlet-name><url-pattern>/hello.htm</url-pattern></servlet-mapping></web-app>?
?
注意:
?
点选eclipse中的Project->Build Automatically,可以实现eclipse的自动编译,编译的class文件放哪呢?选择Project->Properties->Java Build Path->Source选项卡,底部的Default output folder路径设置为myservlet/webapp/WEB-INF/classes,这样编译的文件就可以直接放到web工程的webapp中。
?
最后,启动tomcat,双击文件$tomcate_home\bin\startup.bat;
?
启动完成后,在浏览器中输入:http://localhost:8080/hello.htm?name=wade6,看到的页面如图:
至此,我们实现了一个基于servlet的简单web应用。
?
?
问题1、web工程中的web.xml文件有什么作用呢?它是每个web.xml工程都必须的吗?
?
The web.xml web application descriptor file represents the core of the Java web application。
?
一个web中完全可以没有web.xml文件,也就是说,web.xml文件并不是web工程必须的。
?
web.xml文件是用来配置:Welcome页面、servlet、servlet-mapping、filter、 listener、启动加载级别等。当你的web工程没用到这些时,你可以不用web.xml文件来配置你的web工程。
?
参考:http://blog.csdn.net/jzy23682891/article/details/6755173
? ? ? ? ?http://hi.baidu.com/lanhuwan2011/item/aa1d32166473b428f6625cc9