静态web资源 HTML,css,js
动态web资源 jsp Servlet
用户通过网址请求服务器端
请求的就是服务器端的静态和动态资源
请求完成后会给浏览器一个响应结果
服务器(tomcat)
轻量级服务器 sun公司 开源的免费的
注意:我们写的java代码和前端html页面
全都是放到服务器上运行(服务器端开发 是开发放到服务器上运行的代码
而不是开发一个服务器出来)
tomcat服务器下文件夹
bin 存放编译指令的(开启关闭服务)
conf 存放tomcat自己的配置文件
lib 存放tomcat依赖的jar包
logs 存放的是用户访问服务器的日志
temp 临时文件文件夹
webapps 默认 存放工程的文件夹
work 存放tomcat自己的工作文件
wtpwebapps与eclipse关联后工程存放的文件夹
如何利用中断开启tomcat服务
1.前往tomcat的bin文件夹下
2.开启文件夹管理权限(读写)
sudo chmod 755 *.sh
3.开启服务(Windows下 执行的是.bat后缀的指令)
sudo sh ./startup.sh
----------访问服务器上的资源
注意不要重复开启服务,否则会出现端口被占用错误
4. 执行关闭服务器
sudo sh ./shutdown.sh
如何确认tomcat服务已经启动
访问网址
http://IP地址:端口号/项目名称/访问的资源
通过这个网址 查看tomcat服务是否启动
http://localhost:8080
servlet
Servlet(小服务程序) 是个java接口
访问服务器 实际上访问的就是servlet
Servlet(容器 有访问动态资源)
Servlet的生命周期方法
实例化-->初始化-->服务方法-->销毁方法
servlet只在第一次访问时创建一次
当你再次访问该servlet时
不会创建新的servlet
只会重复调用服务方法 service方法
简单谈谈servlet的访问流程
1.通过用户请求的网址服务器获得项目名称
2.找到对应的项目后 从项目中找到该项目的web.xml文件
3.从xml文件找到访问servlet的路径(/demo01)
4.通过servlet路径找到用户要访问哪一个servlet的名字(demo01)
5.通过servlet名字 就能找到 要创建的servlet属于哪个类
6.系统通过反射创建该类的对象走生命周期的4个方法
创建servlet的三种方式
1.直接实现Servlet接口
//实例化方法(创建对象的无参构造方法)
public Demo01(){
System.out.println("实例化对象无参构造方法");
}
//初始化方法(初始化Servlet配置信息)
public void init(ServletConfig arg0) throws ServletException {
System.out.println("初始化init方法 被调用");
}
//服务方法(处理用户的请求 处理完成后 响应给用户)
public void service(ServletRequest arg0, ServletResponse arg1) throws ServletException, IOException {
System.out.println("service方法被调用了");
}
//Servlet的销毁方法
//1.服务器关闭会调用
//2.该应用程序被移除也会调用
public void destroy() {
System.out.println("destroy方法被调用");
}
//获取Servlet配置信息的方法
public ServletConfig getServletConfig() {
// TODO Auto-generated method stub
return null;
}
//获取Servlet版本的方法
public String getServletInfo() {
// TODO Auto-generated method stub
return null;
}
2.继承GenericServlet(利用缺省适配器方式 帮你简化代码 生命周期方法可以不写)
public class Demo02 extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
// TODO Auto-generated method stub
System.out.println("Demo02...service()方法");
}
}
3.利用模板设计模式
直接继承HttpServlet
public class Demo03 extends HttpServlet {
//重写doGet和doPost方法
//注意:从浏览器发送的请求都是Get请求
//注意:重写完之后 不要调用父类的doGet方法
//否则一样会发送错误出来
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
System.out.println("doGet");
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//两种请求公用一个处理方式
doGet(req, resp);
}
}
如何配置web.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!-- xml文件的版本号和编码格式 -->
<!-- 表示的是该xml文件的头 显示下面什么能写 -->
<!-- 还建议你标签的书写顺序 -->
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<!-- 工程的名字 -->
<display-name>sh-web-01</display-name>
<!-- 创建一个serlvet -->
<servlet>
<!-- 给创建的servlet起个对象名 -->
<servlet-name>demo01</servlet-name>
<!-- 设置servlet使用哪个类创建对象 -->
<servlet-class>com.lanou3g.Demo01</servlet-class>
<!-- 配置Servlet创建的优先级 数越小 优先级越高-->
<!-- 加上这个设置 服务器启时就会创建该servlet -->
<load-on-startup>5</load-on-startup>
</servlet>
<!-- 设置servlet的映射(访问地址) -->
<servlet-mapping>
<!-- 给哪一个servlet对象配置访问地址 -->
<servlet-name>demo01</servlet-name>
<!-- 设置访问地址 http://localhost:8080/sh-web-01/demo01-->
<!-- /表示的项目名后面的斜杠 -->
<url-pattern>/demo01</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo02</servlet-name>
<servlet-class>com.lanou3g.Demo02</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo02</servlet-name>
<url-pattern>/demo02</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo03</servlet-name>
<servlet-class>com.lanou3g.Demo03</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo03</servlet-name>
<url-pattern>/demo03</url-pattern>
</servlet-mapping>
<servlet>
<servlet-name>demo04</servlet-name>
<servlet-class>com.lanou3g.Demo04</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>demo04</servlet-name>
<!-- 利用通配符设置路径 -->
<!--
1./demo04配置的是绝对路径
2.*.后缀名 *.action
3./*
4. / 系统使用的默认配置方式 不是给你用的
注意:凡是通过服务器访问的资源 都是servlet
注意:23不能一起使用
匹配路径的优先级
绝对匹配> /* > *.后缀
-->
<url-pattern>/*</url-pattern>
</servlet-mapping>
<!-- 一个servlet配置多个访问路径 -->
<servlet-mapping>
<servlet-name>demo04</servlet-name>
<url-pattern>/demo9999</url-pattern>
</servlet-mapping>
<!-- 设置访问页面的 直接访问工程路径 出现的页面 -->
<welcome-file-list>
<welcome-file>HelloWorld.html</welcome-file>
<welcome-file>index.htm</welcome-file>
<welcome-file>index.jsp</welcome-file>
<welcome-file>default.html</welcome-file>
<welcome-file>default.htm</welcome-file>
<welcome-file>default.jsp</welcome-file>
</welcome-file-list>
</web-app>