- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
下面是我编写的用于从数据库中检索值的代码(我添加了整个代码以便您更容易理解我在这里要说的内容):
package ipscheme;
import java.sql.*;
public class AddRecords {
Connection con = new DBConnection().getConnection();
ResultSet resultSet = null;
public String [] populateSelect() throws SQLException {
Statement statement = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
resultSet = statement.executeQuery("SELECT * FROM ipsections");
resultSet.last();
int size = resultSet.getRow();
resultSet.beforeFirst();
String [] sectionName = new String[size];
int j = 0;
while (resultSet.next()){
sectionName[j] = resultSet.getString("section_name");
j = j + 1;
}
resultSet.close();
statement.close();
con.close();
return sectionName;
}
}
下面是我用来将值从数据库填充到选择框的 JSP 代码。
<select name="sltSection">
<%
AddRecords added = new AddRecords();
String sectionNm [] = added.populateSelect();
for(int i=0; i<sectionNm.length; i++){ %>
<option>
<% out.print(sectionNm[i]); %>
</option>
<% } %>
</select>
以上代码运行良好,没有任何编译错误。如您所见,我在我的 .jsp 页面中使用了 Java 代码来完成任务,这是错误的做法。
我需要根据 MVC 实现这段代码,因此我应该使用 JSTL 标签将代码实现为 .jsp?如果是这样我该怎么做?我如何从类 AddRecords
实例化对象并调用它的方法?有人可以帮帮我吗。提前致谢!
最佳答案
由于看起来您是 Java Web 编程的新手,您可以使用 JSP( View )、Servlet( Controller )和实体、DAO 和服务层(模型)来实现完整的 MVC 场景。这就是你所拥有的:
型号:
DBConnection
作为数据库访问类(数据访问层)AddRecords
作为您的 DAO 类(数据访问层)没有类作为服务类(业务逻辑层)。对于此示例,让我们为此创建一个 RecordService
类:
public class RecordService {
public RecordService() {
}
//since it has no real business logic, it will serve as facade
public String[] getRecords() {
AddRecords addRecords = new AddRecords();
return addRecords.populateSelect();
}
}
Controller :
Controller 还没有类。由于我假设您使用的是纯 Java EE,因此您将使用 Servlet(基于 Servlets StackOverflow wiki 的实现):
@WebServlet("/RecordServlet")
public class RecordsServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//it will fire on a GET request (like accessing directly to the URL
//from the browser)
//here you should load the data for the View (JSP)
loadData(request);
//forward to show the view
request.getRequestDispatcher("hello.jsp").forward(request, response);
}
@Override
protected void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//it will fire on a POST request (like submitting the form using POST method)
String selectedRecord = request.getParameter("selectedRecord");
System.out.println(selectedRecord);
request.setAttribute("selectedRecord", selectedRecord);
loadData(request);
//forward to show the view
request.getRequestDispatcher("hello.jsp").forward(request, response);
}
//method to load the data available to select
private void loadData(HttpServletRequest request) {
RecordService recordService = new RecordService();
String[] records = recordService.getRecords();
//set the data as attribute on the request to be available on the View
request.setAttribute("records", records);
}
}
查看:
您已经有一个 JSP 文件。由于您尚未发布名称,我们将其命名为 hello.jsp
。我将使用 JSTL 调整您的实际 JSP 代码:
<!-- at the beginning of the JSP, call the JSTL library -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<form action="RecordServlet" method="POST">
Please select an element:
<select id="selectedRecord" name="selectedRecord">
<c:forEach items="${records}" var="record">
<option value="${record}">${record}</option>
</c:forEach>
</select>
<br />
<input type="submit" value="Show selected record" />
<c:if test="${not empty selectedRecord}">
<br />
You've selected ${selectedRecord}!
</c:if>
</form>
现在,要运行示例,请构建项目并使用 http://localhost:8080/YourWebProjectName/RecordServlet
访问它。另外,你可以在web.xml
文件中设置:
<welcome-file-list>
<welcome-file>RecordServlet</welcome-file>
</welcome-file-list>
然后只运行 web 项目。
一些注意事项:
RecordXXX
因为你有这个 AddRecord
类(它应该是 RecordDAO
或更多对像 UserDAO
或 YourEntityDAO
这样的代码阅读器很有用。edu.home.dao
用于 DAO 类,edu.home.service
用于服务/业务逻辑类,等等。 .关于java - 从 JDBC 检索值并使用 JSTL 标记调用方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15149497/
我想要一个“常量”的 JSTL 文件并在其他文件中引用它们。 例如 常量.jsp: Audi 其他文件: I drive an ${car} which is ${colour} 上面的代码(
你能帮我把这个 JSTL 标签转换成 JSTL 三元吗 class="author" class="${page.class}" > 最佳答案 非常简单: 关于jSTL -
我需要根据请求中存在的值将单选按钮设置为选中状态。下面是我在 JSP 中使用的代码 checked"> Active checked">
我有这个,它正在工作: Hello, world! 我想把它改成这样:
这个问题已经有答案了: Evaluate empty or null JSTL c tags (8 个回答) 已关闭 6 年前。 例如 ${post.title} 最佳答案 使用空关键字
我是 Java EE 技术的初学者。我想知道 jSTL-api jar 和 jSTL-impl jar 之间有什么区别。 为什么API和实现是分开的?这是否意味着还有其他可用的实现? 最佳答案 API
我正在尝试在 jetty 中运行一个在 Tomcat 5.5 中运行良好的应用程序。该应用程序使用 servlet 2.4 和 JSP 2.0。 Jetty/Jasper 抛出这个异常: org.ap
所以这是我用来发送包含值 ${masession.idemp} 的参数“idemp”的代码 "> " alt="consulter tickets
这个问题在这里已经有了答案: How to install JSTL? The absolute uri: http://java.sun.com/jstl/core cannot be resol
我正在学习 Spring-MVC 教程,目前我在 part 2 上.本教程要求我下载 jSTL.jar 和 standard.jar,它们曾经是 Jakarta Taglibs 项目的一部分。该项目已
我正在尝试以这种特定格式格式化数字: “1 234.56” 所以,两个小数,用点分隔。并使用空格字符(可选单引号)将数千个分组。输入值永远不会大于 9999.99。 我尝试为此使用模式,甚至尝试使用语
我正在使用 fmt:formatNumber 在 JSTL 中格式化货币,它会以 ($100) 格式显示负货币,如何让它以负数格式显示负货币而不是 ($100)? 非常感谢, 起诉 最佳答案 如果您使
我不知道我做错了什么,但我不能包括 JSTL。我有 jSTL-1.2.jar,但不幸的是我得到了异常: org.apache.jasper.JasperException: The absolute
我只需要这样的东西: ..... function myFunc(param) { if(param == true) { return "aaa"
当我使用 JSTL c:forEach 标签时,我的项目出现以下错误。我正在使用 apache Tomcat v7.0。 我在 WEB-INF\lib 文件夹中添加了以下 jar。 taglibs-s
以下代码导致错误: 错误提示 "error a line 4: unknown symbol 'test'". 如何将 test 从 JSTL 代码传递到 JSP scriptlet? 最
我正在使用 JSF 2.0 (mojarra) + primefaces 开发 Web 应用程序。过去我成功地使用了jSTL库的[c:set]标签来存储一些临时数据或从其他标签中输出。 在我目前的情况
我的实际目标是得到 工作。我目前正在使用 jetty-runner 7.4.2 运行我的 Web 应用程序。作为一个随机的尝试,我下载了一个更新的版本。这样,当我尝试启动我的 Web 应用程序时,我
为了尝试使用 jSTL,我用 maven 安装了 jSTL 1.2 库。但是,当我通过此消息运行 jsp 页面时,“绝对 uri: [ http://java.sun.com/jsp/jstl/cor
当我混合 JSTL 1.0 和 JSTL 1.1 taglib 声明时,它会在我的一些服务器上导致 ParseException,但不是全部。 这是给我带来麻烦的代码块: |STRINGOFTEX
我是一名优秀的程序员,十分优秀!