web学习01

javaweb开发(服务器端)

 用户(浏览器)访问服务端的

 静态web资源html css js

 用户在访问静态资源的时候 这些资源不会变

 动态web资源 jsp servlet

 用户在访问动态资源的时候 访问的内容是由代码生成的

 例如 不同用户访问不用的资源


 用户通过网址请求服务器端

 请求就是服务器端上面的静态资源和动态资源

 请求完成会给浏览器一个响应结果

 

 服务器

 tomcat服务器  sun公司 开源的免费的

 轻量级服务器  

java代码和html页面全是放到服务器上运行

 (服务器端开发是开发放到服务器上的运行的代码)

  

  javaEE规范服务器的一套规则(类和接口)

  jsp和servlet就是这套规范的一部分

  

  tomcat服务器下文件夹

  bin存放编译指令(开启关闭服务)

  conf存放自己打的配置文件

  lib存放tomcat依赖的jar包

 logs存放用户访问服务器的日志(查看错误)

  temp存放临时文件

  webapps默认存放应用程序的文件夹(你的工程)

  work存放tomcat自己的工作文件

  wtpwebapps 与eclipse关联后存放工程的文件夹

  

  命令行(终端开启tomcat服务)

  1.前往tomcat的bin文件夹下

  2.开启文件管理权限(读写) sudo chmod 755 *.sh

  3.开启服务 (win下执行的是.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文件夹下的内容编译进去(文件夹本身不出现)

  META-INF 扩展应用程序文件夹(展示没用)

  WEB-INF 存放工程的所有资源

      lib 存放工程使用的jar包(不用添加路径  自动编译到服务器上)

      web.xml 工程的配置文件

      classes 工程编译到服务器上出现的 里面保存的是 工程中类.class文件

 注意: WEB-INF文件夹下的资源不能直接通过网址去实现

 

servlet(小服务程序)java接口 

 访问服务器实际上访问的是servlet(容器  里面有动态资源)

 javax包下 如果错误或提示不出来 在library修改或添加tomcat到工程中

 

 servlet生命周期方法

 实例化--初始化-- 服务方法--销毁方法

 servlet只创建一次 当你再次访问该servlet时 不会创建新的servlet 只会调用重复服务

 

 简单谈谈servlet的流程

 用户创建请求 系统如何创建出对应的servlet

 1.通过用户请求的网址会获取到项目的名称

 2.找到你对应的项目后接着 从项目中找到该项目的web.xml文件

 3.从xml文件中找到 访问servlet的路径(/demo01)

 4.通过servlet路径找到用户要访问的哪一个servlet的名字(demo01)

 5.通过servlet名字就能找到 要创建的servlet 属于哪个类

 6.系统通过反射创建该类的对象 然后就走生命周期的4个方法

 

 创建servlet的第一种方式  实现接口

public class Demo01 implements Servlet {
	//实例化方法(创建对象的无参构造方法)
	public Demo01() {
		
	}
	//初始化方法(初始化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;
	}
<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的第二种方式

继承genericservlet

 (缺省适配器  简化代码  生命周期方法可以不写)

public class Demo02 extends GenericServlet{

	@Override
	public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
		System.out.println("demo02的service方法");
	}

}
创建servlet的第三种方式

直接继承HttpServlet

模板设计模式

从浏览器发送的请求都是get请求

注意:重写完后不要调用父类的doget方法 否则一样会发生错误


public class Demo03 extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
	}
	@Override
	protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		doGet(req, resp);
	}
}


 利用通配符设置路径 

 1./demo04 绝对路径

 2.*.后缀名  *.action

 3./*

注意:2.3不能一起使用

4./默认的配置方式 不是给你用的

凡是通过服务器访问的资源都是servlet


 配置servlet创建优先级 数越小优先级越高 

加上这个设置 服务器启动就会创建该servlet     

<load-on-startup>5</load-on-startup>



猜你喜欢

转载自blog.csdn.net/cdd233333/article/details/80783472