一、基本概念
1.1、WEB开发的相关知识
WEB,在英语中web即表示网页的意思,它用于表示Internet主机上供外界访问的资源。
Internet上供外界访问的Web资源分为:
静态web资源(如html 页面):指web页面中供人们浏览的数据始终是不变。
动态web资源:指web页面中供人们浏览的数据是由程序产生的,不同时间点访问web页面看到的内容各不相同。
静态web资源开发技术:Html
常用动态web资源开发技术:JSP/Servlet、ASP、PHP等
在Java中,动态web资源开发技术统称为Javaweb。
服务器
* Tomcat服务器(黄猫) sun公司 开源的 免费的 轻量级服务器 公司常用的服务器
* 注意:咱们写的java代码和前端html页面 全都是放到服务器上运行(服务器端开发是开发放到
* 服务器上运行的代码而不是开发一个服务器出来)
*
* JavaEE规范服务器的一套规则(类和接口)
* jsp和servlet就是这套规范的一部分
tomcat服务器下文件夹(必须记住)*********
* bin 存放编译指令的文件夹(开启关闭服务)
* conf 存放tomcat自己的配置文件的
* lib 存放tomcat以来的架包
* logs 存放的是用户访问服务器的日志(查看错误)
* temp 存放临时文件的
* webapps 默认存放应用程序的文件夹(你的工程)
* work 存放tomcat自己的工作文件
*
* -------------访问服务器上的资源
* 访问网址:
* http://IP地址:端口号/项目名称/访问的资源
* 通过这个网址 查看tomcat服务是否启动
* 访问的网址
* URL 统一资源定位符
* http://localhost:8080/test/HelloWord.html
* /test/HelloWord.html URI 统一资源标示符
*
* 工程被编译到服务器,实际上是把工程目录下的WebContent文件夹下的内容编译进去
* META-INF 扩展应用程序的文件夹(暂时没用)
* WEB-INF 存放的工程的所有资源(必须记住)**********
* lib 存放工程使用的jar包(不用添加路径了 会自动编译到服务器上)
* web.xml 工程的配置文件
* classes 工程编译到服务器上出现的 里面保存的是 你工程中的类的.class文件
* wtpwebapps与Eclipse关联后 工程存放的文件夹
* 注意:WEB-INF文件夹下存放的资源 是不能通过网址去访问的
*
* 4.关闭服务
* Servlet(小服务程序) 是个java接口
* 访问服务器 实际上访问的就是Servlet(容器 访问动态资源)
* javax.servlet.Servlet 包下的
* 注意:如果报错或提示不出来,修改或添加tomcat到你的工程中(右击-->properities-->library)
*
* Servlet的生命周期方法
* 实例化-->初始化-->服务方法-->销毁方法
* Servlet只是第一次访问的时候创建一次,当你再次访问servlet时,不会创建新的servlet,只会重复调用服务方法service方法
* 404 web.xml中配置信息对不对
* 500 Demo01类找不到
*
* 用户发出一个请求,系统如何能创建出对应的servlet出来?
* 1.通过用户的请求的网址 会获取到项目的名称 /sh-web-01
* 2.找到你对应的项目后 从项目中找到 该项目的web.xml文件
* 3.从xml文件中 可以找到访问servlet的路径(/demo01)
* 4.通过servlet的路径,找到用户要访问的哪一个servlet的名字(demo01)
* 5.通过servlet的名字就能找到要创建的servlet属于哪个类
* 6.系统就会通过反射创建该类的对象,然后走声明周期的四个方法
创建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方法被调用了");
}
//severlet的销毁方法
//1.服务器关闭被调用
//2.该应用程序被移除也会调用
public void destroy() {
System.out.println("destroy销毁方法被调用了");
}
//获取servlet配置信息的方法
public ServletConfig getServletConfig() {
return null;
}
//获取servlet的版本 作者等信息的吧方法
public String getServletInfo() {
return null;
}
}
/*
* 创建Servlet 方式2
* 继承GenericServlet类
* (利用缺省适配器方式 帮你简化代码 生命周期方法可以不写)
*/
public class Demo02 extends GenericServlet {
@Override
public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
System.out.println("Demo02....service方法");
}
}
/*
* 方式三:(****常用***)
* 直接继承HttpServlet
* 利用的是模板设计模式
*/
public class Demo03 extends HttpServlet{
//重写doGet和doPost方法(常用的请求)
//注意:从浏览器发送的请求都是get请求
//注意:重写完之后,不要调用父类的方法,否则一样会发送错误出来
@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);
}
}
5.配置servlet访问地址
<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>