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显示数据

     

                

原文地址:https://www.cnblogs.com/jiayiblog/p/11008025.html