WEB服务器入门
常用的WEB服务器
- IIS
- Apache
- Tomcat
常用的动态网页技术
- CGI(Common GateWay Interface)
- API常用的有(NSAPI,ISAPI)
- ASP(Active Server Page)->VBScript,ASP.NET->C#
- PHP(Personal Home Page)
- JSP/Servlet(Java Server Page)
服务器分类
- WEB服务器 Apeche
- 应用服务器 IIS,websphere(EJB等程序)
- Servlet 容器 Tomcat
Tomcat介绍
- Tomcat启动与停止
Tomcat启动需要使用JAVA_HOME或JRE_HOME环境变量 - Tomcat的目录结构
- bin:存放各种平台下启动和关闭Tomcat的脚本文件
startup.bat:是Windows下启动Tomcat的文件
shutdown.bat:是关闭Tomcat的文件
- bin:存放各种平台下启动和关闭Tomcat的脚本文件
- lib:存放tomcat服务器和所有web应用都能访问的JAR
- work:web应用工作目录,JSP编译后的class,缓存等
- temp:临时文件夹,tomcat运行时候存放临时文件
- log:存放tomcat的日志文件
- webapps:web应用的发布目录,把Java开发的web应用(或war文件)放入这个目录,就可以通过tomcat访问
- conf:tomcat的配置文件,最重要的是server.xml
Java EE 规范
Web Application Name
+WEB-INF
|–web.xml (该web App的配置文件)
|–lib (该web App用的jar类库)
|–classes (存放编译好的servlet)
+META-INF (该Web App的上下文信息,符合Java EE标准)
Servlet
servlet简介
- Servlet是向服务器小应用程序
- 用来完成B/S架构下,客户端请求的相应处理
- 平台独立,性能优良,能以多线程方式运行
- Servlet API为Servlet提供了统一的编程接口
- Servlet要在容器中运行
- 常见的Servlet容器:
- Tomcat
- Jetty/Resin
HelloWorldDemo
在HelloWorldServlet项目创建如下Servlet,后放入Tomcat开启服务器
public class HelloWorldServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("HelloWorldServlet doGet() ");
PrintWriter out = resp.getWriter();
out.println("Hello Servlet");
out.flush();
out.close();
}
}
在浏览器打开
http://localhost:8080/Servlet_HelloWorld/servlet/HelloWorldServlet
显示:Hello Servlet
服务器端:HelloWorldServlet doGet()
收获:
1. 所有资源是放在服务器上,由服务器管理
2. web.xml配置Servlet的映射
<servlet>
<servlet-name>Servlet名</sevlet-name>
<servlet-class>Servlet类名</servlet-class>
<sevlet>
<servlet-mapping>
<servlet-name>Servlet名</servlet-name>
<url-pattern>URL<url-pattern>
</servlet-mapping>
3. 让Tomcat自动重新加载:在context.xml中<Context reloadable="true">
Servlet编程接口
- GenericServlet是所有Servlet的鼻祖
- 用于HTTP的Servlet编程都通过继承javax.servlet.http.HttpServlet实现
- 请求处理方法:
- doGet() 响应GET请求,常用
- doPost() 响应POST请求,常用
- doPut() 用于HTTP1.1
- doDelete() 用于HTTP1.1
- doHead()
- doOptions()
- doTrace()
- Servlet实例个数:在分布式系统的情况下,通常一个Servlet在服务器中只有一个实例
Servlet生命周期
- 生命全过程
- 加载ClassLoader
- 实例化
- 初始化init(Servlet config)
- 处理请求 service() doGet() doPost()
- 退出服务 destroy()
Servlet接受参数实例:
index.html
<html>
<head>
<title>index.html</title>
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="this is my page">
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->
</head>
<body>
<h1>GET:提交参数</h1>
<form action="getParameter.do" method="get">
用户名:<input name="username" type="text"/><br/>
<input type="submit" value="提交"/>
</form>
<hr/>
<h1>POST:提交参数</h1>
<form action="getParameter.do" method="POST">
用户名:<input name="username" type="text"/><br/>
<input type="submit" value="提交"/>
</form>
</body>
</html>
GetParemeters类
public class GetParemeters extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
String username = req.getParameter("username");
System.out.println("username = "+username);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
// TODO Auto-generated method stub
this.doGet(req, resp);
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0"
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_3_0.xsd">
<display-name></display-name>
<servlet>
<servlet-name>GetParemeters</servlet-name>
<servlet-class>servlet.GetParemeters</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>GetParemeters</servlet-name>
<url-pattern>/getParameter.do</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
</web-app>