servlet

本文详细介绍了JSP和Servlet的基本概念、工作原理及应用场景。包括JSP指令、内置对象、页面跳转方式、Servlet的生命周期等核心内容。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

jsp    java   class 


指令   page 是对jsp页面的全局属性的设置
       include   file  

把其中某一个页面  path bashPath 注释起来
动作  jsp:include  page  把指定页面内容加载到本页面
      jsp:forward  转发   用作跳转页面


jsp中标签   可以书写java代码


<% %>    用来声明变量  局部变量    为什么不变?  每刷新一次页面  service 方法
总会调用一次 相当变量重复的声明赋值
<%! %>  声明变量   全局变量   刷新页面   变量自增会发生改变


<%= %>   把代码中的内容 书写的jsp页面中   后面的java代码不需要分号结束




jsp内置对象  ?    jsp再去加载服务器自动创建的对象 不需要人为的创建


9  个内置对象
request response application session pageContext page  exception out  config


application  session    request      page     内置对象的作用域


全局          会话     一次请求    当前页面




application  session  request   pageContext    域对象   setAttribute getAttribute




当request发生改变  比如又创建新的request对象 原来request中的内容找不到了


页面跳转   
 转发  
 特点  地址栏不改变 一个request对象  原来request中的内容一样可以拿到
 方式<jsp:forward>   request.getResquestDispatcher("url").forward(request,response);  


重定向
特点  地址栏发生改变   创新新的request对象  原来request中的内容找不到
方式  <a></a>  超链接  html页面的标签
response.sendRedirect("url");  java代码
js  location.href
   location.replace


转发和重定向在实现页面跳转过程中 页面传值的问题   


两个页面之间的传值   多个页面考虑使用session   
转发   因为没有产生新的request对象   可以把传值的内容放到request中
可以利用request.setAttribute()
跳转后的页面可以利用request.getAttribute()  查看传递的值




重定向   因为地址栏是改变的  可以使用拼接地址栏的方式传值
问号后面拼接key值和对应的value值  多个key值之间使用“&” 连接
         url?key=value&key1=value1.....

由于request对象会发生改变  放在request对象中的内容在跳转后的页面中拿不到


---------------------------------------------------------------------------------------


servlet 什么是servlet   java文件   运行在服务器端  


实际上指的是按照servlet标准去编写的java类 
它可以处理web应用中的请求 由服务器调用执行
具体的执行细节 (执行过程由servlet容器去执行)


servlet容器 servlet它所在的运行环境


tomcat 类似的看做servlet 容器


可以完成事情  处理浏览器客户端请求


实现流程  客户端发出请求--》服务器端接受请求 ---》请求是一个jsp页面 服务器找到页面响应给客户端  找不到页面  404


  如果请求是访问servlet servlet容器先去找对应的servlet 找到后执行这个servlet,把执行后的结果 返回给浏览器  找不到   404 


请求响应过程 主要的控制器就是servlet容器   


servlet 特点  


标准的Java类 符合java的语法规范
可以处理web请求  处理http请求


servlet是持久的  servlet由servlet容器加载之后  就会保留在服务器  下次执行不需要加载
加载  指的是servlet被加载到JVM里面


servlet是平台无关的   是可扩展的


javax.servlet.Servlet
Servlet接口  这是servlet结构的核心
定义的所有的servlet都必须直接或间接的实现这一个接口




servlet/JSP Name  相当于servlet起别名  任意取名


servlet/JSP Mapping URL  浏览器访问该servlet的url地址  任意取名字  
这个名字必须以“/”开头 / 指的就是服务器项目路径






web.xml  


每创建一个servlet,都会想web.xml配置文件中去加入一下内容


<servlet></servlet> 代表一个servlet文件


<servlet-name>  servlet别名  任意取


<servlt-class>  servlet类名 创建时命名的




<servlet-mapping>  对应于<servlet> 一一对应
<servlet-name> servlet别名  任意取 
这两处出现的这个别名必须一致


<url-pattern>   浏览器访问url地址


浏览器输入url地址  服务器接收后
先访问web.xml<url-pattern>
获取到别名<servlet-name>


会去<servlet>  找到对应的别名
进而找到要访问的servlet类文件




jsp servlet  两者联系和区别  


jsp--->servlet--->java类文件


servlet能完成jsp同样可以实现


jsp 实现的servlet也可以实现




jsp很好的去实现页面的开发与设计  


servlet 主要是处理业务逻辑 由服务器直接调用


创建servlet  在地址栏   当前工程下/servlet/loginServlet


doget dopost  


把当前系统时间写入到页面中




所有servlet都要直接或间接的实现Servlet接口


自定义Servlet  继承HttpServlet 即可


创建servlet方式一
手动 去创建一个Servlet
创建一个JAVA 类   继承HttpServlet  


重写doget dopost方法  


手动配置web.xml配置文件


创建servlet方式二


Myeclipse新建servlet


如何用servlet获取表单提交的数据?


request getParameter()




-----------------------------------------------------
Servlet API  方法


 Servlet接口


五个方法


servlet生命周期相关 init()  service()  destory()




getServletInfo()   获取跟Servlet相关的信息




Servlet生命周期  创建-销毁


初始化阶段     init()  服务器启动只会执行一次  要么被自动装载 要么就是第一次访问
1、servlet容器启动后会自动装载某些Servlet  init()
创建servlet  <load-on-startup>  总是小的值要先被装载 代表优先级高 (这两个值都要为正数)








: load-on-startup
The load-on-startup element indicates that this servlet should be loaded (instantiated and have its 
 init() called) on the startup of the web application. The optional contents of these element must be 
 an integer indicating the order in which the servlet should be loaded. If the value is a negative 
 integer, or the element is not present, the container is free to load the servlet whenever it chooses. 
 If the value is a positive integer or 0, the container must load and initialize the servlet as the 
 application is deployed. The container must guarantee that servlets marked with lower integers are 
 loaded before servlets marked with higher integers. The container may choose the order of 
 loading of servlets with the same load-on-start-up value.


-----------------------------------------------






























请求响应的阶段   service()




处理用户请求  先调用service()  调用doget dopost






销毁           destory()















---------------------------
servlet  生命周期  


init()   初始化阶段


service()   请求响应阶段  去调用doget dopost


destory()   终止阶段  销毁  


getServletConfig()   获取config 对象


获取servlet参数相关
getInitParameter()
getInitParameterNames()


getServletContext()  获取application对象




servlet创建时传入参数 


需要使用、 <init-param>


设置参数名  <param-name>
设置参数的值  <param-value>


servlet  加载


服务器启动 自动加载某些servlet


<load-on-startup>  对应的值  代表优先级


当请求访问对应的servlet ,服务器会加载


当servlet文件更新的时候,也会重新加载


先调用销毁的方法  在加载  


servlet生命周期中  init()只会去执行一次




写一个servlet 记录这个servlet访问次数   每次执行时访问指定的servlet即可


application    怎么获取这个对象?






init()  自动加载  


servlet数据库的连接操作   


DriveName 驱动名   Class.forname();


url  数据库地址   


登录数据库 用户名 username


密码   password


放入配置文件中   
init() 读取响应的配置文件(i/o) 获取到与数据库连接有关的数据
















































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值