JSP标签与JavaBean总结

一、JSP标签

1、JSP标签的简单介绍

     JSP标签也称之为Jsp Action(JSP动作)元素,它用于在Jsp页面中提供业务逻辑功能,避免在JSP页面中直接编写java代码,造成jsp页面难以维护。

2、常用的JSP标签

<jsp:include>   动态的包含页面

<jsp:forword>   进行资源的转换

<jsp:param>     参数的赋值

3、 <jsp:include>标签

<jsp:include>用于在JSP页面把另一个资源的输出内容,插入到该jsp的输出内容中,这种插入方式叫做动态引入。

语法:

<jsp:include page="relativeURL|<%= expression %>" flush="true|false"/>

page属性的值,可以自己指定一个值,也可以根据一个表达式来获得。


flush属性指定在插入其它资源前,是否将当前jsp的内容刷新到客户端。
       默认为false,在include另一个jsp文件时,默认情况下,服务器会等待该文件被读到底端,然后才输出到客户端,并且销毁该次访问的request和response。而当把flush属性赋为真值 时,在缓存累积了一定数据时,服务器会先提供一部分数据给浏览器,并等待后续内容 。

代码实例:


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    request.setAttribute("end","End.jsp");
%>
<jsp:include page="/jsp/import/Head.jsp" flush="false"></jsp:include>
//记得转型
<jsp:include page='<%= (String) request.getAttribute("end") %>' flush="true"></jsp:include>
</body>
</html>

3.1<jsp:include>与include指令的区别

<jsp:include>是动态引入,假设涉及到两个jsp页面会把两个jsp页面翻译为两个servlet页面。这两个servlet在执行的时候,会进行合并。

include指令为静态引入,就是把两个jsp页面合并到一起,然后翻译成一个servlet的页面。

使用incude指令合并:


<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String name="demo2";
%>
<p>demo2中的name值为<%= name%></p>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String name="demo1";
%>
<p>demo1中的name值为:<%= name%></p>
<%@include file="demo2.jsp"%>

</body>
</html>

这里发生的错误,可以看出include的标签,实在源文件的基础上进行了,何不,所以出现了重复定义局部变量的错误。

修改为<jsp:include>引入

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    String name="demo1";
%>
<p>demo1中的name值为:<%= name%></p>
<%--<%@include file="demo2.jsp"%>--%>
<jsp:include page="demo2.jsp"></jsp:include>
</body>
</html>

这样就没有问题了。

3.2解决<jsp:include>引入.jspf文件出现异常的问题

  一般按照标准,我们需要引入的jsp资源文件的后缀面应该是.jspf,在总结的时候,发现当使用include标签合并两个.jspf文件时,没有出现问题,但是使用<jsp:include>标签引入的时候,出现了异常.

我们发现浏览器把.jspf文件当作纯文本来解决了,解决方法是在Tomcat服务器下web.xml文件下添加,如下的配置

4、<jsp:forword>标签

<jsp:forward>标签用于把请求转发给另外一个资源。
语法:
      <jsp:forward page="relativeURL | <%=expression%>" /> 
page属性用于指定请求转发到的资源的相对路径,它也可以通过执行一个表达式来获得。

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>这是我们的网页开头哦</h1>
//也可以用表达式来获取
<jsp:forward page="End.jsp"></jsp:forward>
</body>
</html>

5、<jsp:param>标签

当使用<jsp:include>与<jsp:forword>标签时,可以使用<jsp:param>标签来进行一些数值的传递.

代码实例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>

<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>这是我们的网页开头哦</h1>
<jsp:forward page="End.jsp">
    <jsp:param name="name" value="luther"></jsp:param>
    <jsp:param name="age" value="99"></jsp:param>
</jsp:forward>
</body>
</html>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<h1>这是我们的网页结尾哦</h1>
name:<span><%=request.getParameter("name")%></span><br>
age:<span><%=request.getParameter("age")%></span>
</body>
</html>

二、JavaBean总结

 

1、什么是JavaBean。

     JavaBean 是一种JAVA语言写成的可重用组件。为写成JavaBean,类必须是具体的和公共的并且具有无参数的构造器。JavaBean 通过提供符合一致性设计模式的公共方法将内部域暴露成员属性(成员属性要是私有的),set和get方法获取。众所周知,属性名称符合这种模式,其他Java 类可以通过自省机制(反射机制)发现和操作这些JavaBean 的属性。

2、JavaBean的属性的要求

  JavaBean的属性可以是任意类型,并且一个JavaBean可以有多个属性。每个属性通常都需要具有相应的setter、 getter方法,setter方法称为属性修改器,getter方法称为属性访问器。
  属性修改器必须以小写的set前缀开始,后跟属性名,且属性名的第一个字母要改为大写,例如,name属性的修改器名称为setName,password属性的修改器名称为setPassword。 
  属性访问器通常以小写的get前缀开始,后跟属性名,且属性名的第一个字母也要改为大写,例如,name属性的访问器名称为getName,password属性的访问器名称为getPassword。 
  一个JavaBean的某个属性也可以只有set方法或get方法,这样的属性通常也称之为只写、只读属性。

