Servlet学习笔记2——WebApp开发与HttpServletResponse

FirstWebApp的开发步骤

l 在CATALINA_HOME/webapps/目录下新建FirstServletWebApp文件夹,该文件夹就是该webapp的根。

l 在webapp的根下新建文件夹起名WEB-INF,必须全部大写,而且必须完全相同,这个文件夹是SUN制定的规范,名字是规范,位置也是规范。

l 在WEB-INF目录下新建一个文件夹必须叫做classes,这个文件夹的名字以及位置也是SUN制定的规范,这个文件夹下将来存放javaweb程序员开发的java的字节码文件。

l 在WEB-INF目录下必须有一个配置文件叫做web.xml,这个配置文件可以从其他项目中拷贝。该文件在Tomcat服务器启动的时候解析,所以这个文件如果编写的不合语法,启动Tomcat服务器的时候会出现XML文件的解析异常。如果这个文件解析失败,表示该webapp启动失败(Tomcat可以启动成功),一个webapp对应一个web.xml文件。一个合法的web.xml文件应该具备以下信息:

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">
</web-app>

l 编写java源程序,该java源程序可以在任意位置编写,只要将其编写java源代码编译生成字节码文件就可以。最终服务器执行的是字节码程序。执行的是classes目录中的字节码。(此时在WEB-INF目录下新建src文件夹,这不是必须的,不是SUN制定的规范)

l 编写HelloServlet实现javax.servlet.Servlet接口并且重点实现service方法。

l 将servlet-api.jar配置到环境变量classpath中。(只是让java源程序编译生成正常的字节码文件)

l 将HelloServlet.java源程序编译生成字节码,将字节码拷贝到classes目录下。

l 开始编写web.xml文件,如下所示:(web.xml文件中配置的标签是SUN制定的规范,标签不能随便写,因为Tomcat服务器已经编写了web.xml文件的解析程序,Servlet规范包括文件的名称、文件的位置、类、接口、配置文件编写方式等。)

<?xml version="1.0" encoding="ISO-8859-1"?>
<web-app xmlns="http://java.sun.com/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
   version="2.5">
	<servlet>
		<servlet-name>firstServlet</servlet-name>
		<servlet-class>HelloServlet</servlet-class>
	</servlet>
	<servlet-mapping>
		<servlet-name>firstServlet</servlet-name>
		<url-pattern>/servlet/hello</url-pattern>
		<url-pattern>/a/b/c/d/e/f</url-pattern>
	</servlet-mapping>
</web-app>

注:一个servlet标签对应一个servlet-mapping标签,servlet标签和servlet-mapping标签通过servlet-name进行联系,所以servlet-name标签中的文本可以随意编写,只要一致即可。servlet-class标签配置servlet的完整类名,如果这个类有包名,必须添加包名。url-pattern主要编写请求路径,这个请求路径必须以“/”开始,只要以“/”开始即可,后续的具体路径可以随意(但是这个路径一旦定下来,浏览器向服务器发送请求的时候,超链接发送的请求路径必须和url-pattern中配置的路径一致),web.xml文件的配制主要作用是将“Servlet类名”和“请求路径”绑定在一起。

l 启动Tomcat服务器,打开浏览器在地址栏上直接输入URL访问Servlet,URL如下所示:
(http://192.168.1.100:8080/FirstServletWebApp/servlet/hello)
(http://192.168.1.100:8080/FirstServletWebApp/a/b/c/d/e/f)

l 当然我们也可以编写HTML,在HTML中使用超链接发送请求,超链接的编写方式如下所示:

 <a href="/FirstServletWebApp/servlet/hello">访问HelloServlet</a>

 <a href="/FirstServletWebApp/a/b/c/d/e/f">访问HelloServlet</a>

l 路径总结:到目前为止路径共编写了两个:

超链接中的路径

web.xml文件中的路径

它们路径都是以“/”开始,都是使用了绝对路径,其中超链接上的路径比web.xml文件中的路径多一个“项目名称”

l 如果希望向浏览器输出HTML代码执行以下程序:

设置响应的内容类型以及字符编码方式,解决响应中的中文乱码问题(必须在获取响应流之前设置)

​ response.setContentType(“text/html;charset=GB18030”);

获取响应流,该响应流执行特定的浏览器客户端(这个响应流不需要程序员手动关闭,Tomcat服务器管理。)

​ PrintWriter out = response.getWriter();

打印

​ out.print(); 或者out.println(); ,后者是将HTML源代码换行,如果希望网页中换行,需要使用

l webapp的固定目录如下所示:

在这里插入图片描述

HttpServletResponse对象

 javax.servlet.ServletResponse是接口,是SUN制定的响应对象,专门完成向浏览器的响应动作。
 javax.servlet.http.HttpServletResponse父接口是ServletResponse
 获取响应流:PrintWriter out = response.getWriter();
 解决响应中的中文乱码问题(在获取响应流之前设置,设置响应的内容类型以及字符编码方式):response.setContentType(“text/html;charset=UTF-8”);内容类型编写错误会导致文件下载。
 关于PrintWriter中的方法:
 println方法:输出到浏览器的HTML源码换行
 print方法:输出到浏览器的HTML源码不换行
 如果想在网页中做到换行效果,需要使用HTML识别的
标签。
 向特定的浏览器客户端发送Cookie:response.addCookie(cookie);

猜你喜欢

转载自blog.csdn.net/kilotwo/article/details/114155441