idea:Unable to compile class for JSP , jsp自定义标签问题

使用idea编辑器编写jsp自定义标签的时候,与使用eclipse和mye在配置地方有许多不同。特记录下来以防忘记。

先说说报 unable to complie class for JSP问题的解决方法吧:
    刚开始报错的时候,去网上翻了许多资料,大多讲的方法是:将项目工程下重复的jsp-api.jar和servlet-api.jar包删除。

可我自己的写的jsp自定义标签的demo中并没有重复使用这两个jar包。最后发现,我的问题出在src下建立的jsp自定义标签的解析文件是一个无包的类,所以导致页面一直报错。将其放置在一个包下,并修改所有引用了这个类的地方:jsp文件和.tld文件相应部分,就不会报错了。

下面,我介绍一下使用idea创建一个jsp自定义标签的步骤:

1.在jsp文件中编写自定义标签,自定义标签包含两部分,前缀和后缀,中间用:隔开。

<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2018/2/24
  Time: 16:49
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" import="htt01.HelloTag, java.util.*, java.io.*"%>
<%@taglib prefix="sweet" uri="/test" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<sweet:hello></sweet:hello>
</body>
</html>
2.编写标签解析程序:在src下的有名包下建立.java文件作为解析文件用。
package htt01;

import javax.servlet.jsp.JspWriter;
import javax.servlet.jsp.tagext.SimpleTagSupport;
import java.io.IOException;

public class HelloTag extends SimpleTagSupport {
    @Override
    public void doTag(){
        JspWriter out = this.getJspContext().getOut();
        try {
            out.println("hello world");//表示出现自定义标签就自动输出hello world
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

3.进行相关配置:

右击file-->settings,在搜索框中输入DTDS。

选择schemas and DTDS,在如下页面


点击+号


输入上上张图中2所示的内容至URL中,在下面jar包中勾选上图所示的dtd,.点击apply,再点击ok

(1)在WEB-INF文件下建立xxx.tld文件作为配置文件。

在已生成的模板上添加相关内容:

<?xml version="1.0" encoding="ISO-8859-1"?>

<taglib xmlns="http://java.sun.com/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"
        version="2.1">

    <tlib-version>1.0</tlib-version>
    <short-name>test</short-name>

    <tag>
        <name>hello</name>
        <tag-class>htt01.HelloTag</tag-class>
        <body-content>empty</body-content>
    </tag>


    <!-- Invoke 'Generate' action to add tags or functions -->

</taglib>

(2)在web.xml文件中进行相关配置:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1">
    <jsp-config>
        <taglib>
            <taglib-uri>/test</taglib-uri>
            <taglib-location>/WEB-INF/test.tld</taglib-location>
        </taglib>
    </jsp-config>
</web-app>
<taglib-uri></taglib>中写的是xxx.tld文件的xxx部分

<taglib-location></taglib-location>中编写是全路径一般为/WEB-INF/xxx.tld

4.配置完毕后返回.jsp文件页面,首部添加如下代码:

<%@ page contentType="text/html;charset=UTF-8" language="java" import="htt01.HelloTag, java.util.*, java.io.*"%>
<%@taglib prefix="sweet" uri="/test" %>

prefix=".."中跟的是自定义标签的前缀。uri对应的是web.xml中编写的配置文件中的<taglib-uri>/xxx</taglib-uri>中的/xxx。

默认.jsp文件只有

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

所以需要修改。修改完毕后,将demo部署到tomcat服务器,开启服务器,浏览器中输入地址就可以跑的起了。

版权声明:原创文章,转载请注明出处:http://blog.csdn.net/double_sweet1/article/details/79366317

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coding101

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值