Servlet程序设计
Java Servlet是一种使用Java编写的CGI程序
CGI:通用网关接口
与传统的 CGI不同的是,Servlet是使用一种多线程处理方式---性能较高
在Servlet 中可以控制输出HTML代码,则所有HTML代码必须使用out.println():一行一行输出
在WEB中使用JAVA程序必须把程序放在一个包中,package cn.mldn.lxh.servlet
把JAVA文件放在WEB-INF中的classes中
package cn.mldn.lxh.servlet; import java.io.*; //HttpServlet属于javax.servlet包下 import javax.servlet.*; //HttpServletRequest,HttpServeltResponse放在javax.servlet.http包下 import javax.servlet.http.*;
public class SimpleServlet extends HttpServlet { public void doGet(HttpServletRequest req,HttpServletResponse resp) throws IOException,ServletException { PrintWriter out= resp.getWrite();//进行实例化 out.println("<HTML>"); out.println("<HEAD>"); out.println("<TITLE>THE FIRST SERVET</TITLE>"); out.println("</HEAD>"); out.println("<body>"); out.println("<h1>hello body</h1>"); out.println("</body>"); out.println("</HTML>"); out.close(); } }; |
JSP程序功能与Servlet功能 一致,也就意味着Servlet同样可以被外部程序所访问,就必须有一个地址,只能通过WEB映射解决
修改web.xml文件,可以配置映射地址
//表示要使用一个Servlet <servlet> //web.xml文件内部超作用的名字 <servlet-name>simple</servlet-name> Servlet程序所在的包类的名称 <servlet-class>cn.mldn.lxh.servlet.SimpleServlet</servlet-class>
</servlet> //Servlet 地址的映射 <servlet-mapping> //web.xml文件内部起作用的名字,此名字与上面的一致 <servlet-name>simple</servlet-name> //具体的映身路径,前面必须有一个/ <url-pattern>/demo</url-pattern> </servlet-mapping> |
执行规律在IE中输入http://localhost/虚拟地址/demo,这时会出现500错误原因是
web.xml文件还没有进行编译
1:找到classes文件夹,
用javac –d . SimpleServlet.java进行编译,会发现一些Servlet 不存在的错误
2. 编译时会提示找不到Servlet包的错误,这是因为servlet为JDK的扩展包,本身不在j2se包下,JDK提供的是java se包,而java ee包不在java se包中,需要单独配置包
3.解决:把Tomcat/common/lib中的servlet-api.jar文件复制到C:/Program Files/Java/jdk1.6.0_02/jre/lib/ext文件夹下
4.用命令javac –d . **.java进行编译
找到映射文件夹<servlet-name>web.xml中的simple,由这个simple再找到与它在<servlet>中对应用的simple,再找到 真正开发的类文件也就是cn.mldn.lxh.servlet.SimpleServlet中的java类文件夹
tomcat编译成java类
1:写好JAVA类,
2: 配置好WEB-INF下的web.xml
<servlet> <servlet-name>simple</servlet-name> <servlet-class>cn.mldn.lxh.servlet.SimpleServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>simple</servlet-name> <url-pattern>/demo</url-pattern> </servlet-mapping> |
3:编译Servlet时,有时会出现找不到servlet包的问题,这是因为servlet为JDK的扩展包,所以必须把servlet-api.jar拷贝到JDK路径下的jre/lib/ext下再进行编译
1. 输入http://localhost/test/demo时出现了java.lang.UnsupportedClassVersionError,原因是,用了高版本的1.5以上的VM编译JAVA类,运行在低版本(这里的低版本是tomcat用的JDK)上的VM上,
2. 解决:把tomcat用的JDK换成1.5以上VM