web(World Wide Web)即全球广域网,也称万维网,它是一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。
是建立在Internet上的一种网络服务,为浏览者在Internet上查找和浏览信息提供了图形化的、易于访问的直观界面,其中的文档及超级链接将Internet上的信息节点组织成一个互为关联的网状结构。
javabweb就是使用Java语言进行WEB的开发
软件架构CS结构的软件
CS:Client/Server 客户端和服务器,这种软件往往需要安装。比如QQ、迅雷、播放器。
优点:可以减轻服务器端压力,将部分代码写到客户端;界面很美观。
缺点:一旦服务器更新了,客户端也需要更新。 分布式开发比较弱。
BS结构的软件
BS:Browser/Server 浏览器和服务器,这种软件不需要安装,只需要通过浏览器就可以访问。
优点:服务器一旦更新,不需要更新客户端,因为客户端就是浏览器;比较强的分布式能力
缺点:服务器端压力会比较大。 界面效果不如CS结构软件。
帮助我们把项目发布出去,可以通过浏览器访问。
-
硬件:其实就是一台电脑(这台电脑配置要求很高)。
-
软件:需要在这台电脑上安装web服务器的软件。
对于java来说,这属于企业级开发。
JAVAEE 企业级开发规范。
| 名字 | 企业 | 特点 |
|---|---|---|
| weblogic | oracle | 大型、收费、支持所有JAVAEE开发规范 |
| webshere | IBM | 大型、收费、支持所有JAVAEE开发规范 |
| tomcat | apache | 中小型、开源免费、支持所有JAVAEE开发规范(servlet jsp) |
| jboss | redhat | 中小型、开源免费、支持所有JAVAEE开发规范(EJB ) |
-
Tomcat:Apache组织提供的一个开源的免费的web服务器。满足EE的Servlet和JSP的规范。
-
WebSphere :IBM公司开发的一个收费的大型web服务器。满足了EE开发的所有规范。
-
WebLogic:BEA公司开发的一个收费的大型web服务器。满足了EE开发的所有规范。
-
Apache :应用在PHP平台上。
Tomcat是一个轻量级web的服务器,用来发布web项目。
Tomcat目录结构 webapps目录结构 tomcat内存溢出解决办法tomcat是目前应用十分广泛的一个Java servlet container与web服务器,但java.lang.OutOfMemoryError与java.lang.OutOfMemoryError: PermGen space的异常相信真正用过tomcat的人都遇到过(用户量大,应用使用频繁等),这个异常和JVM默认划分的内存上限是128M有关,如果你的业务足够繁忙,128M是远远不够的,所以你可以给JVM分配上1G甚至更多,这样就可以避免内存溢出。
linux下分配方法
编辑tomcat的catalina.sh文件,在第一行的后面增加一句:
JAVA_OPTS=‘-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M’
注意:单引号不能少,-server表示以server模式运行(运行效率比默认的client高很多,自己云去测试),
- -Xms256m是最小内存,
- -Xmx512m是最大内存,其中的256与512可根据你自己的内存做相应调整,
- PermSize/MaxPermSize最小/最大堆大小.一般报内存不足时,都是说这个太小,堆空间剩余小于5%就会警告,建议把这个稍微设大一点,不过要视自己机器内存大小来设置,我自己的文件如下:
#!/bin/sh JAVA_OPTS='-server -Xms1024m -Xmx1024m XX:PermSize=128M -XX:MaxPermSize=256M'
- 从应用方面
tomcat,一般是做动态解析才会用得到,支持jsp的解析,需要配置JDK支持;
nginx,则一般是做静态,本身不具备动态解析功能,需要配置其他插件或通过其他软件协同才具备动态功能,但nginx在静态上的功能非常强大,也可做访问控制,而且可以做成各种协议负载服务器,包括流媒体的也可以做,具体得去官方网站去看;
- 在性能方面
tomcat一般支持并发并不高100个差不多了
nginx在静态方面支持并发轻松达几万
- 总结:
两者应用领域不一样:tomcat是做java语言的动态解,而nginx则是一款功能强大的负载软件,配合各种插件可以实现各种功能.
Tomcat 是Web应用服务器,是一个Servlet/JSP容器. Tomcat 作为Servlet容器,负责处理客户请求,把请求传送给Servlet,并将Servlet的响应传送回给客户.而Servlet是一种运行在支持Java语言的服务器上的组件。
servlet入门小程序helloServlet com.itlx.servlet.HelloServlet helloServlet /hello
package com.itlx.servlet;
import javax.servlet.*;
import java.io.IOException;
// Servlet需要引入tomcat lib目录下的jar包
public class HelloServlet implements Servlet {
@Override
public void init(ServletConfig servletConfig) throws ServletException {
}
@Override
public ServletConfig getServletConfig() {
return null;
}
@Override
public void service(ServletRequest servletRequest, ServletResponse servletResponse) throws ServletException, IOException {
servletResponse.getWriter().write("hello servlet");
}
@Override
public String getServletInfo() {
return null;
}
@Override
public void destroy() {
}
}
servlet执行流程
部分知识引用自:
https://www.cnblogs.com/xiaoquan-blog/p/12611851.html
https://blog.csdn.net/liangmengbk/article/details/99177782
https://www.jianshu.com/p/d8bd75c0fb1b
https://www.jianshu.com/p/332361db0dd7
https://www.jianshu.com/p/959e73761654?utm_campaign
只要有了活下去的理由,几乎什么都能够忍受。
尼采