3、jsp中访问JavaBean的jsp标签。

<jsp:useBean>标签:用于在JSP页面中查找或实例化一个JavaBean组件。
<jsp:setProperty>标签:用于在JSP页面中设置一个JavaBean组件的属性。
<jsp:getProperty>标签:用于在JSP页面中获取一个JavaBean组件的属性。

3.1<jsp:useBean>

<jsp:useBean>标签用来在指定的域范围内来寻找JavaBean对象,如果存在则直接返回一个指向JavaBean对象的引用,如果不存在则实例化一个新的JavaBean对象,以指定的名称存放到指定的域中。

语法:
   <jsp:useBean id="beanName" class="com.luther.JavaBean.Test" scope="session|request|page|application"/>

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" %>
<jsp:useBean id="person" class="com.luther.TestWeb.PersonBean" scope="session"/>
<html>
<head>
    <title>如何使用JavaBean</title>
</head>
<body>
<%
    String sex="male";
    person.setName("哈哈哈");
    person.setAge(18);
    person.setSex("male");
%>

<p><%=person.getName()%></p>

<p><%=person.getAge()%></p>

<p><%=person.getSex()%></p>
</body>
</html>

3.1.1 <jsp:useBean>的实现原理

<jsp:useBean>如何实例话一个对象呢。由于jsp会被jsp引擎翻译成一个servlet文件,所以我们可以找到生成的.java文件来查看。

查找的位置(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);
        }
}

3.1.2、带标签体的<jsp:useBean>标签

语法:
    <jsp:useBean ...> 
        Body 
    </jsp:useBean> 
功能:
    Body部分的内容只在<jsp:useBean>标签创建JavaBean的实例对象时才执行。

3.2<jsp:setProperty>与<jsp:getProperty>

我们在jsp文件如果使用像上面代码那样的赋值与取值方法,这样不利于我们的维护,可以阅读性也较差,所以这里提供了两个标签里供我们使用。

<jsp:setProperty>
语法一:
<jsp:setProperty name=" " property=" " value="字符串|<%= 表达式%> "/>

name:用于指定实例对象的名称,<jsp:useBean>中的id属性值
property:要赋值的参数名,一定要和JavaBean中的属性名一致
value:赋值的值

语法二:

<jsp:setProperty name=" " property=" " param=" "/>
param:用于将JavaBean实例对象的某个属性值设置为一个请求参数值,该属性值同样会自动转换成要设置的JavaBean属性的类型。

语法三:

<jsp:setProperty name=" " property="* " />

用所有请求参数来赋值。

语法三代码实例:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="person" class="com.luther.TestWeb.PersonBean" scope="session"/>
<html>
<head>
    <title>如何使用JavaBean</title>
</head>
<body>


<jsp:setProperty name="person" property="*"/>

<%
    String sex="male";

%>

<p><%=person.getName()%></p>

<p><%=person.getAge()%></p>

<p><%=person.getSex()%></p>
</body>
</html>

<jsp:getProperty>

语法:

<jsp:getProperty name="person" property="name"/>
name:实例化对象引用的名称
property:JavaBean的属性名


总结实例代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<jsp:useBean id="person" class="com.luther.TestWeb.PersonBean" scope="session"/>
<html>
<head>
    <title>如何使用JavaBean</title>
</head>
<body>
<%
    String sex="male";
%>


