java->servlet->jsp
1、静态页面(html)
动态页面:和用户交互,不同时间也不同
常用技术:jsp/servlet asp(快淘汰了) php(l linux a apache m mysql p php)asp.net
2、b/s :browser/server http请求
c/s :client/server (客户端由自己开发) tcp/ip协议(socket)
3、web服务器
tomcat服务器(小型或中型)(开源)、jboss(开源)、weblogic、webSphere
如何模拟一个简单的服务器?【作业】
4、安装tomcat
1、解压
2、startup.bat
3、配置环境变量:高级---环境变量---新建:JAVA_HOME
路径:jdk所在的目录(如果后面没有其它路径,不要加;)
4、测试:http//:localhost:8080
【如何主打更改8080端口?conf---server.xml----port="8080"改一下就行】
5、在访问的时候一定要保证是启动的。
【*****如何在不配置电脑的环境变量下,启动?---startup.bat打开,在第25行写上set JAVA_HOME=路径】
5、tomcat的文件目录
bin:关闭和启动
conf:配置文件
server.xml:与server相关的文件配置,比如启动时的端口
配置context,即web应用
web.xml:配置与一个web应用的配置,相当于一个站点
tomcat-users.xml:配置用户密码和权限
lib:放置支撑的jar包
logs:存放日志,当启动出错的时候,可以查看日志
webapps:存放我们的web应用,即站点,建立web目录,存放html.jsp,图片等,则web目录会被当做web应用管理的
但这样只在(版本5.0后的才可以)
work:工作目录,存放jspb被访问后生产的相应的servlet、class文件
6、web应用(注意其结构)
一个管理文本站点的目录,也叫web应用工程
7、tomcat如何管理虚拟目录?
在server.xml中<Host>节点加
<Context path="/A" docbase="绝对路径"/> ----重启生效
A---是制定的web名称,用作访问时的名称
8、Context 几个属性的说明
path
docbase
reloadable:若设为true,自动更新web应用,建议在开发时设为true,在产品发布时设为false
设为uppackwar:设为true,自动解压
9、如何设置首页?
图
10、servlet
实现的三种方式:
1.实现servlet接口
2.继承GernericServlet
3.继承HttpServlet
【注意,用javac 命令编译打包文件时要带参数 javac -d . 文件
11、servlet就是java程序(java类)
该java类要遵循servlet开发规范
servlet是运行在服务器端的
功能很强大,几乎可以完成网站的所有功能,是学习jsp的基础。
12、第一个servlet:
(1)建立一个web文件夹,在该文件下建立WEB-INF文件夹
(2)WEB-INF文件夹文件名不能改,在里面建一个web.xml文件(可以从root文件下拷贝过来)/一个class文件夹、、一个lib文件夹
(3)在class文件夹下建立java文件,在dos窗口编译
建包的java文件在编译时用javadoc -d . 源文件
提示找不到servlet等包??--------到tomcat-----lib文件夹中找到servlet.jar----配置相应路径的classpath环境变量
(4)编译成功后部署-----在web.xml中部署
如何部署?
------从exmples中的web.xml文件中拷贝相应部署过来就可以
<!--根据servlet规范部署servlet-->
<servlet>
<!--可以自己取名,默认servlet的名字 [注册]-->
<servlet-name>MyFristServlet</servlet-name>
<!--要指定放在哪个包下,形式是包/包/.../类【全路径】-->
<servlet-class>com.hsp.MyFristServlet</servlet-class>
</servlet>
<!--servlet的映射【已经注册的名字可以多次映射】-->
<servlet-mapping>
<!--该名和上面的名字必须一样-->
<servlet-name>MyFristServlet</servlet-name>
<!--将来访问servlet的资源名部分【即对外访问的路径】-->
<url-pattern>/ABC</url-pattern>
</servlet-mapping>
(5)启动tomact------在浏览其中输入http//localhost::8080/web文件夹/资源名(如上面配置的/ABC)
(6)如何向浏览器中输出文字??
service()函数中ServletResponse来完成:res.getWriter().println("Helloworld!");
servlet每次运行,service()都会运行。
13、tomcat 7的用户名设置的问题
不同于以往的Tomcat版本,Tomcat7.0将manager角色细化为manager-gui,manager-script,manager-jmx,manager-status,
所以要使用Tomcat7.0,需要首先去conf\tomcat-users.xml添加角色与用户信息,具体如下:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
如何不要关闭和重启tomcat来完成更新,用reload即可
stop是表示停站,网站不服务。
14、servlet的工作流程
当servlet第一次调用时,init()会把servlet加载到内存,该函数只会调用一次;
然后去调用servlet的service函数,当再次访问该servlet时,就直接调用servlet的service函数;
当web应用reload或关闭tomcat或关机时,都会调用destroy(),去销毁servlet函数
15、三种方式
GenericServlet 开发,是Servlet的子类,是抽象类,它只含一个service()函数,也要部署;(了解即可)
HttpServlet:继承了GenericServlet 也实现了Servlet接口,90%的网站java开发都是用该种形式开发的。
提供了post提交的方法和get提交的方法,默认是get。
实现两个方法: doget()
dopost()
get和post提交的区别:
get:响应速度快
post:安全,提交的长度无限制理论上不超过64K
16、使用myeclipse开发servlet的流程:
可支持servlet,jsp,struts,hibernate,spring
(1)建立web工程
(2)新建一个servlet: //大部分开发人员都是把两个函数合二为一
this.doGet(request, response);
或this.doPost(request, response);
(3)配置tomcat
(4)发布
(5)浏览器中查看
18、servlet细节
(1)一个已经注册的servlet可以多次映射到不同url
(2)映射时可以含多个/
(3)映射的后缀名没有实际的含义。如2.html 并说明映射的是html文件
(4)在对servlet进行映射时可以使用通配符---------可用于网站暂时关闭时的任意匹配
*.扩展名 或 / 卡开头 /*结尾
如:*.do *.ss
/* 、/news/*
在匹配时:谁的匹配度高,谁就被选中
*.do的优先级最低
(5)servlet是单列的
即第一次访问就加载到内存,以后访问就是同一个实例
-----会出现线程并发安全问题
利用同步机制
synchronized(对象){ 同步代码}包起来(对象一般为this) 【注意synchronized的首字母s必须小写】
如果一个变量不需要共享,则直接在doget()或dopost()中定义,而不要定义成成员变量
//如何消除单例的并发不安全问题??(ticket是成员变量)
synchronized(this)
{
if(ticket>0)
{
System.out.println("还能买到票");
}
ticket--;
if(ticket<0)
{
System.out.println("没有票了");
}
}
(6)load-on-startup
在网站启动时可能要初始化一些数据,做一些临时表。。。
还有定时完成的任务,比如定时写日志,备份数据库,邮件定时发送
配合线程可以迅速解决
通过配置load-on-startup 可以使某个servlet自动创建
<load-on-startup>1</load-on-startup> ------其中的数字表示启动顺序
是在web.xml中配置的
<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>Servlet2</servlet-name>
<servlet-class>com.xc.Servlet.Servlet2</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
(7)response.setCharacterEncoding("utf-8");设置编码的形式
如何修改myeclispse的servlet模板
17、servletConfig:
读取servlet的配置信息,包括数据库配置、编码类型等
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
在<servlet></servlet>中配置的是该servlet自身才能用到的,和<servlet></servlet>并列写的才可以都用
如何获取?
单个: this.getInitParameter(变量名称);
所有:
Enumeration<String> enumeration= this.getInitParameterNames();
while(true)
{
String name=enumeration.nextElement();
String value=this.getInitParameter(name);
1、静态页面(html)
动态页面:和用户交互,不同时间也不同
常用技术:jsp/servlet asp(快淘汰了) php(l linux a apache m mysql p php)asp.net
2、b/s :browser/server http请求
c/s :client/server (客户端由自己开发) tcp/ip协议(socket)
3、web服务器
tomcat服务器(小型或中型)(开源)、jboss(开源)、weblogic、webSphere
如何模拟一个简单的服务器?【作业】
4、安装tomcat
1、解压
2、startup.bat
3、配置环境变量:高级---环境变量---新建:JAVA_HOME
路径:jdk所在的目录(如果后面没有其它路径,不要加;)
4、测试:http//:localhost:8080
【如何主打更改8080端口?conf---server.xml----port="8080"改一下就行】
5、在访问的时候一定要保证是启动的。
【*****如何在不配置电脑的环境变量下,启动?---startup.bat打开,在第25行写上set JAVA_HOME=路径】
5、tomcat的文件目录
bin:关闭和启动
conf:配置文件
server.xml:与server相关的文件配置,比如启动时的端口
配置context,即web应用
web.xml:配置与一个web应用的配置,相当于一个站点
tomcat-users.xml:配置用户密码和权限
lib:放置支撑的jar包
logs:存放日志,当启动出错的时候,可以查看日志
webapps:存放我们的web应用,即站点,建立web目录,存放html.jsp,图片等,则web目录会被当做web应用管理的
但这样只在(版本5.0后的才可以)
work:工作目录,存放jspb被访问后生产的相应的servlet、class文件
6、web应用(注意其结构)
一个管理文本站点的目录,也叫web应用工程
7、tomcat如何管理虚拟目录?
在server.xml中<Host>节点加
<Context path="/A" docbase="绝对路径"/> ----重启生效
A---是制定的web名称,用作访问时的名称
8、Context 几个属性的说明
path
docbase
reloadable:若设为true,自动更新web应用,建议在开发时设为true,在产品发布时设为false
设为uppackwar:设为true,自动解压
9、如何设置首页?
图
10、servlet
实现的三种方式:
1.实现servlet接口
2.继承GernericServlet
3.继承HttpServlet
【注意,用javac 命令编译打包文件时要带参数 javac -d . 文件
11、servlet就是java程序(java类)
该java类要遵循servlet开发规范
servlet是运行在服务器端的
功能很强大,几乎可以完成网站的所有功能,是学习jsp的基础。
12、第一个servlet:
(1)建立一个web文件夹,在该文件下建立WEB-INF文件夹
(2)WEB-INF文件夹文件名不能改,在里面建一个web.xml文件(可以从root文件下拷贝过来)/一个class文件夹、、一个lib文件夹
(3)在class文件夹下建立java文件,在dos窗口编译
建包的java文件在编译时用javadoc -d . 源文件
提示找不到servlet等包??--------到tomcat-----lib文件夹中找到servlet.jar----配置相应路径的classpath环境变量
(4)编译成功后部署-----在web.xml中部署
如何部署?
------从exmples中的web.xml文件中拷贝相应部署过来就可以
<!--根据servlet规范部署servlet-->
<servlet>
<!--可以自己取名,默认servlet的名字 [注册]-->
<servlet-name>MyFristServlet</servlet-name>
<!--要指定放在哪个包下,形式是包/包/.../类【全路径】-->
<servlet-class>com.hsp.MyFristServlet</servlet-class>
</servlet>
<!--servlet的映射【已经注册的名字可以多次映射】-->
<servlet-mapping>
<!--该名和上面的名字必须一样-->
<servlet-name>MyFristServlet</servlet-name>
<!--将来访问servlet的资源名部分【即对外访问的路径】-->
<url-pattern>/ABC</url-pattern>
</servlet-mapping>
(5)启动tomact------在浏览其中输入http//localhost::8080/web文件夹/资源名(如上面配置的/ABC)
(6)如何向浏览器中输出文字??
service()函数中ServletResponse来完成:res.getWriter().println("Helloworld!");
servlet每次运行,service()都会运行。
13、tomcat 7的用户名设置的问题
不同于以往的Tomcat版本,Tomcat7.0将manager角色细化为manager-gui,manager-script,manager-jmx,manager-status,
所以要使用Tomcat7.0,需要首先去conf\tomcat-users.xml添加角色与用户信息,具体如下:
<role rolename="manager-gui"/>
<role rolename="manager-script"/>
<role rolename="manager-jmx"/>
<role rolename="manager-status"/>
<user username="admin" password="admin" roles="manager-gui,manager-script,manager-jmx,manager-status"/>
如何不要关闭和重启tomcat来完成更新,用reload即可
stop是表示停站,网站不服务。
14、servlet的工作流程
当servlet第一次调用时,init()会把servlet加载到内存,该函数只会调用一次;
然后去调用servlet的service函数,当再次访问该servlet时,就直接调用servlet的service函数;
当web应用reload或关闭tomcat或关机时,都会调用destroy(),去销毁servlet函数
15、三种方式
GenericServlet 开发,是Servlet的子类,是抽象类,它只含一个service()函数,也要部署;(了解即可)
HttpServlet:继承了GenericServlet 也实现了Servlet接口,90%的网站java开发都是用该种形式开发的。
提供了post提交的方法和get提交的方法,默认是get。
实现两个方法: doget()
dopost()
get和post提交的区别:
get:响应速度快
post:安全,提交的长度无限制理论上不超过64K
16、使用myeclipse开发servlet的流程:
可支持servlet,jsp,struts,hibernate,spring
(1)建立web工程
(2)新建一个servlet: //大部分开发人员都是把两个函数合二为一
this.doGet(request, response);
或this.doPost(request, response);
(3)配置tomcat
(4)发布
(5)浏览器中查看
18、servlet细节
(1)一个已经注册的servlet可以多次映射到不同url
(2)映射时可以含多个/
(3)映射的后缀名没有实际的含义。如2.html 并说明映射的是html文件
(4)在对servlet进行映射时可以使用通配符---------可用于网站暂时关闭时的任意匹配
*.扩展名 或 / 卡开头 /*结尾
如:*.do *.ss
/* 、/news/*
在匹配时:谁的匹配度高,谁就被选中
*.do的优先级最低
(5)servlet是单列的
即第一次访问就加载到内存,以后访问就是同一个实例
-----会出现线程并发安全问题
利用同步机制
synchronized(对象){ 同步代码}包起来(对象一般为this) 【注意synchronized的首字母s必须小写】
如果一个变量不需要共享,则直接在doget()或dopost()中定义,而不要定义成成员变量
//如何消除单例的并发不安全问题??(ticket是成员变量)
synchronized(this)
{
if(ticket>0)
{
System.out.println("还能买到票");
}
ticket--;
if(ticket<0)
{
System.out.println("没有票了");
}
}
(6)load-on-startup
在网站启动时可能要初始化一些数据,做一些临时表。。。
还有定时完成的任务,比如定时写日志,备份数据库,邮件定时发送
配合线程可以迅速解决
通过配置load-on-startup 可以使某个servlet自动创建
<load-on-startup>1</load-on-startup> ------其中的数字表示启动顺序
是在web.xml中配置的
<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>Servlet2</servlet-name>
<servlet-class>com.xc.Servlet.Servlet2</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
(7)response.setCharacterEncoding("utf-8");设置编码的形式
如何修改myeclispse的servlet模板
17、servletConfig:
读取servlet的配置信息,包括数据库配置、编码类型等
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
在<servlet></servlet>中配置的是该servlet自身才能用到的,和<servlet></servlet>并列写的才可以都用
如何获取?
单个: this.getInitParameter(变量名称);
所有:
Enumeration<String> enumeration= this.getInitParameterNames();
while(true)
{
String name=enumeration.nextElement();
String value=this.getInitParameter(name);
}
18.附上浏览器---web----servlet之间的消息传递的示意图