Servlet第三天

web项目的部署要求:
 tomcat
   |_common
   | |_lib 放置容器中所有应用共享的jar包
   |_webapps
       |_当前web应用名对应的文件夹
   |_WEB-INF
   | |_classes
   | |_lib 当前web应用自己需要的jar包
   | |_web.xml
   |_页面(html/jsp)

客户端访问web应用的方式: html==>servlet   html====html
 1 http://localhost:8088/helloWeb/sayHello?name=mary&...
   <===>点击submit提交按钮,将其所在的整个form表单中的所有信息发送给处理类
 2 <a href="/helloWeb/sayHello?name=mary&...">showAll</a>
    热链接可以触发访问处理类,但是必须手动追加参数信息

服务器内部资源跳转: servlet==>servlet    / servlet===>html
 request.getRequestDispacher("html路径/url-pattern").forward(request,response);

       req/resp   req/resp
 client=======>DeleteStudentServlet ====> FindAllServlet
      /deleteStu   /findAll
     <================================================

 1 request.getRequestDispacher("html路径/url-pattern") : RequestDispatcher
 查找url-pattern对应的处理类
 2 RequestDispatcher.forward(req,resp);
 转发到处理类


获取客户端发送的参数:
 request.getParameter(String paramName) : String paramValue;
 
servlet api结构图:
 1 Servlet :封装的是servlet生命周期方法
  1)当前处理类先被加载到虚拟机中
  2)init(ServletConfig config) 初始化,接收外界传递的信息
  3)service(ServletRequest,ServletResponse) 服务方法
  4)destroy() 销毁方法
   ServletConfig :封装了从web容器中获取初始化参数的方法
 2 GenericServlet抽象类 ----  适配器类
  log(String info)
  log(String info,Throwable e) 向tomcat/logs目录下的日志文件中记录日志
 3 HttpServlet
  doGet(HttpServletRequest,HttpServletResponse)
  doPost(HttpServletRequest,HttpServletResponse)

  client ==> tomcat ===> service(ServletRequest,ServletResponse)
  ===> service(HttpServletRequest,HttpServletResponse)===获取客户端发送的方式get/post===>
  get==> doGet(HttpServletRequest,HttpServletResponse)
  post==>doPost(HttpServletRequest,HttpServletResponse)
  


findALLServlet===mofidy热链接===》modify.html(必须由servlet动态输出,目的的获取热链接发送的参数,包含所有的参数)showModifyPage
===用户修改信息,点击提交==》modifyServlet  ===>findAllServlet


绝对路径:/
 1 html页面中跳,则/代表8088以后
 2 request.getRequestDispatcher("").forward(req,resp);
   服务器内部跳,则/代表应用名以后

客户端提交表单的方式:
 get :默认值,将参数名=参数值的信息追加到地址栏中显示提交
 post :隐式提交,不显示参数信息

======================================================================================================
服务器资源跳转:
 1 内部跳转:request.getRequestDispacher("html路径/url-pattern").forward(request,response);
  绝对路径是从项目的根目录下开始
  只显示第一次使用forward跳转之前的路径信息

  缺点:
   可能会导致客户端刷新页面,数据重复提交的问题
   解决:使用资源重定向跳转
 2 资源重定向 response.sendRedirect("html路径/url-pattern");
  【代表从客户端发出一个新的请求】
  绝对路径是从tomcat根目录下开始
  在地址栏显示重定向跳转之后的路径
  
  缺点:
   因为是重新发出新的请求,则跳转之后无法共享之前的所有信息
   解决:
    request.getSession().setAttribute(String name,Object o)
    在session对象中保存一个名为name值的对象信息o
    request.getSession().getAttribute(String name) : Object o
    在session对象中查找名为name值的对象o

======================================================================================================

 

资源共享数据:
 客户端---发送信息---》服务器 :参数
  req.getParameter(String name):String value
 服务器内部共享信息      :属性
  **.setAttribute(String name,Object o)
  **.getAttribute(String name) : Object o
======================================================================================================
 HttpServletRequest 代表一组请求、响应
  req.setAttribute(String name,Object o)
  req.getAttribute(String name) : Object o
 HttpSession  代表和当前用户相关的一系列请求、响应循环
  session.setAttribute(String name,Object o)
  session.getAttribute(String name) : Object o
======================================================================================================
作业:
 实现管理员注册、登录流程
 create table manager(
  mid number primary key,
  managerName varchar2(12) not null unique,
  managerPwd varchar2(12) not null,
  realName varchar2(12)
 );
 系统首页:管理员的登录/注册页面

 模块划分:
  管理员管理模块 
   注册
   登录 (添加js验证)
  学生信息的管理模块
   添加新学生
   删除学生信息
   修改信息
   查询所有信息
 
public Manager login(String name,String pwd)throws Exception;
public void regist(Manager manager)throws Exception;
 


作业:
 实现系统中,同一用户在同一时刻只能登陆一次

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值