-
-
形形色色世界
2018-08-27
- rff
-
0赞 · 0采集
-
-
moocer9527
2017-05-25
- rtexprvalue标签表示可以在运行时接收表达式的值
-
截图
0赞 · 0采集
-
-
moocer9527
2017-05-25
- 引入并使用标签
-
截图
0赞 · 0采集
-
-
moocer9527
2017-05-25
- Tag配置
-
截图
0赞 · 0采集
-
-
moocer9527
2017-05-25
- 数据库操作
-
截图
0赞 · 0采集
-
-
亲爱的三毛
2017-02-21
- aa啊啊
-
截图
0赞 · 1采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——TagSupport之自定义标签中的属性 III
Q:According to TLD or attribute directive in tag file, attribute password does not accept any expressions。
A:这个属性表示可以在运行时接收表达式的值作为属性值,将其设置为true,下面的类似。
Ps:修改这个tld文件不需要重启tomcat,有一点要注意:jsp动态元素的结果类型必须与属性的类型相同,否则编译器会报错。
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——TagSupport之自定义标签中的属性 II
Ps:记得属性setter要注入。
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
梦编猿
2016-08-11
- JSP自定义标签——TagSupport之自定义标签中的属性 I
【温馨提示:JavaSE/EE、SSH/SSM、Hybrid APP、JQ/JS/CSS3/H5等编程爱好者关注我,加我慕课好友,互相学习,共同进步!】
-
截图
1赞 · 0采集
-
-
java家洼
2016-07-07
- 这里可以看到页面并没有正常运行(返回http状态码是500)
跑出了一个错误:
According to TLD or attribute directive in tag file, attribute password does not accept any expressions
属性password你能设置为任意的表达式
这是什么原因呢?
这里再回到标签库描述文件中,这里要修改attribute标签,
在此标签中加上<rtexprvalue>标签:
<attribute>
<name>driver</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
这个属性表示可以在运行时接收表达式的值作为属性值,将其设置为true,下面的类似。
修改这个tld文件不需要重启tomcat,
再次访问demo4.jsp可以看到页面上显示出了我们想要的结果
有一点要注意:jsp动态元素的结果类型必须与属性的类型相同,否则编译器会报错
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 使用这种直接写出自变量的属性叫做静态属性,当然也可以将其属性值设置为动态的,
这里再来创建一个JSP,demo4.jsp
这里使用动态赋值的方式来创建属性标签的值,
这里为了显示方便,我直接将连接数据库的代码写在jsp页面中,
<body>
<%
String driver="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/test";
String sql="select * from students";
String username="root";
String password="root";
/*这里使用 pageContext 来将变量值设置到页面中 */
pageContext.setAttribute("driver", driver);
pageContext.setAttribute("url",url);
pageContext.setAttribute("sql",sql);
pageContext.setAttribute("username",username);
pageContext.setAttribute("password", password);
%>
<!--之后使用EL表达式的形式为标签中的属性赋值 -->
<imooc:dbConnection password="${password}"
url="${url}"
driver="${driver }"
sql="${sql }"
username="${username }"/>
</body>
我们再来访问一下demo4.jsp
这里可以看到页面并没有正常运行(返回http状态码是500)
跑出了一个错误:
According to TLD or attribute directive in tag file, attribute password does not accept any expressions
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 下面来新建一个JSP页面demo3.jsp
首先引用该标签库
<%@ taglib prefix="imooc" uri="/imooc-tag" %>
在body中:
<body>
<imooc:dbConnection password="root"
url="jdbc:mysql://localhost:3306/test"
driver="com.mysql.jdbc.Driver"
sql="select * from students"
username="root"/>
</body>
然后启动tomcat,访问这个jsp
这样呢,在页面中呢,就可以看到用这种方式将数据库中的数据取了出来,
使用这种直接写出自变量的属性叫做静态属性,当然也可以将其属性值设置为动态的
-
截图
0赞 · 0采集
-
-
java家洼
2016-07-07
- 由于这里要连接数据库,所以在项目中要将mysql的驱动拷入进去,
第二步:在标签类描述文件中注册该标签,并配置属性标签
然后修改一下标签库描述文件imooctag.tld
这里新加入一个tag
<tag>
<name>dbConnection</name>
<tag-class>com.imooc.tag.DBConnectionTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>driver</name>
<required>true</required>
</attribute>
<attribute>
<name>url</name>
<required>true</required>
</attribute>
<attribute>
<name>username</name>
<required>true</required>
</attribute>
<attribute>
<name>password</name>
<required>true</required>
</attribute>
<attribute>
<name>sql</name>
<required>true</required>
</attribute>
</tag>
其中:
<attribute>
<name>driver</name>
<required>true</required>
</attribute>
的name的值是标签处理类中的成员变量driver
required意思是这个属性是必须的,要设置为true
然后其他的属性的设置方法都和它相似。
这样我们的标签就注册成功了
-
截图
1赞 · 1采集
-
-
java家洼
2016-07-07
- 接下来创建一下Connection的引用
Connection conn=null;
Statement stmt=null;
ResultSet rs=null;
然后将连接数据库的业务逻辑代码写到doEndTag()方法中,
这里首先创建一个try-catch块,因为连接数据库会抛出异常
try{
Class.forName(this.driver);
conn=DriverManager.getConnection(this.url, this.username, this.password);
stmt=conn.createStatement();
rs=stmt.executeQuery(this.sql);
if(rs!=null){
while(rs.next()){
//打印出name这一列的内容
pageContext.getOut().print(rs.getString("name")+"<br/>");
}
}
//如果成功了,执行标签下面的代码
return EVAL_PAGE;
}catch(Exception e){
e.printStackTrace();
//如果抛出异常,就不执行标签下面的代码
return SKIP_PAGE;
}finally{
//关闭数据库的连接,这里依然会抛出异常,在这里对其捕获
try {
if(rs != null){
rs.close();
}
if(stmt != null){
stmt.close();
}
if(conn != null){
conn.close();
}
} catch (Exception e2) {
// TODO: handle exception
}
}
-
截图
1赞 · 1采集
-
-
java家洼
2016-07-07
- 经过前面的学习,我们不仅可以控制标签体内容的显示,也可以控制标签结束后内容是够显示,我们还可以在标签中增加
属性来丰富自定义标签的功能
在标签中增加属性,只需要在处理类中增加相应字段的set方法以及在标签描述文档中的tag标签中加入
attribute这个标签来进行配置,
我们这里来定义一个连接数据库的标签,来演示如何设置标签中的属性
切换到开发环境
第一步:创建标签处理类:
首先创建一个标签的处理类,DBConnectionTag这里继承TagSupport,复写doEndTag()方法
这里来声明一些与数据库信息相关的属性
private String driver;
private String url;
private String password;
private String sql;
private Stirng username;
这里要创建一下set方法,因为这些将会是标签的属性
public void setDriver(String driver) {
this.driver = driver;
}
public void setUrl(String url) {
this.url = url;
}
public void setPassword(String password) {
this.password = password;
}
public void setSql(String sql) {
this.sql = sql;
}
public void setUsername(String username) {
this.username = username;
}
-
截图
1赞 · 1采集