servlet

JavaWeb开发(服务器端)

 静态Web资源 html css js

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

 动态Web资源 jsd Servlet

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

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


用户(浏览器)通过网址来请求服务器端

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

  请求完成之后会给浏览器一个相应结果


服务器

Tomcat服务器

写的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服务是否启动

 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 包下的

 注意:如果报错或提示出不来

 修改或添加tomcat到你的工程中


 Servlet的生命周期方法

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

 Servlet只创建一次

 当你再次访问该Servlet时 不会创建新的Servlet 只会重复调用服务方法 service方法


 servlet的访问流程

 用户发出一个请求

 (http://localhost:8080/sh-web-01/demo01)

 系统如何能创建出对应的servlet出来?

 1.通过用户请求的网址会获取到项目的名称 /sh-web-01

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

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

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

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

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


web.xml的路径:WebContent-->WEB-INF-->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>
  
  <!-- 创建一个servlet -->
  <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 
  		/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
  	jsp html...
  	注意:2 3方式不能一起使用
  	
  	匹配路径的优先级
  	绝对匹配 > / >后缀的
  	
   -->
  <url-pattern>/*</url-pattern>
  </servlet-mapping>
  <!-- 一个servlet配置多个访问路径 -->
  <servlet-mapping>
  <servlet-name>demo04</servlet-name>
  <url-pattern>/demo999</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>

 创建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;
	}

}

 创建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请求
	//注意:重写完之后 不要调用父类的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 {
		System.out.println("doPost");
		//两种请求 共用一个处理方法
		doGet(req, resp);
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值