Web Application 互联网应用
1. Programming编程: XXX.java -> XXX.class
2. Deploymen部署: xxx.xml(web.xml)
WEB 应用在Tomcat服务器里的路径
================================================
Tomcat 安装 http://tomcat.apache.org
================================================
1.exe可执行文件,直接安装
2.zip 解压缩
注意:安装文件还有包含admin的和没有的,没有的从官方下载admin部分 然后安装或解压缩
安装后,访问http://localhost:8080 出现tomcat界面 就表示安装成功
安装后的配置
1.用户配置
配置文件:\conf\tomcat-users.xml
角色配置:如果没有添加如下配置
<role rolename="manager"/>
<role rolename="admin"/>
用户:<user username="admin" password="admin" roles="admin,manager"/>
2.端口号可以修改
配置文件:\conf\server.xml
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
3.修改server.xml
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" />
在配置中添加URIEncoding="UTF-8"
修改目的:为了解决使用HTTP Get方法传递中文参数乱码的问题
4.修改 context.xml
把<context>修改成<context reloadable="true">
修改目的:当web应用中的文件或web.xml文件修改后,tomcat服务器会自动重新加载当前web应用,
避免重新启动tomcat。
注意: 这个修改会对tomcat的运行性能有影响,开发阶段设为true便于我们开发,而运行使用阶段
最好修改为false
---------------------------------------------------------------------------------------
Module 1:Servlets Basics
1. CGI: common gateway interface 通用网关接口
该技术就是为了解决动态交互。程序来实现数据在Web上的传输,使用的是如Perl这样的语言编写的
缺点:基于进程,它对于客户端作出的每个请求,必须创建CGI程序的一个新实例新进程,
这样占用大量的内存资源。由此才引入了Servlet技术。
Servlet:Sun公司1997年推出了CGI的Java版本技术Servlet。Servlet是一个用java编写的应用程序,在服务器上运行,处理请求信息并将其发送到客户端。对于客户端的请求,只需要创
建Servlet的实例一次,因此节省了大量的内存资源。Servlet在初始化后就保留在内存中,因此每次作出请求时无需加载。
2. HTTP: request method -> get, post, delete
3. staic HTML 静态HTML: xxx.HTML, xxxxx.htm
dynamic HTML 动态HTML : produced by program (CGI script, servlet/jsp, etc.)
4. Servlet: run on server(JRE-VM)
Applet: run on client(JRE-VM)
Servlet (interface)
|
| public ServletConfig getServletConfig()
| public java.lang.String getServletInfo()
|
| public void init(ServletConfig config) throws ServletException
| public void service(ServletRequest req, ServletResponse res)
| throws ServletException, java.io.IOException
| public void destroy()
|
GenericServlet (abstract class)
|
|
* HTTPServlet (abstract class)
* public void doGet(HttpServletRequest req, HttpServletResponse res){ }
* public void doPost(HttpServletRequest req, HttpServletResponse res ){ }
* HttpServletRequest: interface
* HttpServletResponse: interface
* public void setContentType(java.lang.String type)
Example: setContentType("text/html"); // char stream : text/xml
setContentType("image/gif"); //byte stream : image/jpeg
* public java.io.PrintWriter getWriter() throws java.io.IOException
Example: PrintWriter out = res.getWriter();
out.println(string); // send to client
* public ServletOutputStream getOutputStream() throws java.io.IOException
Example: ServletOutputStream out = res.getOutputStream();
out.write(?);
===============================================================================================
实现一个Web Application所需的基本内容
1. 写一个类扩展HttpServlet,重写doGet和doPost方法
2. 生成web.xml配置文件
==============================================================================================
<1>如何写一个Servlet
//扩展HttpServlet类
public class XXXXXServlet extends HttpServlet{
//override复写doGet方法
public void doGet(HttpServletRequest req, HttpServletResponse res){ // 被service方法调用
//parse request 处理请求
// do something 完成要做的事
// send reponse !!!! 返回响应
}
//或复写doPost方法
public void doPost(HttpServletRequest req, HttpServletResponse res){ //被service方法调用
// parse request 处理请求
// do something 完成要做的事
// send reponse !!!! 返回响应
}
}
<2>web.xml中的配置:servlet和servlet-mapping
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>servletFirstTest.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/servlet/HelloWorldServlet</url-pattern>
</servlet-mapping>
例如:
http://localhost:8080/servletTest/servlet/HelloWorld
/servlet/HelloWorld 是 url-pattern
服务器从web.xml查找: url-pattern -> servlet-name -> servlet-class
----------------------------------------------------------------------------------------------
Servlet life cycle生命周期:
----------------------------------------------------------------------------------------------
new instance
init(?) -> be called only once
service(?,?) -> be called many times, by different thread(client)
destroy() -> be called only once
public void service(HttpServletRequest req, HttpServletResponse res) { // in HttpServlet
...
if(request method is get)
doGet(req, res);
else if(request method is post)
doPost(req, res);
else if(request method is delete)
doDelete(req, res);
else ...
}
servlet生命周期
servlet 运行在servlet 容器中,其生命周期由容器来管理。servlet 的生命周期通过 javax.servlet.Servlet接口中的init(),servce(),和destory();方法表示。
1,加载和实例化
servlet 容器负责加载和实例化servlet 当容器启动或在容器中检测到需要这个servlet来响应一个请求 时。创建servlet实例。容器通过java 的反射API来创建servlet实例.所以servlet中不应该提供带参数的构造函数。
2,初始化
在servlet实例化后,容器必须调用 init() 方法来初始化这个对象。初始化的目的是为了让servlet对象在处理客户请求之前完成一些初始工作。对于每一个servlet实例,init() 方法只会调用一次。
3,请求处理
servlet 容器调用service()方法对请求处理。servlet 实例通过ServletRequest对象获得客户端的相关信息和请求信息。在对请求处理后调用ServletResponse对象设置响应信息。
4,服务终止
当容器检测到一个servlet实例应该从服务器中移除时,容器调用实例的destory方法。让实例释放它所占用的资源。如果在次发请求就会 创建一个新的servlet 实例。
在整个servlet 的生命周期中,创建servlet实例,调用实例的init()和destory()方法都只执行一次,当初始话完成后,servlet容器将该实例保存在内存中,通过servlce() 方法为接受请求服务。
-----------------------------------------------------------------------------------------------
WEB 应用在Tomcat服务器里的路径
->Tomcat5.0
-> webapps
->yourWebApplicationName
->WEB-INF
->web.xml
->classes
-> packageName
-> XXX.class
->lib
-> xxxx.jar
->xxx.html
->xxx.jsp
->xxxx.jpeg
-> myDir
-> xxxxx.html
-> xxxxx.jsp
-------------------------------------------------------------------------------
web.xml配置文件 url-pattern -> servlet-name -> servletclass
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>HelloWorld</servlet-name>
<servlet-class>sample.HelloWorld</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>DateTest</servlet-name>
<servlet-class>sample.DateTest</servlet-class>
</servlet>
<servlet>
<description>This is the description of my J2EE component</description>
<display-name>This is the display name of my J2EE component</display-name>
<servlet-name>ImageTest</servlet-name>
<servlet-class>sample.ImageTest</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/servlet/HelloWorld</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>DateTest</servlet-name>
<url-pattern>/servlet/DateTest</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>ImageTest</servlet-name>
<url-pattern>/servlet/ImageTest</url-pattern>
</servlet-mapping>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
------------------------------------------------------------------------------
在浏览器输入:
http://localhost:8080/servletTest/servlet/HelloWorld
/servlet/HelloWorld 是 url-pattern
服务器从web.xml查找: url-pattern -> servlet-name -> servlet-class
------------------------------------------------------------------------------
Assignment
1. install Tomcat5.0: jakarta-tomcat-5.0.28.exe
2. install MyEclipse 5.5: MyEclipse_5.5GA_E3.2.2_FullStackInstaller.exe
3. write your servlet program
4. deploy your web application
5. run
******************************************************************************
******************************************************************************
总 结:
******************************************************************************
******************************************************************************
==============================================================================
开发Web应用(Servlet)步骤
==============================================================================
1.安装tomcat,浏览器中http://localhost:8080可以访问到tomcat页面
2.正确安装好开发环境Myeclipse插件
3.在IDE中配置好Server服务器Tomcat,能够正确部署和启动web项目
4.开发web工程
-->创建web工程
-->编写web(Servlet)程序
5.部署deploy 工程
6.启动服务器tomcat
7.浏览器中访问工程 http://localhost:8080/工程名/url-pattern
===============================================================================================
实现一个Web Application所需的基本内容
1. 写一个类扩展HttpServlet,重写doGet和doPost方法
2. 生成web.xml配置文件
==============================================================================================
<1>如何写一个Servlet
//扩展HttpServlet类
public class XXXXXServlet extends HttpServlet{
//override复写doGet方法
public void doGet(HttpServletRequest req, HttpServletResponse res){ // 被service方法调用
//parse request 处理请求
// do something 完成要做的事
// send reponse !!!! 返回响应
}
//或复写doPost方法
public void doPost(HttpServletRequest req, HttpServletResponse res){ //被service方法调用
// parse request 处理请求
// do something 完成要做的事
// send reponse !!!! 返回响应
}
}
<2>web.xml中的配置:servlet和servlet-mapping
<servlet>
<servlet-name>HelloWorldServlet</servlet-name>
<servlet-class>servletFirstTest.HelloWorldServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>HelloWorldServlet</servlet-name>
<url-pattern>/servlet/HelloWorldServlet</url-pattern>
</servlet-mapping>
例如:
http://localhost:8080/servletTest/servlet/HelloWorld
/servlet/HelloWorld 是 url-pattern
服务器从web.xml查找: url-pattern -> servlet-name -> servlet-class
========================================================================================