这里先简单的实现一个基于servlet的web应用,便于理解后面介绍的servlet技术。
----------------------------------------------------------------------------------------
----------------------------------------------------------------------------------------
web应用程序
应用程序分为两种模式:C/S和B/S;
C/S是客户端/服务器端程序,也就是说这类程序一般独立运行;B/S就是浏览器端/服务器端应用程序,这类应用程序一般借助IE等浏览器来运行;
web应用就是基于网络的B/S应用程序。
搭建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工程。
双击文件$tomcat_home\bin\startup.bat,启动tomcat,启动完毕如图:
在浏览器中输入: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>
这里配置了我们写的servlet以及访问映射,这里的意思是访问hello.htm的请求由myFirstServlet来处理;其中关于url的配置规则可以参考本文底部的链接文章。
注意:
点选eclipse中的Project->Build Automatically,可以实现eclipse的自动编译,编译的class文件放哪呢?选择Project->Properties->Java Build Path->Source选项卡,底部的Default output folder路径设置为myservlet/webapp/WEB-INF/classes,这样编译的文件就可以直接放到web工程的webapp中。
最后,启动tomcat,双击文件$tomcat_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 【web.xml详细介绍】
http://hi.baidu.com/lanhuwan2011/item/aa1d32166473b428f6625cc9 【web.xml的作用】
http://hezhong002.iteye.com/blog/1231164 【servlet mapping解析】