zoukankan      html  css  js  c++  java
  • JavaWeb阶段性整理

    一 MVC项目结构图

                          MVC三层结构执行流程

    二JSP ---》servlet发起请求的两种方式

    方式一:<form action="">

             

    form表单提交的两种方式   get  显示地址栏和参数 不安全

                  post  不显示                 安全    

     form表单的向servlet传递参数时,(请参考下图)如果以第一行的形式传递参数 action ='/LoginServlet?opr=login" 提交方式为post的话,我们在地址栏中就可以看的 name 和value的值。

    所以可以去掉 参数(鼠标选中的部分) 添加<input type="hidden" name="opr" value="login">

    地址栏对应的参数就是 opr=login

    在servlet中获取参数  request.getParameter("")

     

                              form表单的向servlet传递参数时以 <input type="hidden" name="opr" value="selectById">的标签形式隐藏传递

    方式二:      <a href="">)标签

    <a href="/NewsServlet?id=${news.id}&opr=selectById">  

    三 servlet-----》jsp 获取前台传递的参数

     1 package com.bdqn.servlet;
     2 
     3 import com.bdqn.entity.News;
     4 import com.bdqn.entity.News_detail;
     5 import com.bdqn.service.NewsService;
     6 import com.bdqn.service.serviceImpl.NewsServiceImpl;
     7 
     8 import javax.servlet.annotation.WebServlet;
     9 import java.util.List;
    10 import java.util.Objects;
    11 
    1
    19 @WebServlet(name = "NewsServlet", urlPatterns = "/NewsServlet")
    20 public class NewsServlet extends javax.servlet.http.HttpServlet {
    21     protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {
    22         request.setCharacterEncoding("UTF-8");  // 处理post请求乱码问题
    23         doGet(request, response);
    24     }
    25 
    26     protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throws javax.servlet.ServletException, java.io.IOException {
    27         response.setContentType("text/html;charset=UTF-8"); // 处理响应乱码问题:字节流需getBytes("UTF-8")
    28         // str = new String(str.getBytes("ISO-8859-1"), "UTF-8");   // 处理get请求乱码问题
    29 
    30         // response.getWriter().write("你好 servlet!");
    31         
    32         //获取前台的传递参数
    33         String  opr = request.getParameter("opr");
    34         if(opr == null){
    35             opr = "selectAll";
    36         }
    37         if(Objects.equals(opr,"selectAll")){
    38             //2.实例化Service接口 并调用相关方法进行业务处理
    39             NewsService newsService = new NewsServiceImpl();
    40             List<News> newsList = newsService.query();
    41             
    42             //3.传递数据
    43             request.setAttribute("newsList",newsList);
    44             //4.转发
    45             request.getRequestDispatcher("/index.jsp").forward(request,response);
    46         }else if(Objects.equals(opr,"selectById")){
    47             Integer id =Integer.parseInt(request.getParameter("id")) ;
    48             News_detail news_detail = new News_detail();
    49             NewsService newsService = new NewsServiceImpl();
    50 
    51             news_detail =newsService.selectById(id);
    52             request.setAttribute("news_detail",news_detail);
    53             request.getRequestDispatcher("/newsDetail.jsp").forward(request,response);
    54         }
    55     }
    56 }

    四 model模型层(dao层和service层)

     1 package com.bdqn.dao.until;
     2 
     3 import java.sql.*;
     4 
     5 //操作数据库基础类
     6 public class BaseDao {
     7     //数据库URL
     8     public static final String URL = "jdbc:mysql://localhost:3306/kgcnews";
     9     //数据库用户名
    10     public static final String USER = "root";
    11     //数据库密码
    12     public static final String PASSWORD = "123456";
    13     //数据库连接对象
    14     Connection conn =null;
    15     //SQL执行对象
    16     Statement stament = null;
    17     //结果集对象
    18     ResultSet rs = null;
    19 
    20     //连接数据库方法
    21     public Connection connection(){
    22         try {
    23             //1.加载驱动程序
    24             Class.forName("com.mysql.jdbc.Driver");
    25             //2. 获得数据库连接
    26             conn = DriverManager.getConnection(URL, USER, PASSWORD);
    27             System.out.println("成功连接数据库");
    28         } catch (ClassNotFoundException e) {
    29             System.out.println("数据库异常");
    30             e.printStackTrace();
    31         } catch (SQLException e) {
    32             System.out.println("数据库异常");
    33             e.printStackTrace();
    34         }
    35         return conn;
    36     }
    37     //查询方法
    38     public ResultSet query(String sql)  {
    39         //获取数据库连接线程
    40         connection();
    41         // 3.通过connection 获取一个sql语句操作对象statemen
    42         try {
    43             stament = conn.createStatement();
    44             // 4.执行sql获得结果
    45             rs = stament.executeQuery(sql);
    46 
    47         } catch (SQLException e) {
    48             e.printStackTrace();
    49         }
    50         return rs;
    51     }
    52 
    53     //关闭资源
    54     public boolean destory() throws SQLException {
    55         if(rs!=null){
    56             try {
    57                 rs.close();
    58             } catch (SQLException e) {
    59                 e.printStackTrace();
    60                 return false;
    61             }
    62         }
    63         if(stament!=null){
    64             try {
    65                 stament.close();
    66             } catch (SQLException e) {
    67                 e.printStackTrace();
    68                 return false;
    69             }
    70         }
    71         if(conn!=null){
    72             try {
    73                 conn.close();
    74             } catch (SQLException e) {
    75                 e.printStackTrace();
    76                 return false;
    77             }
    78         }
    79         return true;
    80 
    81     }
    82 
    83 }

        

    1 package com.bdqn.dao;
    2 
    3 import java.sql.ResultSet;
    4 
    5 public interface NewsDao {
    6 // 示例  public 返回值类型(int、Boolean,String)方法名(userLogin)( 括号里写 参数类型 和 参数名 示例 String name);
    7     public ResultSet query();
    8     public ResultSet selectById(Integer id);
    9 }
     1 package com.bdqn.dao.daoImpl;
     2 
     3 import com.bdqn.dao.NewsDao;
     4 import com.bdqn.dao.until.BaseDao;
     5 
     6 
     7 import java.sql.ResultSet;
     8 
     9 public class NewsDaoImpl extends BaseDao implements NewsDao{
    10     @Override
    11     public ResultSet query() {
    12         String sql = "SELECT  `id`,`title`,`createDate`  FROM `news_detail`";
    13         ResultSet rs =this.query(sql);
    14         return rs;
    15     }
    16 
    17     @Override
    18     public ResultSet selectById(Integer id) {
    19         String sql = "SELECT  `id`,`categoryId`,`title`,`summary`,`content`,`picPath`,`author`,`createDate`,`modifyDate`  FROM  `news_detail` WHERE id ="+id;
    20         ResultSet rs = this.query(sql);
    21         return rs;
    22     }
    23 
    24     public ResultSet selectByNameAndPwd(String name,String pwd) {
    25         String sql = null;
    26         sql = "SELECT * FROM  `news_detail` where 1=1 ";
    27 
    28         if (name!=null){
    29             sql += "and  name ="+name;
    30         }
    31         if (pwd!=null){
    32             sql += "adn  pwd ="+pwd;
    33         }
    34 
    35 
    36         ResultSet rs = this.query(sql);
    37         return rs;
    38     }
    39 
    40 //
    41 }
     1 package com.bdqn.service;
     2 
     3 import com.bdqn.entity.News;
     4 import com.bdqn.entity.News_detail;
     5 
     6 import java.sql.ResultSet;
     7 import java.util.List;
     8 
     9 public interface NewsService {
    10 // 示例  public 返回值类型(int、Boolean,String)方法名(userLogin)( 括号里写 参数类型 和 参数名 示例 String name);
    11     public List<News> query();
    12     public News_detail selectById(Integer id);
    13 
    14 }
     1 package com.bdqn.service.serviceImpl;
     2 
     3 import com.bdqn.dao.NewsDao;
     4 import com.bdqn.dao.daoImpl.NewsDaoImpl;
     5 import com.bdqn.dao.until.BaseDao;
     6 import com.bdqn.entity.News;
     7 import com.bdqn.entity.News_detail;
     8 import com.bdqn.service.NewsService;
     9 
    10 import java.sql.ResultSet;
    11 import java.sql.SQLException;
    12 import java.sql.Timestamp;
    13 import java.util.ArrayList;
    14 import java.util.Date;
    15 import java.util.List;
    16 
    17 public class NewsServiceImpl extends BaseDao implements NewsService {
    18     @Override
    19     public List<News> query() {
    20         NewsDao newsDao = new NewsDaoImpl();
    21         ResultSet rs = newsDao.query();
    22         List<News> newsList = new ArrayList<>();
    23 
    24         try {
    25             //循环输出结果集内容放入news对象,添加到newsList集合
    26             while (rs.next()){
    27                 News news = new News();
    28                 String title = rs.getString("title");
    29                 Date createDate =
    30                         rs.getTimestamp("createDate");
    31                 Integer id = rs.getInt("id");
    32                 news.setTitle(title);
    33                 news.setCreatedate(createDate);
    34                 news.setId(id);
    35                 newsList.add(news);
    36 
    37                 System.out.println(111);
    38             }
    39 
    40         } catch (SQLException e) {
    41             e.printStackTrace();
    42         }
    43         BaseDao baseDao = new BaseDao();
    44         try {
    45             baseDao.destory();
    46         } catch (SQLException e) {
    47             e.printStackTrace();
    48         }
    49         return newsList;
    50     }
    51 
    52     @Override
    53     public News_detail selectById(Integer id) {
    54         NewsDao newsDao = new NewsDaoImpl();
    55         ResultSet rs = newsDao.selectById(id);
    56         News_detail news_detail = new News_detail();
    57 
    58         try {
    59             while (rs.next()){
    60                 int id1 = rs.getInt("id");
    61                 int categoryId = rs.getInt("categoryId");
    62                 String title = rs.getString("title");
    63                 String summary = rs.getString("summary");
    64                 String content = rs.getString("content");
    65                 String picPath = rs.getString("picPath");
    66                 String author = rs.getString("author");
    67                 Date createDate = rs.getTimestamp("createDate");
    68                 Date modifyDate = rs.getTimestamp("modifyDate");
    69 
    70                 news_detail.setId(id1);
    71                 news_detail.setCategoryid(categoryId);
    72                 news_detail.setTitle(title);
    73                 news_detail.setSummary(summary);
    74                 news_detail.setContent(content);
    75                 news_detail.setPicpath(picPath);
    76                 news_detail.setAuthor(author);
    77                 news_detail.setCreatedate(createDate);
    78                 news_detail.setModifydate(modifyDate);
    79             }
    80 
    81         } catch (SQLException e) {
    82             System.out.println("数据处理异常!");
    83             e.printStackTrace();
    84         }
    85         return news_detail;
    86     }
    87 //
    88 }

        

    五 view层 jsp页面

    EL和JSTL显示Servlet传过来的数据

    第一步:配置环境 

        在lib中添加jstl.jra 和 standard.jar包 或者在pom.xml添加两个包的依赖。

    第二步:在页面中引用JSTL的库 core核心库和fmt格式化的库

    第三步:用EL和JSTL显示数据

         

                    

  • 相关阅读:
    CF1174D Ehab and the Expected XOR Problem
    CF1083B The Fair Nut and Strings
    CF1088D Ehab and another another xor problem
    CF1168A Increasing by Modulo
    CF1166C A Tale of Two Lands
    CF1142A The Beatles
    CF1105D Kilani and the Game
    【uva11248】网络扩容
    【sam复习】用sam实现后缀排序
    【Educational Codeforces Round 19】
  • 原文地址:https://www.cnblogs.com/jiayiblog/p/11008025.html
Copyright © 2011-2022 走看看