JavaWeb—Servlet
静态资源和动态资源
服务器上有两种资源:
静态资源:用户每次访问结果都是一样的资源叫做静态资源 (html、Css、JavaScript)
动态资源:用户每次访问结构都是不一样的资源(jsp、PHP)
每次服务器再给浏览器响应的时候:动态资源必须要先转换成静态资源才可以发送
先说一下Servlet配置:
1.可以通过web—WEB-INF----web.xml文件中配置
要配置:
<servlet>
<servlet-name>类名称</servlet-name>
<servlet-class>包名+类名</servlet-class>
</servlet>
<servlet-maping>
<servlet-name>
类名称
</servlet-name>
<url-pattern>
资源路径
</url-pattern>
</servlet-maping>
servlet访问:localhost:8080/资源路径
通过资源路径访问到servlet-name—>进而访问到 servlet的servlet-name—>进而访问到类的全名称,找到类
创建servlet —> 创建 request/response —>通过request 的到请求数据 —>通过response响应
还有一种配置方法:
在servlet3.0之后支持注解方式配置:
@WebServlet("/xxx") 配置单个路径
@WebServlet("/xxx/xxx")(多层结构目录结构)
@Webservlet("/xxx/*") *代表通配符 可以访问任意资源路径
@WebServlet("*.do") 统配符
1.serlet声明周期:
init()------->Servlet初始化方法(仅在servlet第一次访问的时候调用一次)
service()------->Servlet服务方法(每次调用Servlet方法的时候都会被调用)
destory()------->Servlet销毁方法(服务器关闭的时候调用一次)
service和doXXX()方法?
service()方法 是servlet的入口 doXXX()方法是更具不同的提交方式来 判断调用那种方法
一般在具体业务中要覆盖doXXX()方法。
2.单例多线程
//由于一个Servlet程序只会创建一个Servlet程序,所以是单例的,可以根据这个特短获取servlet的访问人数
@WebServlet("/count")
public class countServlet extends HttpServlet {
int count=1;
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html;charset=utf-8");
synchronized (this){
response.getWriter().print("当前访问人数是"+count);
count++;
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTra