对于jsp我是纯新手,没学过jsp的上一代,直接开始学的jsp。

所以教程有些高估我了,导致我使用 jsp:useBean的时候踩了超级多的坑。

首先是jsp:useBean的使用,最开始教程给的是:

        

<jsp:useBean> 的语法如下:

<jsp:useBean id = "name" class = "package.class" scope= "page | request | session | application" />

其中:
1)id
表示 Bean 实例化对象的变量名,可以在指定范围内使用该变量名。

2)class
表示需要实例化 Bean 的类路径,指定的类必须包含 public 且无参数的构造方法。

3)scope
指定 Bean 的作用域,取值为:
page:只能在当前页面使用该 Bean 对象;
request:只能在一次请求范围内使用该 Bean 对象;
session:只能在一次会话范围内使用该 Bean 对象;
application:可以在整个应用范围内使用该 Bean 对象。

他给的是package.class,我以为只是单纯的类的意思,后来看了别人说的才知道要的是.class后缀的文件,不是后缀为.java的文件(我是在这个地方踩坑的,不知道你们是不是)。

其次,我用的是Ecilpse编译器,所以我根本看不到.class文件,我只能看到.java文件(当然可能是我操作不对)。所以退而求其次的方式就是给你的.java文件加一个main方法(原因在于:对于有main方法的类,编译器是会进行编译的(即生成.class文件),我也是偶然试了一下,结果是成功的),到这里,文件类型的问题就解决了。

接下来解决文件放在哪里的问题:

        第一步,创建一个包:

                路径为工程下 src/main/java

        第二步,创建一个类(带main方法):

                

jsp可以引用java jar_eclipse

第三步:在如下路径下创建 classes文件夹:

src/main/webspp/WEB-INF

jsp可以引用java jar_eclipse_02

 

 第四步就是使用了:

        

<%@page language="java" import="com.google.gson.Gson"%>
<%@ page language="java" contentType="text/html; charset=utf-8"
    pageEncoding="utf-8"%>
   
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>jsp使用库</title>
</head>
<body>
	<%= "weolcom <a href='http://localhost/welcom.jsp'>go</a>" %>
	<br>
	<jsp:useBean id="test" class="jspDemo1.Test"></jsp:useBean>
	<%
        out.print(test.concatStr());
    %>
    
    <jsp:useBean id="user" class="com.Test.User"></jsp:useBean>
	<%
		Gson gson = new Gson();
	%>
	<%="user 序列化:<br>"+gson.toJson(user) %>
</body>
</html>

               

jsp可以引用java jar_eclipse_03

 这里也可以看到我的网站是直接使用ip+port访问的(内网穿透的时候,你的网站如果不能这样访问就会出错,即找不到网页),这里也简单提一下做法:

        工具栏->Window->Show View->Servers

        然后点击servers,选择你想修改的服务器设置

        

jsp可以引用java jar_java_04

 

jsp可以引用java jar_servlet_05

jsp可以引用java jar_servlet_06

 

接下来就是库的导入了:上面我使用了 Gson库,按照正常java项目的导入过程,我们会进入build pth 里面添加,但是经过尝试后会报错,我们需要在 src/main/ webapp/WEB-INF/lib 下直接粘贴要导入的.jar文件

        

jsp可以引用java jar_servlet_07

我们做完了上述工作,看似没有的了问题,但是还有一个问题就是:

        如果我们对一个类进行了修改,继续使用jsp:useBean 产生的对象是现在的还是原来的。

答案就是,我们使用的还是原来的。

        首先看结论:

这是修改后的 Test类

package jspDemo1;

public class Test {
	
	public static void main(String[] args) {
	
	}
	
	public String concatStr() {
      
        return "after change";
    }
}

 正常来说,我们再次进入index.jsp,结果应该跟上面不一样,但是结果是:

        

jsp可以引用java jar_java_08

很显然,和上面一样。

解决的方法也很简单,只需要编译运行一下就好了,看到这里,我想大部分人已经明白了,Jsp:useBean 需要的.class文件,最开始的时候,如果没有找到.java对应的.class文件会报错,需要我们编译一次生成.class,而如果存在.class,它就会直接使用,即需要我们手动去更新.class。

编译后结果如下:

        

jsp可以引用java jar_eclipse_09

 

 

以上就是我对jsp:useBean如何使用的总结,仅供参考。