软件架构和服务器
软件架构
BS:Browser Server 浏览器客户端-服务器模式。客户端使用浏览器来访问服务器。
CS:Client Server 客户端-服务器模式。用户需要在终端上安装不同的客户端软件来访问服务器。
B/S特点:
优势: 开发成本低.客户端统一浏览器,客户端只需要一套技术html,css,js等,就可以运行各种系统平台上
缺点:客户端使用资源受浏览器限制, 所以客户端不能存储大量数据,这样就要去服务器存储大量数据
C/S特点:
优势: 可以使用大量的客户端资源,可以存储大量数据.
缺点: 开发成本高.不同系统平台都需要开发不同的客户端.
常用的Web服务器软件
WebLogic
oracle公司服务器
Websphere
IBM公司
Jboss
Jboss公司
Tomcat
apache公司 ,市场占有率最高,免费,开源
JDK1.8配置环境变量
Tomcat服务器
tomcat服务器占用端口号 :8080
解决Tomcat服务器端口号被占用的方法:
解决方法1:
1、找到占用端口的软件,结束应用程序,之后再启动tomcat
2、打开cmd运行命令,输入如下 查询占用8080端口的程序
netstat -nao|findstr "8080"
含义:查看当前电脑所有程序占用端口号
netstat 用于查询网络程序进程信息
参数n,显示端口号
参数a,显示所有的程序
参数o,显示程序的进程号PID
解决方法2:
1、修改tomcat默认端口,修改后再访问
2、修改tomcat/conf/server.xml配置文件中配置的端口号的位置
目录介绍
Tomcat案例–xml配置环境
public class Demo2Servlet extends HttpServlet {
//重写service方法处理请求,就不用再重写doGet或doPost方法简化开发
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理浏览器请求的目标:输出一句话“我的第一个Servlet”
//1.设置输出数据为网页并且字符串的码表为utf-8
response.setContentType("text/html;charset=utf-8");
//2.获取项浏览器输出字符的打印流
PrintWriter out = response.getWriter();
//3.输出数据
out.print("xml的Servlet");
}
}
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--配置用户访问的资源路径“/demo1”映射给Demo1Servlet去执行-->
<servlet>
<servlet-name>Demo2Servlet</servlet-name>
<servlet-class>com.itheima.servlet.Demo2Servlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>Demo2Servlet</servlet-name>
<url-pattern>/demo2</url-pattern> <!--这里的路径配置必须以“/”开头-->
</servlet-mapping>
</web-app>
Tomcat案例–注解
@WebServlet(urlPatterns = "/demo3")
//urlPatterns 是一个数组,可以传入多个路径.urlPatterns 可以省略
public class Demo3Servlet extends HttpServlet {
//重写service方法处理请求,就不用再重写doGet或doPost方法简化开发
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//处理浏览器请求的目标:输出一句话“我的第一个Servlet”
//1.设置输出数据为网页并且字符串的码表为utf-8
response.setContentType("text/html;charset=utf-8");
//2.获取项浏览器输出字符的打印流
PrintWriter out = response.getWriter();
//3.输出数据
out.print("注解Servlet");
}
}
Tomcat中Servlet体系
Tomcat面试题–servlet生命周期
1.请说出servlet生命周期相关方法有哪些?
init初始化方法
service处理请求与响应方法
destroy()销毁方法
2.servlet对象什么时候创建的?
默认第一次访问的时候创建,因为第一次调用Servlet运行init方法
3.servlet对象创建了几次?
只创建了1次,全局唯一,节省内存
4.servlet默认是在第一次访问时创建,能修改为启动时创建?
可以,修改配置load-on-startup就可以修改为服务器启动时创建Servlet
注解设置:@WebServlet(urlPatterns = “/LiftCycleServlet”,loadOnStartup = 1)
xml设置:<load-on-startup>1</load-on-startup>
里面的数字的范围:1~6, 数字越小越先创建。
<servlet>
<servlet-name>LiftCycleServlet</servlet-name>
<servlet-class>com.itheima.servlet.LiftCycleServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>LiftCycleServlet</servlet-name>
<url-pattern>/LiftCycleServlet</url-pattern>
</servlet-mapping>
@WebServlet(urlPatterns = "/LiftCycleServlet",loadOnStartup = 1)
5、serclet可以修改为多例模式?
可以, 需要类实现接口SingleThreadModel,但是,非常不建议这样使用,会导致内存浪费
Servlet运行原理
idea快捷键
Ctrl+Alt+U
鼠标放在一个类(HttpServlet)上,再使用这个快捷键就可以查询这个类的向上结构(继承与实现接口)Ctrl+H,就查询向下结构(子类或实现类)
Ctrl+N, 点击classes, 输入要搜索的类名,可以快速搜索指定类
Ctrl+F12, 查找当前类内部的成员
Ctrl+Alt+鼠标点击, 查找子类或实现类