30、servlet---tomcat原理

    Servlet出现得早,servlet很强大,但是servlet又一个致命的缺点:用servlet做界面十分吃力。。html代码是嵌入到println中打出来的。。。 Sun推出了jsp。。。jsp做界面比servlet好做多了~  Jsp出现不是对servlet的否定而是对servlet的补充,jsp做界面好多了;

    Servlet是jsp技术的基础jsp是在servlet的基础上发展出来的。。jsp就是servlet但是servlet的基础上改进的。

    jsp+ javabean+ servlet,就构成mvc的开发模式.

静态web:html
动态web:jsp/servlet、php、.net

jsp = html+java#片段+jsp语法+js
jsp比较耗费内存,生成的class文件常驻内存运行,带来的好处就是处理快,效率高。


win7添加端口:
详见:http://jingyan.baidu.com/article/f96699bbadafca894f3c1b7a.html



web服务器运行原理:
public class MyServer {
	public static void main(String[] str) throws IOException{
		//socket封装接收,等待信息到来
		ServerSocket ss = new ServerSocket(8182);
                //长期运行main方法
		while(true)
		{
			Socket s = ss.accept();
			System.out.println("8182上等待");
			OutputStream out = s.getOutputStream();
			BufferedReader br = new BufferedReader(new FileReader("F:\\documents\\hadoop-doc\\centOS.txt"));
			String buf="";
			while((buf = br.readLine())!=null)
			{
				out.write(buf.getBytes());
			}
		
		br.close();
		out.close();
		s.close();
		}
	}
}


异常:Address already in use: JVM_Bind(端口冲突)
1、查看端口是否开启
2、常看端口是否被占用
netstat -na



java运行包里程序:
1、正常编译
F>javac  -d .MyServer.java
2、运行时:
F>java org.nick.server.MyServer


常用的web服务器
jboss
webLogic
WebSphere
tomcat(小中型)(大型=tomcat集成)


tomcat 目录结构

work目录:该目录用于存放jsp页面被编译后生成的servert文件和.class文件,在有时候修改jsp文件后,而浏览器没有任何改动,需要将此目录清空,让tomcat重新编译。
conf/web.xml :以及web请求mini的数据类型
<!--session超时时间为30分钟-->
    <session-config>
        <session-timeout>30</session-timeout>
    </session-config>



虚拟目录设置:
1、默认为webapps目录
2、在<Host>节点间添加:
 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">
        <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
               prefix="localhost_access_log." suffix=".txt"
               pattern="%h %l %u %t &quot;%r&quot; %s %b" />
<Context path="/web2"  docBase="d:\web2"/>
      </Host>

注意:xml文件慎用中文做注解
tomcat启动时,也要对xml文件解析,然后将其属性存放在内存常驻;
选项:
reloadable="true|false" 监控work目录是否发生变化后,自动更新 ,开发时设置为true,发布后设置为false,开销比较大。
upackWAR="true|false" 运行war文件时自动解压,默认为true


设置域名:
1、修改hosts文件
   C:\Windows\System32\drivers\etc   127.0.0.1    www.nick.org
2、添加或修改 tomcat/server.xml
  <Host name="www.nick.org"  appBase="d:\web3"
            unpackWARs="true" autoDeploy="true">
3、如果ip地址都为127.0.0.1 而域名指向了几个不同的目录,需要设置默认主机
    <Engine name="Catalina" defaultHost="localhost">

server.xml文件结构
  <Service name="Catalina">
        <Connector port="8182" protocol="HTTP/1.1"   />
        <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
               <Engine name="Catalina" defaultHost="localhost">
                      <Host name="www.nick.org"
                      <Host name="localhost"
                             <Context
                             <Context   ./>
                     </Host>
    </Engine>
  </Service>
</Server>

猜你喜欢

转载自onway417.iteye.com/blog/2194272