背景知识介绍
J2EE的13种技术
java->servlet->jsp [技术总是有一个演变过程]
zip粘贴到word设置
回顾一下我们现有的技术
java 基础(面向对象,集合,界面,线程,文件,网络)
jdbc (java 的数据库编程)
oracle / mysql / sqlserver
html css javascript (web 开发) ->网页
设计
领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计
xml
serlvet+jsp ->java web开发[使用java技术做 web开发]
java ee 体系的介绍
servlet项目演示
web 开发介绍
静态页面 (html)
动态页面
用户可以输入数据,和页面交互(注册,购物,发帖子,付款...)
不同时间打开页面,内容是变化.
目前比较流行的左动态页面的技术 ( servlet/jsp , php , asp.net , asp, cgi )
动态网页技术的比较(了解)
bs 和 cs的比较
BS:browser server 浏览器服务器(用HttpWatch Professional抓浏览器包)
(2)cs client server 客户服务
为什么需要的web服务器/web究竟是干什么的?
模拟一个web服务器 MyWebServer.java
import java.io.*;
import java.net.*;
public class MyWebServer
{
public static void main(String []args) throws Exception{
ServerSocket ss=new ServerSocket(80);
Socket s=ss.accept();
//提示一句话
System.out.println("在 9999 上等待连接...");
OutputStream os=s.getOutputStream();
BufferedReader br=new BufferedReader(new FileReader("d:\\hello.html"));
String buf="";
while((buf=br.readLine())!=null){
os.write(buf.getBytes());
}
//关闭流
br.close();
os.close();
s.close();
}
}
通过tomcat来讲解BS结构
安装tomcat服务器
解压即可
配置
①在环境变量中添加
JAVA_HOME= 指向你的jdk的主目录(并不是bin文件目录)
在不配置JAVAHOME的前提下启动tomcat
在startup.bat的第25行中添加set JAVA_HOME=JKD路劲
启动tomcat服务器
到 tomcat 主目录下 bin/startup.bat
验证是否安装成功
http://localhost:8080(8080是默认端口如果该端口已经被占用需要修改端口)
tomcat安装后问题解决
(1)tomcat无法正常启动的原因
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
JAVA_HOME 配置错误,或者没有配置
如果你的机器已经占有了8080 端口,则无法启动,
解决
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
(1) 你可以8080 先关闭
netstat –an
netstat –anb 来查看谁占用该8080
(2) 主动改变tomcat的端口.
到 conf/server.xml 文件中修改
server.xml的端口号)protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>
(3) 能够正常启动,但是会导航到另外一个页面.
去修改工具->管理加载项,把默认的导航给禁用即可.
(4) 在访问 tomcat时候,一定保证 tomcat 服务器是启动
tomcat的目录结构文件
bin: 启动和关闭tomcat的bat文件
conf: 配置文件
-->server.xml : 该文件用于配置和 server 相关的信息, 比如 tomcat启动端口后,配置Host, 配置Context 即web应用
-->web.xml : 该文件配置与 web应用(web应用就相当于是一个 web站点)
-->tomcat-users.xml: 该文件用户配置tomcat 的用户密码 和 权限
lib 目录: 该目录放置运行tomcat 运行需要的jar包
logs 目录:存放日志, 当我们需要去查看日志的时候,很有用!,当我们启动tomcat错误时候,可以查询信息.
webapps 目录: 该目录下,放置我们的web应用(web 站点), 比如:
建立 web1 目录 下面放置我们的html 文件 jsp 文件..图片... 则 web1就被当做一个web应用管理起来(☞ 特别说明tomcat 6.0 以后支持 tomcat 5 版本 还有别的设置)
work: 工作目录: 该目录用于存放jsp被访问后 生成的对应的 server文件 和.class文件
如何去访问一个 web 应用的某个文件
首页面设置及目录规范结构
现在我们要求:把hello.html文件设置成 该 web应用的首页,则需要把web应用的目录格式做的更加规范:
①在web文件夹下配置WEB-INF文件夹
②在 web.xml 文件中添加配置的代码:
hello1.html
③通过http://localhost:8088/web1来访问hello1.html
web-inf目录下的 classes目录将来是存放 class文件
lib 目录将来时存放 jar文件
web.xml 配置当前这个web应用的信息.
tomcat如何去管理虚拟目录
需求: 当我们把 web 应用放到 webapps目录,tomcat会自动管理,如果我们希望tomcat可以管理其它目录下的web应用?->虚拟目录配置
我在d 盘有一个web应用.
虚拟目录配置步骤:
找到server.xml文件
编辑host节点 添加Context path
在server.xml中添加:
myweb2:是访问时输入的web名,实际取出的是web2中的资源
"d:\web2":绝对路径下web2中存放资源如:hello2.html
实际访问时输入的地址:http://localhost:8088/myweb2/hello2.html
绝对路径:从根分区找某个文件
相对路径:从该文件位置去找另一个文件
③ 需要重启tomcat,才能生效.(因为是采用的dom技术讲信息加载到内存中)
context 的几个属性的说明
path:
docbase:
reloadable ;如果设为ture ,表示 tomcat 会自动更新 web应用,这个开销大,建议在开发过程中,可以设为true, 但是一旦真的发布了,则应当设为false;
upackWAR: 如果设为 ture ,则自动解压,否则不自动解压.
①:打war包 cd:d/web2 然后jar –cvf web2.war *
②:
浏览打好的war包 Deploy发布后会在webapps中自动生存改文件
配置域名
我们看和一个如何配置自己的主机名:
我们在实际访问网站的过程中,不可能使用http://localhost:8080/web
HYPERLINK "http://localhost:8080/web应用/资源名" \t "_parent" 应用
HYPERLINK "http://localhost:8080/web应用/资源名" \t "_parent" /
HYPERLINK "http://localhost:8080/web应用/资源名" \t "_parent" 资源名 的方式去访问网站,实际上使用类似
http://www.sina.com.cn 或者
http://news.sina.com.cn 的方式去访问网站,这个又是怎么实现的呢?
看看ie浏览器访问一个web站点的流程.
实现的步骤如下:
(1) 在C:\WINDOWS\system32\drivers\etc 下的host文件 添加127.0.0.1 www.sina.com.cn
(2) 在tomcat 的server.xml文件添加主机名
(3) 在d:\web3 加入了一个 /WEB-INF/web.xml 把 hello2.html设为首页面
如果连端口都不希望带,则可以吧tomcat的启动端口设为80即可.
(4) 重启生效
tomcat体系的再说明
图:
如何配置默认主机:
在tomcat/conf/server.xml 文件
为什么需要servlet技术?
比如需求:我们希望用户可以贴,用户还可以回复 ....这样一些和用户可以交互的功能,用普通的java技术就完成不了, sun 就开发了 servlet技术供程序员使用.
servlet的介绍
servlet 其实就是java程序(java类)
该 java 程序(java 类)要遵循servlet开发规范
serlvet是运行在服务端
serlvet 功能强大,几乎可以完成网站的所有功能
是学习jsp基础
tomcat 和 servlet 在网络中的位置
servlet的生命周期是怎样的/servlet究竟是怎样工作的
UML 时序图帮助大家理解
参看execel
面试题: 请简述servlet的生命周期(
工作流程
财务工作流程表财务工作流程怎么写财务工作流程图财务工作流程及制度公司财务工作流程
)
答:
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
版本:
①WEB服务器首先会检查是否已经装载并创建了该servlet实例对象。如果是直接进行第④步,否则执行第②步。
②装载并创建该Servlet的一个实例对象。
③调用Servlet实例对象的init()方法。
④创建一个用于封装HTTP请求消息的HttpServletRequest对象和一个代表HTTP响应消息的HttpServletResponse对象,然后调用service()方法并将请求和响应作为参数传递进去。
⑤WEB应用被停止或重启之前,Servlet引擎将卸载Servlet,在卸载之前调用Servlet的destroy()方法
当serlvet 第一次被调用的时候,会触发init函数,该函数会把servlet实例装载到内存.init函数只会被调用一次
然后去调用servlet 的 service 函数
当第二次后访问该servlet 就直接调用 service 函数.
当 web应用 reload 或者 关闭 tomcat 或者 关机 都会去调用destroy函数,该函数就会去销毁serlvet
Servlet的生命周期
当客户端第一次向web服务器发出一个servlet请求时,web服务器将会创建一个该servlet的实例,并且调用servlet的init()方法;如果当服务器已经存在了一个servlet实例,那么,将直接使用此实例;然后再调用service()方法,service()方法将根据客户端的请求方式来决定调用对应的doXXX()方法;当 web应用 reload 或者 关闭 tomcat 或者 关机,web服务器将调用destroy()方法,将该servlet从服务器内存中删除。
生命全过程:
1.加载
2.实例化
3.初始化
4.处理请求
5.退出服务
开发servlet有三种方法
实现 Servlet接口
通过继承 GenericServlet
通过继承 HttpServlet
①实现servlet接口的方式
需求如下: 请使用实现 接口的方式,来开发一个Servlet ,要求该Servlet 可以显示Hello,world,同时显示当前时间.
步骤
在webapps下建立一个web应用 hspWeb1
在hspWeb1 下建立 WEB-INF->web.xml [web.xml可以从 ROOT/WEB-INF/web.xml拷贝]
在WEB-INF 下建立 classes 目录(我们的Servlet 就要在该目录开发.),建立 lib文件夹
开发MyServlet.java
package com.hsp;
import javax.servlet.*;
import javax.servlet.http.*; 为了能将servlet-api.jar包引入,需要配置环境变量
变量值; E:\tomcat\apache-tomcat-6.0.20\lib\servlet-api.jar 记得带上文件名
import java.io.*;
class MyFirstServlet implements Servlet
{
//该函数用于初始化servlet,就是把该servlet装载到内存中
//该函数只会被调用一次
public void init(ServletConfig config)
throws ServletException{
}
//得到ServletConfig对象
public ServletConfig getServletConfig(){
return null;
}
//该函数是服务函数,我们的业务逻辑代码就是写在这里
//该函数每次都会被调用
public void service(ServletRequest req,
ServletResponse res)
throws ServletException,
java.io.IOException{
}
//该函数时得到servlet配置信息
public java.lang.String getServletInfo(){
return null;
}
//销毁该servlet,从内存中清除,该函数被调用一次
public void destroy(){
}
}
根据Servlet规范,我们还需要部署Servlet
MyFirstServlet③
com.hsp.MyFirstServlet 注意:后面不要带.java④
MyFirstServlet②
/ABC①
服务器调用流程:http://localhost:8088/ABC--->①--->②--->③--->④
在浏览器中测试
在浏览器中输入
http://localhost:8088/hspweb1/ABC
分析一下自己写可能出现的错误
MyFirstServlet 名字不一样 (启动tomcat错误)
com.hsp.MyFirstServlet 写成 MyFirstServlet.java,会报告500
资源名自己写错
404"
http://localhost:8088/hspweb1/错误的资源url-pattern
404
错误
补充: 如果使用javac 去编译一个java文件,则需要带命令参数
javac –d . java文件
补充: 如何不重启tomcat,就指定去 reload 一个web应用,方法:
进入到 tomcat 的 manager:
点击reload即可.
课堂练习
自己使用 实现Servlet接口的方法,开发一个Servlet,该servlet 可以输出自己的名字
在显示当前日期.
②使用GenericServlet开发servlet
了解即可:
案例 :
package com.hsp;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MyGenericServlet extends GenericServlet
{
public void service(ServletRequest req,
ServletResponse res)
throws ServletException,
java.io.IOException{
res.getWriter().println("hello,world,i am geneirc servlet");
}
}
将该Servlet部署到web.xml文件中:
MyGenericServlet
com.hsp.MyGenericServlet
MyGenericServlet
/MyGenericServlet
③使用继承 HttpServlet 的方法来开发Serlvet
在软件公司 90%都是通过该方法开发.
举例说明; 还是显示 hello,world 当前日期
代码:
package com.hsp;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class MyHttpServlet extends HttpServlet
{
//在HttpServlet 中,设计者对post 提交和 get提交分别处理
//回忆 ,默认是get
protected void doGet(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException,
java.io.IOException{
resp.getWriter().println("i am httpServet doGet()");
}
protected void doPost(HttpServletRequest req,
HttpServletResponse resp)
throws ServletException,
java.io.IOException{
resp.getWriter().println("i am httpServet doPost() post name="+req.getParameter("username"));
}
}
还有一个login.html