Response练习

完成重定向

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  System.out.println("demo1....");
    //访问ResponseDemo1资源会跳转到ResponseDemo2资源
    //设置状态码为302	
    response.setStatus(302);
    //设置状态码
    response.setHeader("location", "/Resp/ResponseDemo2");
  
  //简单的重定向方法
  response.sendRedirect("/Resp/ResponseDemo2");
 }

重定向的特点:(redirect)
1,地址栏发生变化
2,重定向可以访问其他站点的资源
3,重定向是两次请求
转发的特点:(forward)
1,转发地址栏路径不变
2,转发只能访问当前服务器下的资源
3,转发是一次请求,可以使用request对象共享数据
路径写法:
相对路径:
通过相对路径不可以确定唯一资源。
./:当前目录
…/:后退一级目录
规则:找到当前资源和目标资源之间的相对位置关系
绝对路径:
通过绝对路径可以确定唯一资源。
以/开头的路径
规则:判断定义的路径给谁用的?
给客户端浏览器用:需要加虚拟目录
a,from,重定向
给服务器使用:不需要虚拟目录

 String path = request.getContextPath(); //getContextPath()获取虚拟目录
 response.sendRedirect(path+"/ResponseDemo2");

服务器输出字符数据到浏览器

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//  //1,获取流对象之前,设置流的默认编码
  response.setContentType("text/html;charset=utf-8");
//  response.setHeader("content-type", "text/html;charset=utf-8");
  //2,获取字符输出流
  PrintWriter pw = response.getWriter();
  //,输出数据
  pw.write("<h1>Hello response 你好<h1>");
 }

注意:设置该流的默认编码,以及告诉浏览器使用的编码。


服务器输出字节数据到浏览器

 protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
  response.setContentType("text/html;charset=utf-8");
  //获取字节输出流
  ServletOutputStream sos = response.getOutputStream();
  //输出数据
  sos.write("你好".getBytes());
 }

验证码
1,本质: 图片
2,目的:防止恶意表单注册

  int width=100;
  int height=50;
  //创建一个对象,在内存中代表一个图片(验证码图片对象)
  BufferedImage image=new BufferedImage(width, height, BufferedImage.TYPE_INT_RGB);
  //美化图片
  Graphics g = image.getGraphics();
  //填充颜色
  g.setColor(Color.PINK);
  g.fillRect(0, 0, width, height);
  //化边框
  g.setColor(Color.BLUE);
  g.drawRect(0, 0, width-1, height-1);
  //写验证码
  String str = "ABCDEFGHIJKLMNOPQRSTUVMXYZabcdefghihgklmnopqrstuvmxyz0123456789";
  //生产随机角标
  Random ran=new Random();
  for(int i =1 ; i <=4 ; i++) {
  int index = ran.nextInt(str.length());
  //获取字符
  char ch = str.charAt(index);
  g.drawString(ch+"", width/5*i, height/2);
  }
      //画干扰线
    g.setColor(Color.GREEN);
  for(int i= 0;i<10 ;i ++) {
   int x1 = ran.nextInt(width);
   int x2 = ran.nextInt(width);
   
   int y1 = ran.nextInt(height);
   int y2 = ran.nextInt(height);
   g.drawLine(x1,y1,x2,y2);
  }
//将图片输出到页面展示
  ImageIO.write(image, "jpg", response.getOutputStream());



//html页面测试
<body>
 <img id="checkCode" alt="" src="/Resp/checkCodeServlet">
 <a id="change" href="http://localhost/Resp/resgister.html">看不清换一张?</a>
</body>

<script type="text/javascript">
window.onload=function(){
	 var img=document.getElementById("checkCode"); 
   	 img.onclick=function(){
    	 var date = new Date().getTime();
    	 img.src="/Resp/checkCodeServlet?"+date;
   }
 }
