JavaWeb开发(服务器端 看懂前端)
* 用户(浏览器)访问服务端的什么东西?
* 静态Web资源 HTML CSS JS
* 用户在访问静态资源的时候 这些资源不会变
* 动态Web资源 JSP Servlet
* 用户在访问动态资源的时候
* 访问的内容是由资源生成的
* 例如:不同用户访问不同的资源
*
* 用户提供网址来请求服务器端
* 请求就是服务器端上面的静态资源和动态资源
* 请求完成之后会给浏览器一个响应结果
*
* 服务器
* Tomcat服务器(黄猫) sun公司 开源的 免费的
* 轻量级服务器 公司里常用的服务器
* 注意:写的Java代码 和 前端HTML页面
* 全都是放在服务器上运行(服务器端开发 是开发到服务器上运行的代码
* 而不是开发一个服务器出来)
*
* JavaEE规范服务器的一套规则(类与接口)
* JSP和servlet 就是这套规范一部分
*
* 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
* 注意:不要重复开启服务 否则会出现端口被占用错误
* (关了才能开)
* --------- 服务器上的资源
* 访问网址:
* http://IP地址:端口号/项目名称/访问的资源
* 通过这个网址 查看tomcat服务是否启动
* http://localhost:8080
*
* 访问的网址
* URL 统一资源定位符
* http://localhost:8080/test/HelloWorld.html
* URI 统一资源标识符
* /test/HelloWorld.html
*
*
* 4.关闭服务
* sudo sh ./shutdown.sh
*
* 工程被编译到服务器
* 实际上是把工程目录下的WebContent
* 文件夹下的内容编译进去
* (WebContent 本身不会出现)
*
* META-INF 扩展应用程序文件夹(暂时没用)
* WEB-INF 存放着工程的所有资源
* lib 存放工程使用的jar包
* (不用添加路径 会自动编译到服务器上)
* web.xml 工程的配置文件
* classes
* 工程编译到服务器上出现的
* 里面保存的是 你工程中的类的.class文件
* 注意:WEB-INF文件夹下存放的资源 是不能直接通过为网址去访问的
*
* Servlet(小服务程序) 是个Java接口
* 访问服务器 实际上访问就是
* Servlet(容器 有访问动态资源)
* javax.servlet.Servlet 包下的
* 注意:如果报错或提示不出来
* 在library修改或添tomcat到你的工程中
*
* Servlet的生命周期方法
* 实例化——>初始化——>服务方法销——>毁方法
* Servlet只创建一次
* 当你再次访该Servlet时
* 不会创建新的Servlet
* 只会重复调用服务方法 Servlet方法
*
* 简单谈谈servlet的访问流程?
* 用户发出请求
* (http://localhost:8080/sh-web-01/demo01)
* 系统如何促进出对应servlet出来?
* 1.通过用户请求的网址
* 服务器会获取到 项目的名称 /sh-web-01/demo01
* 2.找到你对应项目后 从项目中找到
* 该项目的web.xml文件
* 3.从web.xml文件 可以找到访问servlet的路径(/demo01)
* 4.通过servelt的路径 找到用户
* 要访问哪一个servlet的名字(demo01)
* 5.通过servlet名字 就能找到 要创建
* 的servlet 属于哪个类
* 6.系统就会通过反射创建该类的对象
* 然后 就走生命周期的4个方法
*
* 创建servlet的第一种方式
* 直接上线servlet接口
public class Demo01 implements 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() {
return null;
}
// 获取Servlet的版本 作者等信息的方法
public String getServletInfo() {
return null;
}
}
直接继承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);
}
}
利用模板 快速创建
public class Demo04 extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
System.out.println("demo04...doget");
}
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}