JSP前后台數據交互


1.一般方法:在頁面加載時載入數據

  • 首先,新建一個包,在包內創建一個類,類實現接口Servlet-javax.servlet

  • 然后,在web.xml文件里配置如下

      <?xml version="1.0" encoding="UTF-8"?>
      <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
        <display-name>adminsystem1</display-name>
        <welcome-file-list>
          <welcome-file>index.html</welcome-file>
          <welcome-file>index.htm</welcome-file>
          <welcome-file>index.jsp</welcome-file>
          <welcome-file>default.html</welcome-file>
          <welcome-file>default.htm</welcome-file>
          <welcome-file>default.jsp</welcome-file>
        </welcome-file-list>
      <servlet>
      //定義一個名稱
      <servlet-name>servlet-router</servlet-name>
      //第一步的類
      <servlet-class>com.csit.adminsystem1.controllers.RouterController</servlet-class>
      </servlet>
      //輸入后綴為.html則都要調用servlet-router,即調用RouterController類
      <servlet-mapping>
      <servlet-name>servlet-router</servlet-name>
      <url-pattern>*.html</url-pattern>
      </servlet-mapping>
      </web-app>
    

如果不存在web.xml文件,則右鍵項目名稱—>Java EE Tools—>Generate Deployment descriptor stub

  • 新建兩個類,比如分別為ProductDao和ProductService,在ProductDao里提供信息處理的數據操作,
    在ProductService里提供信息處理服務,下面給出樣例代碼:

ProuductDao.java

	package com.csit.adminsystem1.daos;
	
	import java.sql.Connection;
	import java.sql.PreparedStatement;
	import java.sql.ResultSet;
	import java.sql.SQLException;
	import java.util.ArrayList;
	import java.util.List;
	
	import com.csit.adminsystem1.domains.TProduct;
	import com.csit.adminsystem1.utils.JdbcUtil;
	
	/**
	 * 提供商品信息處理的數據操作(dao)
	 *
	 * @author Administrator
	 * 
	 */
	public class ProductDao {
		//JdbcUtil是自己定義的一個類,里面定義了靜態的conn用於連接數據庫
		Connection conn = JdbcUtil.conn;
		public List<TProduct> findAll() throws SQLException{
			String sql = "select * from t_product";
			PreparedStatement ps = conn.prepareStatement(sql);
			//將執行SQL語句后結果存於rs里
			ResultSet rs = ps.executeQuery();
			List<TProduct> products = new ArrayList<TProduct>();
			while(rs.next()) {
				TProduct product = new TProduct();
				product.setProductName(rs.getString("product_name"));
				product.setProductId(rs.getInt("product_id"));
				product.setProductPrice(rs.getDouble("product_price"));
				products.add(product);
			}
			return products;
		}
	}

ProductService.java

	package com.csit.adminsystem1.services;
	
	import java.sql.SQLException;
	import java.util.List;
	
	import com.csit.adminsystem1.daos.ProductDao;
	import com.csit.adminsystem1.domains.TProduct;
	
	/**
	 * 提供商品信息處理服務(service)
	 *
	 * @author Administrator
	 * 
	 */
	public class ProductService {	
		ProductDao po = new ProductDao();
		//這里只是執行findAll方法,有涉及到信息處理的可以自行添加對應的處理方法
	    public List<TProduct> findAll() throws SQLException{
			return po.findAll();
		}
	}
  • 下面實現RouterController的service方法

      ProductService ps =new ProductService();
      String content="";
      public void service(ServletRequest req, ServletResponse res) throws ServletException, IOException {
      	// TODO Auto-generated method stub
      	//將返回的數據存在products里
      	try {
      		req.setAttribute("products", ps.findAll());
      	} catch (SQLException e) {
      		e.printStackTrace();
      	}
      	//index.jsp為數據要顯示的頁面
      	req.getRequestDispatcher("index.jsp").forward(req, res);
      
      	}
    
  • 在index.jsp中編寫如下代碼

      <%
      	//將products里的數據強制轉換為List<TProduct>類型,TProduct是自己定義的一個類,用於存放從數據庫中查詢的數據
      	List<TProduct> products = (List<TProduct>)(request.getAttribute("products"));
      	for(TProduct product:products){
      		out.println("<li><input type='checkbox' />" + "<p>"+product.getProductName()+" "+product.getProductPrice()+"</p>" + "</li>");   
      	}					
      %>
    

注意在開頭添加引用路徑,根據自己的路徑來配置

<%@page import="com.csit.adminsystem1.domains.*,java.util.*"%>

運行結果如下圖


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM