JavaWeb环境配置
Web服务器动态执行的程序可分为两种:
①CGI(Common Gateway Interface):通用网关接口。完全用编程语言编写的程序 ②嵌入了程序代码的HTML文档,如:PHP、ASP、JSP文档等
JavaWeb应用的内容
Servlet组件:标准S而vlet接口的实现类,运行在服务器端,包含了被Servlet容器动态调用的程序代码
JSP组件:包含Java程序代码的HTML文档,运行在服务器端。当客户请求JSP文件时,Servlet容器先把它编译成Servlet类,然
后动态调用它的程序代码
相关的Java类:开发人员自定义的与web应用相关的Java类
静态文档:存放在服务器端的文件系统,如HTML文档、图片文件和视频音频文件等。当客户端请求访问这些文件时,Servlet容
器先从本地文件系统读取这些文件的数据,再把它发送到客户端
客户端类:由客户端来运行的类。Applet是典型的客户端类
web.xml文件:JavaWeb应用的配置文件,采用XML格式。该文件必须位于WEB-INF目录下
JavaWeb应用环境搭建
①在eclipse部署JavaWeb项目:添加服务器,创建项目;注意buildpath添加server环境
②手工搭建环境:可以把项目部署在Tomcat\webapps\myweb 或者 自定义虚拟目录server.xml 在host标签内添加 <Context path="/hzweb" docBase="c:/myweb" reloadable="true"></Context>
创建项目的目录结构:创建请求html表单、创建响应请求的Servlet类、创建jsp
myweb(web应用根目录,所有web资源都存放于此)
index.html 表单action="dispatcher"
index.jsp <%=request.getAttribute("user")%>
/src 存放Java源代码
/mypack
/WEB-INF:存放web应用配置文件
web.xml
/lib 存放所需各种jar包
/classes 存放所需各种字节码文件
/mypack
=======web.xml===========
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd" version="3.1" metadata-complete="true">
<display-name>Welcome to Tomcat</display-name>
<description>
Welcome to Tomcat
</description>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<servlet>配置servlet
<servlet-name>dispatcher</servlet-name>
<servlet-class>mypack.DispatcherServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>dispatcher</servlet-name>
<url-pattern>/dispatcher</url-pattern>
</servlet-mapping>
</web-app>
-------web.xml详解--------
web.xml文件可以包含如下配置信息:
Servlet的定义、Servlet的初始化参数、Servlet及JSP的映射、安全域配置参数、welcome文件清单、资源引用、环境变量的定义
web.xml第一行指定了XML的版本和字符编码,第二行DocType指定文档类型,接下来声明了一个<web-app>元素,它是根元素,所有关于JavaWeb应用的具体配置元素都将加入到这个<web-app>元素中
<welcome-file-list>设置默认主页
<welcome-file>index.html</welcome-file>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
关于Servlet的配置信息:
<servlet>可以对应多个servlet-mapping
<servlet-name>dispatcher</servlet-name>指定Servlet名称
<servlet-class>mypack.DispatchServlet</servlet-class>指定Servlet对应的字节码文件
<init-param>
<param-name>debug</param-name>
<param-value>2</param-value>
</init-param>
<load-on-startup>1</load-on-startup>指定Servlet加载次序,值为自然数,值小的优先加载,若不设定,则将在用户首次访问这个Servlet时加载
</servlet>
<servlet-mapping>为Servlet映射一个URL
<servlet-name>dispatcher</servlet-name>对应指定的Servlet名字
<url-pattern>/dispatcher</url-pattern>指定访问Servlet的相对URL路径,自定义URL格式
</servlet-mapping>
=====ServletDemo========
package mypack;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.util.*;
public class DispatcherServlet extends GenericServlet{
private String target = "/index.jsp";
//响应客户端请求
public void service(ServletRequest request, ServletResponse response) throws ServletException,IOException{
String username = request.getParameter("username");//读取表单提交过来的用户名数据
String password = request.getParameter("pwd");
System.out.println(username+"\t"+password);
request.setAttribute("user",username);
request.setAttribute("password",password);
//把请求转发给index.jsp
ServletContext context = this.getServletContext();
RequestDispatcher dispatcher = context.getRequestDispatcher(target);//请求转发到目标资源
dispatcher.forward(request,response);
}
}
注意:编译Servlet时,要将ServletAPI的JAR文件(Servlet-api.jar)加入到classpath中。(或者JRE的lib中)
应用打包:JavaWeb应用打包为WAR文件:在DOS中 c:\myweb jar cvf c:\myweb.war *.*
解包命令:jar xvf c:\hzweb.war //把war包放在webapps目录,启动Tomcat会自动解包
=====HTTP请求与响应============
URL(Uniform Resource Locator)统一资源定位器。由三部分组成
①应用层协议http②主机IP地址或域名③资源所在路径/文件名
URI(Uniform Resource Identifier)统一资源标识符(资源可以使文本、图片、视频等)
HTTP(Hypertext Transfer Protocol)超文本传输协议
http请求由3部分构成:①请求方法、URI和http协议版本②请求头(Request Header)③请求正文(Request Content)
http请求方式:get、post、head、put、delete
get:请求服务器文档,并由服务器把文档发送给用户
post:客户端发送大量信息给服务器,除请求文档URI,好包括请求正文
head:客户端和服务器交流一些内部数据,通常是为其他请求方式起辅助作用
put:客户程序把文档上传给服务器
delete:请求删除服务器上某个文档
请求头(Request Header):包含许多有关客户端环境和请求正文的有用信息。请求头可以声明浏览器类型、所用语言、请求正文
类型及长度等
请求正文(Request Content):和请求头之间必须以空行分隔。请求正文可以包含post方式提交的表单数据
CRLF(Carriage Return Linefeed):指回车符和行结束符\r\n
HTTP相应格式:①http协议的版本、状态码和描述②响应头(Request Header)③响应正文(Request Content)
状态码:1xx:信息提示,表示临时的响应 2xx响应成功 3xx重定向 4xx客户端错误 5xx服务器错误
常见的状态码:200响应成功、400错误的请求、405服务器不支持客户的请求方式、500服务器内部错误
响应头(Request Header)和请求头一样包含许多有用的信息,如:服务器类型、正文类型及长度等
响应正文(Request Content):服务器返回的具体数据,它是浏览器真正请求访问的信息,常见的是HTML文档
MIME(Multipurpose Internet Mail Extension)多用途网络邮件扩展协议,保证客户端和服务器能看懂发送的正文数据