JavaWeb入门第二天




三  使用GET 和  POST请求
  1  使用Get方式传递参数:
  ① 在浏览器地址栏中输入某个url地址或者单击网页上的一个超链接时,浏览器发出的http请求消息的请求方式为get
 ②如果网页中的<form>表单元素的method  属性设置为“get”,浏览器提交这个form表单时生成的http请求的请求方式为get
   ③ 使用get请求方式给web服务器传递  有数据量的限制 1 Kb以下
2 使用post  form各字段元素数据作为http消系的实体内容发送给web服务器,传送的数据量大的多 文件上传必须使用Post
四   servlet的 service()方法 用于响应请求

servletRequest:封装了请求信息
servletResponse:封装了响应信息
  1 获取请求参数:
 String  getParameter(String name);  根据请求参数的名字返回参数值


  Map getParameterMap()  返回请求参数的键值对;  key:参数名  value;参数值 String数组类型
 
  Enumeration  getParameterNames();返回参数名对应的Enumeration对像   类似与serVletCongfig或者servletContext

  String[]  getParameterValues(String name)  根据请求参数的名字  返回请求参数对应的字符串数组;

  2 获取请求的url
HttpServletRequest   httpServletRequest=(HttpServletRequest)  request;  强转
String  requestURI=httpServletRequest.getRequestURI();
syso(requestURI)


    3  获取请求方式
String method=httpServletRequest.getMethod();

    4获取请求参数的字符串
     String queryString= httpServletRequest.getQueryString();
      5 获取servlet名
 httpServletRequest.getServletPath();
  getWriter():返回PrintWriter对象  调用该对象的print()方法 ,将把print()中的参数直接打印在客户端浏览器上
    6设置相应的文件类型:
  response.setContentType("");

   GenericServlet
  1)是一个Servlet是servlet接口  和ServletConfig接口的实现类,但是一个抽象类,其中的service为抽象方法
  2)如果新建的servlet程序直接继承genericServlet会使开发更简洁

// 获取请求方式;直接写request.getmethod() 没有这个方法
  HttpServletRequest   httpServletRequest =(HttpServletRequest   )request;
String method=httpServletRequest .getMethod();





jsp:
1)why:  
  jsp简化servlet编写的一种技术,将java代码和html代码语句混合在同一个文件中编写
  只对网页中的动态产生的内容采用java代码编写  而对固定不变的惊天内容采用普通静态HTML页面的方式编写
2)jsp 编写:
  在body中 写在<% %>中
  3).jsp可以放置在web应用程序中的除了wen_inf及其子目录外的其他任何目录中
  jsp页面的访问路径与普通HTML页面的访问路径形式也一样
4)运行原理:本质为一个servlet


5)jsp页面的隐含变量(实际上还有一个exception)
  PageContext  pageContext=null;
  HttpSession   session=null;
  ServletContext  application=null;
  ServletConfig  config=null;
  JspWriter out=null;
 Object  page=this;


①  request: HttpRequest对象
②  response: HttpServletResponse的一个对象(在jsp页面中几乎不会调用response的任何方法)
③ pageContext:页面的上下文  是PageContext的一个对象,可以从这个对象中获取到其他8个隐含对象

④ session  :代表浏览器和服务器的一次对话  是Httpsession的一个对象
⑤  application :代表当前web应用 是ServletContext对象 可以获取初始化值
⑥config:  当前Jsp对应的Servlet的servletConfig对象(开发几乎不适用)
⑦  out: jspWriter对象   可以直接把字符串打印到浏览器上
⑧ page:指向当前jsp对应的servlet对象的引用,但为Object类型  只能调用Obeject方法 (不常使用)
⑨ exception  :在声明了Page的指令 isErrorPage为true后 才可以使用

pageContext  request  session application(对属性的作用域的范围从小道大)




jsp基本语法:
  1 模板元素
  2jsp 表达式
   <%= %>
  将jsp中的值 直接输出到页面上
 3 脚本片段:指嵌套在<%  %><% %>之中的一条或多条java程序代码
  多个脚本片段中的代码可以相互访问
4  <!-->  jsp声明: 将java代码封装在<%!%>之中,它里面的代码将插入进
servlet的jspService方法的外面  (在Jsp页面中从不这样使用)
 5 jsp注释
  <%----%>jsp注释  jsp注释可以阻止java代码的运行
<!---> html 注释     不可以阻止
 6  pageContext:属性的作用范围 仅限于当前jsp页面
    request: 属性的作用范围只限于同一个请求(在有转发的情况下可以跨页面获取属性)
    session:属性的作用范围限于一次会话:浏览器打开直到关闭称之为一次会话(在此期间会话不失效)
    application属性的作用范围限与当前web应用

请求的重定向与请求的转发
   1。 调用HTTPServletRequest的 getRequestDispatcher()方法获取RequestDispatcher对象
    调用getRequestDispatcher()需要传入要转发的地址
  2    调用HttpServletRequest的forward(request,response)进行请求的转发
   4请求的转发与重定向 :本质区别:请求的转发只发送了一次请求  而重定向则发送了两次请求
     区别:①转发的地址栏不发生变化 为初次发生请求的地址  
   而重定向的地址栏不再是初次发出的请求地址 为最后响应的地址
         ② 请求的转发: 在最终的Servlet中,request对象和中转的那个request是同一个对象
            请求的重定向:在最终的SErvlet中,request对象和中转的那个request不是同一个对象
  ③  请求的转发:这能转发给当前的web应用的资源
    请求的重定向:可以重定向到任何资源
④ 对于请求转发而言  /代表当前web应用下的jsp
   请求的重定向  /代表当前web站点的根目录


jsp指令:<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

  include  page   taglib 三种指令

 page指令:无论Page指令出现在jsp页面的任何地方 它的作用范围都为整个jsp页面 为了保持程序的可读性和遵循良好的
编程习惯  一般放在jsP页面的起始位置
  ①import  属性  :指定当前jsp页面对应的需要导入的类
  ②session属性:取值  true或者false  
  ③  errorPage  :指定当前页面出现错误的实际响应页面是什么  其中/表示的是当前web应用的根目录
   <%@ page errorPage="/error.jsp"%>
isErrorPage  :指定当前页面是否为错误处理页面;可以说明当前页面是否可以使用exception
  需要制定isErrorPage="true"    <%@=exception.getMessage()%>  一般不建议苟能直接访问该页面
  注意: 对应tomcat而言 web-inf下的文件是不能通过在浏览器中直接输入地址来访问
      访问方式:转发

     方式二:
  <error-page>  指定出错的代码
   <error-code>404</>
   <location>/.jsp</>
   </>

<error-page>   指定异常的类型
   <error-type>java.lang.ArithmeticException</>
   <location>/.jsp</>
   </>

④ contentType:指定当前页面的响应类型
     实际调用的为  response.setContentType("text/html;charset=utf-8")
⑤  pageEncoding:指定当前jsp页面的字符编码
⑥指定当前页面是否可以使用el表达式:  isElIgnored  通常为false


 include:静态包含  源码级包含   file属性的设置值必须为相对路径


<jsp:include>标签 动态引入(两个.java原文件)<%@include  file=".jsp"%>
<jsp:forward page=".jsp"> 相当于
<%
   request.getRequestDispatcher(".jsp").forward(request,response);
%>

   jsp:param子标签向其他Jsp传入一些参数:

中文乱码问题:
  1 在jsp页面上输入中文 请求页面后不会出现乱码:保证  contentType="text/html;charset=utf-8"
  pageEncoding="utf-8"  charset和pageEncoding的编码一致
  2 获取中文参数值:默认参数在传输过程中使用的编码为iso-8859-1
   ①对于post请求:只要在获取请求信息时,调用request.setCharacterEncoding(“utf-8”)即可
  ②对于get请求:前面的方式对于get无效  可以通过修改tomcat的server.xml文件的格式
    为connector节点添加userBodyEncodingForUri="true"


MVC   关于mvc
  1  m  :model  dao
  2  v  :view  jsp在页面上填写java代码实现显示
  3  c  :controller servlet
        ①受理请求
        ② 获取请求参数
        ③调用Dao方法
        ④可能会把Dao方法的返回值放入request中
        ⑤转发或者重定向
 2 什么时候转发:或者重定向
   若目标的响应页面不需要从request中读取任何值,则可以使用重定向(还可以防止表单的重复提交)
3 不足:1. dao写的很多 代码冗余  使用数据库连接池   DButils
        2.一个请求一个servlet不好!一个模块使用一个SErvlet  即多个请求可以使用一个serlvet
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值