<%--
Created by IntelliJ IDEA.
User: N3verL4nd
Date: 2017/4/20
Time: 9:23
To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
<%
//获取基地址
String contextPath = request.getContextPath();
String basePath = request.getScheme() + "://" + request.getServerName() + ":" +
request.getServerPort() + contextPath + "/";
%>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>测试</title>
<%--basePath,但只能在查看源文件里面显示值--%>
<base href="<%= basePath %>">
</head>
<body>
<a href="hello.view">hello</a>
<br />
<%
//java代码片段(常用),用于定义0~N条Java语句!方法内能写什么,它就可以放什么!
int x = 10;
%>
<%
out.print(x++);//永远输出10,因为没有this那x就是局部变量
%>
<br />
<%= x %><!-- 作用和out.print(x)一样 ,因为上面输出x后x加了1所以永远输出11,无论刷新多少次-->
<br />
<!-- 下面这个x是全局变量 -->
<%!
int x = 100;
public void fun(){
System.out.println(x);
}
%>
<%
out.print(this.x++);//调用的是声明的那个变量x,页面输出值,因为 这个x是全局变量,所以刷新页面原来的值还在
fun();//控制台输出
%>
</body>
</html>
<%--<%...%>:java代码片段(常用),用于定义0~N条Java语句!方法内能写什么,它就可以放什么!--%>
<%--<%=...%>:java表达式,用于输出(常用),用于输出一条表达式(或变量)的结果。response.getWriter().print( ... );这里能放什么,它就可以放什么!--%>
<%--<%!...%>:声明,用来创建类的成员变量和成员方法(基本不用,但容易被考到),类体中可以放什么(成员,方法。。),它就可以放什么!--%>
<base href="<%=basePath%>">
base标记是一个基链接标记,是一个单标记。用以改变文件中所有连结标记的参数内定值。它只能应用于标记<head>与</head>之间。
你网页上的所有相对路径在链接时都将在前面加上基链接指向的地址。
jsp页面可以定义:<% String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%>
在head标签内加上<base href="<%=basePath%>" >即可。
当我们设置为<base href="http://www.baidu.com">,那你下面的href属性就会以你上面设的为基准
<a href="xxx.htm"></a> 等价于<a href="http://www.baidu.com/xxx.htm"></a>
由于我们是以Gradle构建的项目,没有引入jsp-api,导致我们在使用out.println报错
Cannot resolve method 'println(java.lang.String)
我们添加依赖即可:
providedCompile group: 'javax.servlet', name: 'jsp-api', version: '2.0'
参考:
http://stackoverflow.com/questions/3914139/intellij-9-unable-to-recognize-implicit-object-methods-in-jsps