自定义tag

本文介绍如何使用JSP自定义标签进行数据库操作及字符串转换。包括读取、插入、删除数据库记录,并实现了字符串大小写的转换。
范例一:使用自定义Tag去读数据库中的信息 TagDB.java代码如下 package tag.test; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.io.*; import java.sql.*; public class TagDB extends TagSupport { Connection connection=null; Statement statement=null; ResultSet rset=null; public TagDB() { try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); } catch(ClassNotFoundException e) { e.printStackTrace(); } } public int doStartTag()throws JspTagException { return EVAL_BODY_INCLUDE; } public int doEndTag()throws JspTagException { try { JspWriter out=pageContext.getOut(); connection=DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=pubs;user=sa;password=1234"); statement=connection.createStatement(); rset=statement.executeQuery("select * from authors"); out.print("以下使用Tag输出作者的基本信息"); out.print("
"); out.print("
au_idau_lnameau_fnamephoneaddresscity
"+rset.getString(1)+""+rset.getString(2)+""+rset.getString(3)+""+rset.getString(4)+""+rset.getString(5)+""+rset.getString(6)+"
"); } catch(Exception e) { e.printStackTrace(); } return EVAL_PAGE; } } author.tld描述文件如下 <?xml version="1.0" encoding="ISO-8859-1"?><taglib><tlib-version>1.2</tlib-version><jsp-version>1.2</jsp-version><short-name>DB</short-name><description> this taglib provides tag to show date </description><tag><name>DBShow</name><tag-class>tag.test.TagDB</tag-class><body-content>empty</body-content></tag></taglib> web.xml文件内容如下 <?xml version="1.0" encoding="ISO-8859-1"?><web-app><display-name>welcome to Tomcat</display-name><description> Welcome to Tomcat </description><taglib><taglib-uri>DB</taglib-uri><taglib-location>/WEB-INF/author.tld</taglib-location></taglib></web-app> tagTest.jsp文件如下 <dbshow></dbshow> 范例二:使用Tag标签向数据库中查入数据,插入成功后将所有记录显示出来. InfoTagDB.java 代码如下 package tag.test; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; import java.sql.*; public class InfoTagDB extends TagSupport { String strNumber; String strName; int strNum; Connection connection=null; Statement statement=null; public InfoTagDB() { try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); } catch(ClassNotFoundException e) { e.printStackTrace(); } } public void setStrNumber(String strNumber) { this.strNumber=strNumber; } public void setStrName(String strName) { this.strName=strName; } public void setStrNum(int strNum) { this.strNum=strNum; } public int doStartTag()throws JspTagException { JspWriter out=pageContext.getOut(); try { connection=DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=pubs;user=sa;password=1234"); statement=connection.createStatement(); String sql="insert into authors(au_id,au_lname,au_fname,phone,address,city) values('"+au_id+"','"+au_lname+"','"+au_fname+"','"+phone+"','"+address+"','"+city + "')"; int i=statement.executeUpdate(sql); if(i>0) { out.print("插入成功"); } else { out.print("插入失败"); } statement.close(); connection.close(); } catch(Exception e) { e.printStackTrace(); } return SKIP_BODY; } } insert.tld标签描述文件如下 <?xml version="1.0" encoding="ISO-8859-1"?><taglib><tlib-version>1.2</tlib-version><jsp-version>1.2</jsp-version><shor-name>mytag</shor-name><description>the info test example</description><tag><name>insert</name><tag-class>tag.test.InfoTagDB</tag-class><body-content>empty</body-content><attribute><name>au_id</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>au_lname</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>au_fname</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>phone</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>address</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute><attribute><name>city</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib> web.xml配置文件如下 <?xml version="1.0" encoding="ISO-8859-1"?><web-app><display-name>welcome to Tomcat</display-name><description> Welcome to Tomcat </description><taglib><taglib-uri>DBInsert</taglib-uri><taglib-location>/WEB-INF/insert.tld</taglib-location></taglib><taglib><taglib-uri>DB</taglib-uri><taglib-location>/WEB-INF/author.tld</taglib-location></taglib></web-app> tagTest.jsp文件如下 <insert au_id="888_666" au_lname="jane" au_fname="peng" phone="15853208264" address="中国海洋大学" city="青岛"></insert><dbshow></dbshow> 对于tagTest.jsp文件中的第二个标签是范例一TagDB.java中的代码,大家可以参考。 范例三:使用Tag删除数据库中的记录,删除后将所有数据库中的内容显示出来 TagDelete.java代码如下 package tag.test; import java.sql.*; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class TagDelete extends TagSupport { String au_id; Connection connection=null; Statement statement=null; public TagDelete() { try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver"); } catch(ClassNotFoundException e) { e.printStackTrace(); } } public void setAu_id(String s) { this.au_id=s; } public int doStartTag()throws JspTagException { try { JspWriter out=pageContext.getOut(); connection=DriverManager.getConnection("jdbc:sqlserver://localhost;databaseName=pubs;user=sa;password=1234"); statement=connection.createStatement(); String sql="delete * from authors where au_id='"+au_id+"'"; int i=statement.executeUpdate(sql); if(i>0) { out.print("删除成功
"); } else { out.print("删除失败
"); } statement.close(); connection.close(); } catch(Exception e) { e.printStackTrace(); } return SKIP_BODY; } public int doEndTag()throws JspException { return EVAL_PAGE; } } delete.tld标签描述文件如下 <?xml version="1.0" encoding="ISO-8859-1"?><taglib><tlib-version>1.2</tlib-version><jsp-version>1.2</jsp-version><shor-name>Deltag</shor-name><description>the info test example</description><tag><name>delete</name><tag-class>tag.test.TagDelete</tag-class><body-content>empty</body-content><attribute><name>au_id</name><required>true</required><rtexprvalue>true</rtexprvalue></attribute></tag></taglib> web.xml配置文件如下 <?xml version="1.0" encoding="ISO-8859-1"?><web-app><display-name>welcome to Tomcat</display-name><description> Welcome to Tomcat </description><taglib><taglib-uri>DBInsert</taglib-uri><taglib-location>/WEB-INF/insert.tld</taglib-location></taglib><taglib><taglib-uri>DB</taglib-uri><taglib-location>/WEB-INF/author.tld</taglib-location></taglib><taglib><taglib-uri>Deltag</taglib-uri><taglib-location>/WEB-INF/delete.tld</taglib-location></taglib></web-app> tagTest.jsp测试代码如下 <delete au_id="172-32-8886"></delete><dbshow></dbshow> 对于tagTest.jsp文件中的第二个标签是范例一TagDB.java中的代码,大家可以参考 范例五:使用自定义标签实现字符串的大小写转化。 ConvertTest.java代码如下 package tag.test; import java.io.*; import javax.servlet.jsp.*; import javax.servlet.jsp.tagext.*; public class ConvertTest extends BodyTagSupport { public int doAfterBody()throws JspException { try { BodyContent body=getBodyContent(); JspWriter out=body.getEnclosingWriter(); String text=body.getString();//获取标签中的内容 if(text!=null) { out.print(text.toLowerCase()); } } catch(Exception e) { e.printStackTrace(); } return SKIP_BODY; } } convert.tld标签描述文件如下 <?xml version="1.0" encoding="ISO-8859-1"?><taglib><tlib-version>1.2</tlib-version><jsp-version>1.2</jsp-version><shor-name>mytag</shor-name><description>the info test example</description><tag><name>Convert</name><tag-class>tag.test.ConvertTest</tag-class><body-content>jsp</body-content></tag></taglib> web.xml配置文件如下 <?xml version="1.0" encoding="ISO-8859-1"?><web-app><display-name>welcome to Tomcat</display-name><description> Welcome to Tomcat </description><taglib><taglib-uri>mytag</taglib-uri><taglib-location>/WEB-INF/convert.tld</taglib-location></taglib></web-app> testTag.jsp测试文件如下 <convert> Hello FRIEND! THIS A PROGRAMM TO CONVERT BIG CHAR TO SMALL CHAR; </convert>
【无人机】基于改进粒子群算法的无人机路径规划研究[和遗传算法、粒子群算法进行比较](Matlab代码实现)内容概要:本文围绕基于改进粒子群算法的无人机路径规划展开研究,重点探讨了在复杂环境中利用改进粒子群算法(PSO)实现无人机三维路径规划的方法,并将其与遗传算法(GA)、标准粒子群算法等传统优化算法进行对比分析。研究内容涵盖路径规划的多目标优化、避障策略、航路点约束以及算法收敛性和寻优能力的评估,所有实验均通过Matlab代码实现,提供了完整的仿真验证流程。文章还提到了多种智能优化算法在无人机路径规划中的应用比较,突出了改进PSO在收敛速度和全局寻优方面的优势。; 适合人群:具备一定Matlab编程基础和优化算法知识的研究生、科研人员及从事无人机路径规划、智能优化算法研究的相关技术人员。; 使用场景及目标:①用于无人机在复杂地形或动态环境下的三维路径规划仿真研究;②比较不同智能优化算法(如PSO、GA、蚁群算法、RRT等)在路径规划中的性能差异;③为多目标优化问题提供算法选型和改进思路。; 阅读建议:建议读者结合文中提供的Matlab代码进行实践操作,重点关注算法的参数设置、适应度函数设计及路径约束处理方式,同时可参考文中提到的多种算法对比思路,拓展到其他智能优化算法的研究与改进中。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值