JSP备忘录02--JSP入门请求转发与重定向

 简单的JSP入门知识,涉及虚拟路径与虚拟主机等预备知识。request和response内置对象,请求转发与重定向的应用和区别


预备知识

JSP要在相关容器中运行,我用的是Tomcat服务器。在Tomcat文件的结构中,WEB-INF/web.xml 设置访问的首页。


一、虚拟路径和虚拟主机

  • 虚拟路径

 项目默认访问地址为  E:\Tomcat\apache-tomcat-8.5.58\webapps  ,可以修改,既将web项目配置在其他目录下(虚拟路径)。

打开 conf文件夹下的server.xml文件 ,找到

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

  

 </Host>

显然,主机名为localhost,默认访问的文件夹为webapps。想要访问其他路径下的文件夹的项目,此时需要再  </Host>  上写虚拟的路径(既实际访问其他路径,该路径虚拟出现在webapps下),

在下面添加

 <Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true">

<Context   docBase="F:\view"      path="/view" /> 

   </Host>

 path="/view" 为虚拟路径,表示在webapps下虚拟出一个view的文件夹,docBase="F:\view" 表示项目实际存在的路径。

在 F:\view 目录下,粘贴一份 WEB-INF 文件夹。将其中的web.xml文件中   <welcome-file-list> 进行重新编辑,如下:


  <welcome-file-list>
        <welcome-file>MySQLJOIN.html</welcome-file>    
    </welcome-file-list>

重启Tomcat后在浏览器输入 http://127.0.0.1:8080/view/MySQLJOIN.html

回车,即可展示保存到 F:\view 下的网页文件。

 如果不想重启Tomcat直接实现,在 \apache-tomcat-8.5.58\conf\Catalina\localhost 文件夹下新建

项目名.XML,将上文中的Context 写入即可。

  • 虚拟主机

本机在使用自有的 hosts文件 解析为指定的IP地址。 打开 conf/server.xml 文件,在  </Engine> 节点中,defaultHost="localhost"   改为  defaultHost="DShost"   ,

<Engine name="Catalina" defaultHost="localhost">

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

<Engine name="Catalina" defaultHost="DShost">

在Host 节点上新建一个同级别的Host节点,内容如下:

<Host  appBase="F:\view" name="DShost" >
<Context docBase="F:\view"  path="/" />
      </Host>

C:\Windows\System32\drivers\etc,以管理员权限打开hosts文件,添加一行

127.0.0.1     DShost

重启Tomcat,  输入网址即可实现虚拟主机的效果(端口号改为80就可以不必输入端口号)http://localhost:8080http://localhost:8080

注意 ,path 如果写成  Path  就会报错 462.

二、JSP页面简单分析

1.JSP基础分析

代码如下(示例):

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
    helleo this is JSP 03
    
    <%
    //想回车,在后面加 “<br/>” out.print(<br/>+"  --this is jsp code***--->");
    out.print("  --this is jsp code***--->");
     %> 

</body>
</html>

看起来像在HTML中加入<% %> 中,在其中输入Java脚本语言,可以在其中定义局部变量。也可以使用 <%! ...%>,用以定义全局变量和方法。或者纯粹的输出表达式 <%= ...%>,在其中直接写输出表达式 (不必加“;”)。但实际上,JSP不是直接转换为Java而是转换为格式为serverlet的Java, 在 E:\Tomcat\apache-tomcat-8.5.58\work\Catalina\localhost\ROOT\org\apache\jsp   的路径下,可以看到:

打开Java文件,即可看到:

 

所以JSP本质还是Java,是符合一定规范的Java脚本文件(serverlet)。

2.指令

JSP头部代码如下 :

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" import="java.util.Date"
    %>

 以page指令为例。在网页开头,有诸多属性。包括 import (导包指令)。导入Date包,在body中写入如下代码:

<body>
    hello this is JSP 03
    <%!
    
    Date date = new Date();
    %> 
   
   
    <%
    out.print("<br>"+"--this is jsp code***--->"+date);
     %> 

</body>

显示效果如下:(没有 import会报错)



3.JSP内置对象

上述的 date 是导包进入文件还有通过new方式创建出来的。JSP 有九大内置对象

 request对象: 存储客户端向服务端发送请求信息。

request对象主要方法
String getParameter(String  s) 获取请求信息
String[] getParameterVaues(String  s)  获取多个请求信息
setCharacterEncoding(String  encode)设置(post方式)编码格式,Tomcat8之后默认为utf-8
String getRequestDispatcher(".jsp").forward(request,response).请求转发等
ServerletContext  getServerletContext()获取项目的ServerletContext对象

此外还有 response对象,session对象,application对象,out对象,pageContext对象,config对象,page对象,exception对象


 response对象

void  addCookie(Cookie cookie) 服务端向客户端增加cookie对象
void sendReditect("*.jsp")   

重定向到指定的文件下

(throws IOException)

void setContentType("encoding")  设置服务端响应的编码

总结

 通过对比 request和response的方法(请求转发  与 重定向),二者都是以服务端为中心工作的。无论是request的(服务端将客户端的)请求转发,还是(服务端将客户端)的请求重新定向,都需要理解 服务端--客户端  之间的关联。

 response.sendRedirect("sucess.jsp");  重定向
 request.getRequestDispatcher("sucess.jsp").forward(request,response);  请求转发

请求转发重定向
地址栏是否改变 不变
是否保留第一次请求时的数据   保留    不保留
请求次数  (响应次数) 12

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值