1.servlet本质
SUN公司指定的JavaEE规范:Servlet规范。Servlet接口是Servlet规范中核心接口。
浏览器浏览网页流程图:
服务器端的小java程序不能随意编写,必须实现SUN公司的servlet接口,且实现接口中的service()方法
2.项目实例
sun公司规定了写web项目的目录结构,tomcat(web服务器、web容器)也知道,可以自动识别。
新建一个项目名为FirstServletWebApp,里面必须有WEB-INF文件夹,WEB-INF里的文件也是规定的:
classes放字节码文件(就是.java文件编译后的字节码文件保存到classees文件夹下),lib放jar包,与WEB-INF在同一目录下还可以放其他文件夹。
写一个继承Servlet的java类,加入五个方法:
重点写service()方法:
编译该HelloServlet.java生成HelloServlet.class文件,加到WEB-INF的classes文件夹下。
WEB-INF下的web.xml:
在web-app标记中添加如下规定格式的标记(功能是完成请求路径与Servlet类名之间的绑定关系):
servlet标记和servlet-mapping标记中的servlet-name标记中的内容可以随意编写,但是两者须相同。servlet标记中的servlet-class标记中的内容是关联的类的名称,url-pattern标记中的名称可以随意编写,但是必须以“/"开头,这个路径是个虚拟路径,是servlet-class标记内指定的类的代号。用户在浏览器中输入这个路径(前面加项目名称)tomcat就会执行这个类的class文件(url-pattern标记可以有多个)。
敲回车,控制台输出Hello World!:
另一个例子:新建项目PointToBrowser
新建一个继承Servlet的类WelcomeServlet:
在service()方法中写入:
与上一个例子不同的是,这里不是控制台输出,而是通过PrintWriter对象,将html字符串输出到浏览器上,浏览器解释执行。
编译生成class文件放到classes文件夹下。
修改web.xml文件:
浏览器输入后回车显示网页:
在java类的service()方法中加下面一句代码可以正常显示中文,但是必须写在PrintWriter out = response.getWriter();之前:
也可以设置直接显示out输出流信息而不是渲染成网页:
response.setContentType(“text/plain”);