JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。
语法:
page属性的值,可以自己指定一个值,也可以根据一个表达式来获得。
flush属性指定在插入其它资源前,是否将当前jsp的内容刷新到客户端。
默认为false,在include另一个jsp文件时,默认情况下,服务器会等待该文件被读到底端,然后才输出到客户端,并且销毁该次访问的request和response。而当把flush属性赋为真值 时,在缓存累积了一定数据时,服务器会先提供一部分数据给浏览器,并等待后续内容 。
代码实例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
<%
request.setAttribute("end","End.jsp");
%>
//记得转型
include指令为静态引入,就是把两个jsp页面合并到一起,然后翻译成一个servlet的页面。
使用incude指令合并:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
<%
String name="demo2";
%>
demo2中的name值为<%= name%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
<%
String name="demo1";
%>
demo1中的name值为:<%= name%>
<%@include file="demo2.jsp"%>
这里发生的错误,可以看出include的标签,实在源文件的基础上进行了,何不,所以出现了重复定义局部变量的错误。
修改为
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
<%
String name="demo1";
%>
demo1中的name值为:<%= name%>
<%--<%@include file="demo2.jsp"%>--%>
这样就没有问题了。
一般按照标准,我们需要引入的jsp资源文件的后缀面应该是.jspf,在总结的时候,发现当使用include标签合并两个.jspf文件时,没有出现问题,但是使用
我们发现浏览器把.jspf文件当作纯文本来解决了,解决方法是在Tomcat服务器下web.xml文件下添加,如下的配置
语法:
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
这是我们的网页开头哦
//也可以用表达式来获取
当使用
代码实例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
这是我们的网页开头哦
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
Title
这是我们的网页结尾哦
name:<%=request.getParameter("name")%>
age:<%=request.getParameter("age")%>
JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的,并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性(成员属性要是私有的),set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。
JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的setter、 getter方法,setter方法称为属性修改器,getter方法称为属性访问器。
属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,name属性的修改器名称为setName,password属性的修改器名称为setPassword。
属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,例如,name属性的访问器名称为getName,password属性的访问器名称为getPassword。
一个JavaBean的某个属性也可以只有set方法或get方法,这样的属性通常也称之为只写、只读属性。
语法:
id:指定指向JavaBean对象实例和存放在域中的名称
class:指定JavaBean完整的类名(包名+类名)
scope:指定JavaBean实例对象存储的域,默认为page
使用实例:
JavaBean:
package com.luther.TestWeb;
public class PersonBean {
private String name;
private String sex;
private int age;
public PersonBean(){}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
jsp:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
如何使用JavaBean
<%
String sex="male";
person.setName("哈哈哈");
person.setAge(18);
person.setSex("male");
%>
<%=person.getName()%>
<%=person.getAge()%>
<%=person.getSex()%>
查找的位置(IDEA例):
C:\Users\bang\.IntelliJIdea2018.2\system\tomcat\Tomcat_9_0_12_项目名\work\Catalina\localhost\ROOT\org\apache\jsp下寻找.
//初始化对象为null
com.luther.TestWeb.PersonBean person = null;
//加同步,防止线程问题
synchronized (session) {
//获取存储在session作用域中的对象
person = (com.luther.TestWeb.PersonBean) _jspx_page_context.getAttribute("person", javax.servlet.jsp.PageContext.SESSION_SCOPE);
//如果没有就重新new一个对象
if (person == null){
person = new com.luther.TestWeb.PersonBean();
//存储到session对象中
_jspx_page_context.setAttribute("person", person, javax.servlet.jsp.PageContext.SESSION_SCOPE);
}
}
语法:
Body
功能:
Body部分的内容只在
我们在jsp文件如果使用像上面代码那样的赋值与取值方法,这样不利于我们的维护,可以阅读性也较差,所以这里提供了两个标签里供我们使用。
语法一:
name:用于指定实例对象的名称,
property:要赋值的参数名,一定要和JavaBean中的属性名一致
value:赋值的值
语法二:
param:用于将JavaBean实例对象的某个属性值设置为一个请求参数值,该属性值同样会自动转换成要设置的JavaBean属性的类型。
语法三:
用所有请求参数来赋值。
语法三代码实例:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
如何使用JavaBean
<%
String sex="male";
%>
<%=person.getName()%>
<%=person.getAge()%>
<%=person.getSex()%>
语法:
name:实例化对象引用的名称
property:JavaBean的属性名
总结实例代码:
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
如何使用JavaBean
<%
String sex="male";
%>
姓名:
年龄:
性别: