现在的位置: 首页 > 综合 > 正文

Servlet第一天

2013年08月25日 ⁄ 综合 ⁄ 共 3163字 ⁄ 字号 评论关闭

servlet:运行在服务器端的java程序
applet: 运行在客户端浏览器中的一小段java代码

http://www.sina.com

程序的系统架构:
 单机版:运行在单台机器上的程序
  程序更新需要更新每一个客户
  没有交互性
 web应用程序:
  C/S:客户端---服务器端
   胖客户端:将应用程序的大部分内容置于客户端放置
    优点:
     服务器端压力较小。访问效率较高
     
    缺点:
     更新时依然需要更新每个客户端信息
   瘦客户端:将应用程序的大部分内容置于服务器端放置
    优点:
     更新时几乎不需要更新每个客户端信息
    缺点:
     服务器端压力很大
     
  B/S:浏览器---服务器端
   将应用程序全部置于服务器端,客户端只需要通过本地安装的浏览器,即可访问应用
 
  (servlet是JAVAEE中,专门用于开发B/S架构web应用程序的规范)

  10
  10000  在服务端架设了多台服务器之后,负载均衡,在线恢复
  EJB用于开发分布式应用程序

Html(javaScript):作为客户端显示页面
----servlet :
  1 作为前台客户端页面和服务器端java程序交互的桥梁
  2 servlet本身也在服务器端,需要跨越网络和客户端交互
JDBC(DAO+XML) :放置在服务器端的核心处理程序 
SQL(ORACLE) :提供存储数据的机制

 

3页面(index.html --- show.html --- callback.html
 baicai.html --- ....
 )

http://www.geqiwei.com/index.html
-----
 ----------ip
    ---默认端口号(具体服务)
   --------具体的页面

 (index.html
 ----show.html
 ----order.html[产品类型输入框、数量、提交按钮===使用js格式验证]
  <form action=" ">
 ----》获取数据,并判断(业务验证),(servlet)
  通过验证,修改数据库中数据(JDBC)
 ----successful.html
 )

web容器的作用:
 1 接收客户端发送的请求字符串
 http://www.geqiwei.com/index.html
 2 如果访问是**.html则直接调用该页面,发送给客户端
 
   如果访问是非.html信息,则需要调用java程序
   根据请求信息,查找其对应的类路径
   ---------------映射关系(请求信息===处理类路径)
     Map 不能持久化
     资源文件 结构化不强
     xml 配置文件(dtd文件) --web.xml
     
     
 3 根据类路径,调用该类中的固定方法
      ---servlet
 4 根据类的处理结果,决定调用某个资源,再发送给客户端

程序员需要提供的:
 1 编写遵循servlet规范的处理类
 2 将请求字符串和处理类路径的对应关系,写在web.xml中

web容器的种类:
 *tomcat

 jboss
 *weblogic bea
 websphere
 resin
 sun application Server
 ....
 

Tomcat命令行使用的配置方式:
 JAVA_HOME = jdk的安装路径
 CATALINA_HOME = tomcat的解压路径
tomcat基本操作:
 启动tomcat:
  双击%tomcat%/bin/startup.bat
 关闭tomcat:
  双击%tomcat%/bin/shutdown.bat
修改tomcat默认端口号:
 在%tomcat%/conf目录下的server.xml文件中,修改其中的<connect port="8080">为8088
配置tomcat用户名和密码:
 在%tomcat%/conf目录下的tomcat-user.xml文件中的根标签中,添加一组标签,如下所示
  <user username="用户名" password="密码" roles="admin,manager"/>
 

编写helloWorldServlet:
 1 编写处理类,要求必须实现接口javax.servlet.Servlet,并且实现其中的所有方法
 public class HelloServlet implements Servlet{
  public void init(ServletConfig config) {
   
   }
   
  //编写服务器端处理客户端请求的具体服务信息
  public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException{
   PrintWriter out = res.getWriter();
   out.println("<font color='red'>hello world~!</font>");
  }
  
  public  void destroy(){
   
  }
  
  public ServletConfig getServletConfig() {
    return null;
  }
  
  public String getServletInfo()  {
   
   return null; 
  }
 }

 2 配置servlet api的环境变量
 classpath = ...;F:/yangxp/tools/apache-tomcat-5.5.12/common/lib/servlet-api.jar

 3 编译java文件
 javac -d . HelloServlet.java

 4 在tomcat/webapps目录下创建一个文件夹,代表web应用。如hello
 按照tomcat部署的要求方式文件,如下:
  webapps
     |_hello
   |_WEB-INF
       |_lib 放置当前web应用自己需要的jar包
          |_classes 放置编译之后的文件
       |   |_编译之后包和.class文件
       |_web.xml 编写请求信息和处理类路径的映射关系
 5 重启tomcat/重新加载当前应用
 6 在浏览器地址栏中输入
  http://localhost:8088/应用名/请求信息
   进行测试
 

 404
  客户端发送的请求,在服务器端查找不到对应的资源
  web.xml
 500
  服务器端的处理类出错
  servlet
 

http://162.105.191.32:8088/hello/sayHello

统计客户端的访问量

servlet的生命周期:
 1 当前Servlet被加载到虚拟机中
 2 init
  servlet的初始化流程
  接收外界传递给当前Servlet的信息---tomcat
 3 service
  servlet提供给客户端服务的流程
  ServletRequest :封装客户端发送的信息
  ServletResponse :封装返回客户端的信息

   ServletRequest
   ---->
  客户端   服务器端
   <----
   ServletResponse
 4 destroy
  serlvet被销毁的流程
  web容器,需要轮询当前正在访问该处理类的客户端线程,如果有线程访问,则继续轮询
  直至没有任何线程访问,则销毁该对象

注意:
 html和javaScript代码是原封不动的发送给客户端,在客户端的浏览器中才会解析执行

作业:
 将客户端用户访问量统计,添加持久化访问量的工作
 保证服务重启时,访问量继续累加

 

 

 

 

 

 

 

 

 

 

抱歉!评论已关闭.