<jsp:setProperty name="person" property="name" value="Luther"/>
<jsp:setProperty name="person" property="sex" value="<%=sex%>"/>
<jsp:setProperty name="person" property="age" param="age1"/>
<h1>姓名:<jsp:getProperty name="person" property="name"/></h1>
<h2>年龄:<jsp:getProperty name="person" property="age"/></h2>
<h3>性别:<jsp:getProperty name="person" property="sex"/></h3>
</body>
</html>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 首先,我们需要创建一个名为 `MemberBean` 的 JavaBean,用于获取和存储会员注册信息。在该Bean中,我们需要定义一些属性,如用户名、密码、电子邮件地址等,并提供对这些属性的 getter 和 setter 方法。以下是示例代码: ``` public class MemberBean { private String username; private String password; private String email; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } } ``` 接下来,我们需要编写会员注册页面 `register.jsp`,该页面包含一个 HTML 表单,用于输入会员注册信息。在表单提交时,我们使用 `<jsp:useBean>` 标签来实例化 `MemberBean` 对象,并使用 `<jsp:setProperty>` 标签将表单数据设置为该对象的属性值。以下是示例代码: ``` <%@ page contentType="text/html; charset=UTF-8" language="java" %> <jsp:useBean id="member" class="com.example.MemberBean" /> <html> <head> <title>会员注册</title> </head> <body> <h1>会员注册</h1> <form action="registerProcess.jsp" method="post"> <label>用户名:</label><input type="text" name="username" /><br /> <label>密码:</label><input type="password" name="password" /><br /> <label>电子邮件地址:</label><input type="text" name="email" /><br /> <input type="submit" value="注册" /> </form> <jsp:setProperty name="member" property="username" value="${param.username}" /> <jsp:setProperty name="member" property="password" value="${param.password}" /> <jsp:setProperty name="member" property="email" value="${param.email}" /> </body> </html> ``` 在表单提交后,我们需要编写 `registerProcess.jsp` 页面来处理会员注册信息。在该页面中,我们首先使用 `<jsp:useBean>` 标签获取 `MemberBean` 对象,并将其属性值显示在另一个 JSP 页面中。以下是示例代码: ``` <%@ page contentType="text/html; charset=UTF-8" language="java" %> <jsp:useBean id="member" class="com.example.MemberBean" /> <html> <head> <title>注册信息</title> </head> <body> <h1>注册信息</h1> <p>用户名:${member.username}</p> <p>密码:${member.password}</p> <p>电子邮件地址:${member.email}</p> </body> </html> ``` 这样,当会员注册信息被提交时,我们会重定向到 `registerProcess.jsp` 页面,并显示注册信息。 ### 回答2: 编写会员注册的JSP页面需要包含以下内容: 1. 表单:在JSP页面上设计一个包含会员注册信息的表单,例如姓名、性别、年龄、邮箱等。表单中的每个字段都应该有一个对应的HTML输入元素,例如文本框、单选框、下拉框等。 2. 提交按钮:在表单末尾添加一个提交按钮,用户点击该按钮将会员注册信息提交给服务器。 3. JavaBean:编写一个JavaBean类,用于获取页面上的注册信息。该类应该包含与表单字段对应的属性以及对应的getter和setter方法。 4. JSP页面的处理:在表单提交时,JSP页面需要调用JavaBean中的setter方法,将注册信息设置到JavaBean对象中。 5. 转发到另一个JSP页面:在JSP页面上使用跳转语句(例如response.sendRedirect()或request.getRequestDispatcher().forward())将用户注册信息转发到另一个JSP页面。 6. 另一个JSP页面的显示:在另一个JSP页面中,使用JavaBean中的getter方法获取注册信息,然后将其显示在页面上。 总结: 1. 编写会员注册的JSP页面并设计表单。 2. 创建一个JavaBean类,用于获取和存储页面上的注册信息。 3. JSP页面将数据提交到JavaBean对象中。 4. 使用跳转语句将注册信息转发到另一个JSP页面。 5. 另一个JSP页面获取JavaBean对象中的信息,并将其显示在页面上。 ### 回答3: 要编写一个会员注册的JSP页面,首先需要创建一个JavaBean来获取页面注册信息。JavaBean是一个包含私有属性和公共方法的Java类,用于封装数据并提供对数据的访问和操作。 JavaBean可以包含以下属性来存储注册信息: 1. 姓名(name) 2. 邮箱(email) 3. 密码(password) 4. 确认密码(confirmPassword) 5. 电话号码(phoneNumber) 为了获取页面注册信息,可以在JSP页面中创建一个表单,用户输入相关信息后点击注册按钮,提交表单时,表单数据将被发送到服务器。 在JSP页面中,可以通过JSP标签来访问JavaBean的属性,并将注册信息传递给另一个JSP页面。 以下是大致的代码示例: 1. 注册页面(register.jsp): ```html <form action="registerAction.jsp" method="post"> <label>姓名:</label> <input type="text" name="name"> <br> <label>邮箱:</label> <input type="email" name="email"> <br> <label>密码:</label> <input type="password" name="password"> <br> <label>确认密码:</label> <input type="password" name="confirmPassword"> <br> <label>电话号码:</label> <input type="text" name="phoneNumber"> <br> <input type="submit" value="注册"> </form> ``` 2. 注册处理页面(registerAction.jsp): ```java <%@ page import="com.example.UserBean" %> <% UserBean user = new UserBean(); user.setName(request.getParameter("name")); user.setEmail(request.getParameter("email")); user.setPassword(request.getParameter("password")); user.setConfirmPassword(request.getParameter("confirmPassword")); user.setPhoneNumber(request.getParameter("phoneNumber")); request.setAttribute("user", user); // 可以在此处添加校验逻辑,如判断密码是否一致等 %> <jsp:forward page="userInfo.jsp" /> ``` 3. 显示注册信息页面(userInfo.jsp): ```html <h1>注册信息</h1> <p>姓名:${user.name}</p> <p>邮箱:${user.email}</p> <p>电话号码:${user.phoneNumber}</p> ``` 在注册处理页面(registerAction.jsp)中,首先创建一个UserBean对象,并使用request.getParameter()方法获取表单数据,然后通过setter方法设置JavaBean的属性值。将UserBean对象存储在request属性中,以便在后续页面(userInfo.jsp)中访问。 在显示注册信息的JSP页面(userInfo.jsp)中,通过JSP表达式`${user.name}`等方式访问JavaBean的属性,显示注册信息。 以上是一个简单的会员注册的JSP页面的实现过程。可以根据实际需求进行修改和扩展。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值