• 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.*"%>
    

    运行结果如下图

  • 相关阅读:
    ch_6802 車的放置
    ch_POJ2182 Lost Cows
    ch_4201 楼兰图腾
    luogu_P3368【模板】树状数组 2
    门面
    建造者
    模板方法
    状态
    抽象工厂
    工厂方法
  • 原文地址:https://www.cnblogs.com/FZfangzheng/p/7708601.html
Copyright © 2020-2023  润新知