</script>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Table of Contents Articles Introduction 0 Cookbook/Introduction 0 Cookbook/Acknowledgements 1 Testbench Architecture 2 Testbench 2 Testbench/Build 9 Testbench/Blocklevel 19 Testbench/IntegrationLevel 29 Component 39 Agent 42 Phasing 48 Factory 53 UsingFactoryOverrides 56 SystemVerilogPackages 62 Connections to DUT Interfaces 65 Connections 65 SVCreationOrder 71 Connect/SystemVerilogTechniques 73 ParameterizedTests 75 Connect/Virtual Interface 78 Config/VirtInterfaceConfigDb 86 Connect/VirtInterfacePackage 90 Connect/VirtInterfaceConfigPkg 93 Connect/TwoKingdomsFactory 97 DualTop 103 VirtInterfaceFunctionCallChain 106 BusFunctionalModels 108 ProtocolModules 111 Connect/AbstractConcrete 115 Connect/AbstractConcreteConfigDB 118 Configuring a Test Environment 126 Configuration 126 Resources/config db 131 Config/Params Package 134 Config/ConfiguringSequences 139 ResourceAccessForSequences 142 MacroCostBenefit 145 Analysis Components & Techniques 146 Analysis 146 AnalysisPort 149 AnalysisConnections 152 MonitorComponent 158 Predictors 161 Scoreboards 163 MetricAnalyzers 170 PostRunPhases 172 Matlab/Integration 175 End Of Test Mechanisms 183 EndOfTest 183 Objections 185 Sequences 188 Sequences 188 Sequences/Items 193 Transaction/Methods 195 Sequences/API 200 Connect/Sequencer 204 Driver/Sequence API 206 Sequences/Generation 213 Sequences/Overrides 221 Sequences/Virtual 223 Sequences/VirtualSequencer 231 Sequences/Hierarchy 237 Sequences/SequenceLibrary 242 Driver/Use Models 246 Driver/Unidirectional 247 Driver/Bidirectional 250 Driver/Pipelined 255 Sequences/Arbitration 267 Sequences/Priority 276 Sequences/LockGrab 277 Sequences/Slave 284 Stimulus/Signal Wait 290 Stimulus/Interrupts 294 Sequences/Stopping 301 Sequences/Layering 302 Register Abstraction Layer 308 Registers 308 Registers/Specification 315 Registers/Adapter 317 Registers/Integrating 321 Registers/Integration 327 Registers/RegisterModelOverview 332 Registers/ModelStructure 334 Registers/QuirkyRegisters 344 Registers/ModelCoverage 349 Registers/BackdoorAccess 354 Registers/Generation 357 Registers/StimulusAbstraction 358 Registers/MemoryStimulus 370 Registers/SequenceExamples 375 Registers/BuiltInSequences 382 Registers/Configuration 386 Registers/Scoreboarding 389 Registers/FunctionalCoverage 395 Testbench Acceleration through Co-Emulation 401 Emulation 401 Emulation/SeparateTopLevels 404 Emulation/SplitTransactors 410 Emulation/BackPointers 415 Emulation/DefiningAPI 419 Emulation/Example 422 Emulation/Example/APBDriver 430 Emulation/Example/SPIAgent 435 Emulation/Example/TopLevel 441 Debug of SV and UVM 444 BuiltInDebug 444 Reporting/Verbosity 455 UVM/CommandLineProcessor 460 UVM Connect - SV-SystemC interoperability 464 UvmConnect 464 UvmConnect/Connections 466 UvmConnect/Conversion 468 UvmConnect/CommandAPI 472 UVM Express - step by step improvement 476 UvmExpress 476 UvmExpress/DUT 481 UvmExpress/BFM 485 UvmExpress/WritingBfmTests 490 UvmExpress/FunctionalCoverage 498 UvmExpress/ConstrainedRandom 503 Appendix - Deployment 516 OVM2UVM 516 OVM2UVM/DeprecatedCode 527 OVM2UVM/SequenceLibrary 528 OVM2UVM/Phasing 530 OVM2UVM/ConvertPhaseMethods 535 UVC/UvmVerificationComponent 537 Package/Organization 548 Appendix - Coding Guidelines 555 SV/Guidelines 555 UVM/Guidelines 569 Appendix - Glossary of Terms 579 Doc/Glossary 579

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值