搜尋
首頁Javajava教程在jsp提交表單的參數封裝到一個方法裡

在jsp提交表單的參數封裝到一個方法裡

Jun 23, 2017 pm 03:54 PM
javascript參數提交表單

建議去看孤傲蒼狼寫的Servlet+JSP+JavaBean開發模式(),

最好把他JavaWeb學習總結全部看完會有很大的收穫哦! 而把jsp專遞的參數封裝到一個方法裡面也是從他那裡學到的.

我覺得特別有用,尤其是在做專案的時候能省很多的程式碼

  一: 需要的套件

根據上一篇JDBC+Servlet+jsp()的內容為基礎,增加新功能代碼.

如下所示: 

一:程式碼的寫 

 1. zhu.jdbc.unit 

 在zhu.jdbc.unit套件下建立一個WebUtils.java的類別(用來存放參數定義的類別) 

#  

WebUtils程式碼如下:

#
 1 package zhu.jdbc.unit; 2  3 import java.util.Enumeration; 4 import java.util.UUID; 5  6 import javax.servlet.http.HttpServletRequest; 7  8 import org.apache.commons.beanutils.BeanUtils; 9 10 /**11  * 把request对象中的请求参数封装到bean中12  * 
13  * @author Xiao_Zhu14  * 
15  */16 public class WebUtils {17 18     /**19      * 将request对象转换成T对象20      * 
21      * @param request22      * @param clazz23      * @return24      */25     public static <t> T request2Bean(HttpServletRequest request, Class<t> clazz) {26         /*27          * JDK中,普通的Class.newInstance()方法的定义返回Object,要将该返回类型强制转换为另一种类型;28          * 但是使用泛型的Class<t>,Class.newInstance()方法具有一个特定的返回类型;29          * java反射就是从Class<t>类开始的,Class<t>是没有公共的构造方法,虽然没有构造方法,但是有相应的方法可以获取类的变量和类型30          * “?”是一个匹配字符,匹配任意类型;“T”匹配的是某一具体的类型,如String。如果知道Class的具体类型,可以直接使用Class<t>,32          * 如Class<string>33          */34         try {// 创建对象(这里的是创建Tb_User的对象)35             T bean = clazz.newInstance();36             // 使用枚举获取 参数-->key-value 键值对37             Enumeration<string> e = request.getParameterNames();38             while (e.hasMoreElements()) {39                 String key = (String) e.nextElement();40                 String value = request.getParameter(key);41                 BeanUtils.setProperty(bean, key, value);42             }43             return bean;44         } catch (Exception e) {45             throw new RuntimeException(e);46         }47     }48 49     /**50      * 生成UUID51      * 
52      * @return53      */54     public static String makeId() {55         return UUID.randomUUID().toString();56     }57 }</string></string></t></t></t></t></t></t>

 為了更明了點,我再建一個servlet和jsp

 2. zhu.jdbc.servlet 

# 在zhu.jdbc.servlet包下創建一個Servlet_TbUser2.java的類別(用來存放參數定義的類別) 

  

 主要的差異是: 在沒有呼叫WebUtils類別的方法request2Bean時,專遞參數是這樣的

呼叫了之後是這樣的:

 

Servlet_TbUser2程式碼如下:

 

 1 package zhu.jdbc.servlet; 2  3 import java.io.IOException; 4 import java.sql.Date; 5 import java.text.ParseException; 6 import java.text.SimpleDateFormat; 7 import java.util.List; 8  9 import javax.servlet.ServletException;10 import javax.servlet.http.HttpServlet;11 import javax.servlet.http.HttpServletRequest;12 import javax.servlet.http.HttpServletResponse;13 14  15 16 import zhu.jdbc.domain.Tb_User;17 import zhu.jdbc.service.ITb_UserService;18 import zhu.jdbc.service.imp.ITb_UserServiceImpI;19 import zhu.jdbc.unit.WebUtils;20 21 public class Servlet_TbUser2 extends HttpServlet {22     /**23      * 
24      */25     private static final long serialVersionUID = 1L;26     ITb_UserService myITb_UserService = new ITb_UserServiceImpI();27 28     @Override29     protected void doGet(HttpServletRequest req, HttpServletResponse resp)30             throws ServletException, IOException {31         doPost(req, resp);32     }33 34     @Override35     protected void doPost(HttpServletRequest request,36             HttpServletResponse response) throws ServletException, IOException {37         request.setCharacterEncoding("UTF-8");// 解决乱码38         String type = request.getParameter("who");39         // 新增40         if ("Insert".equals(type)) {41             Insert(request, response);42         }43         //查询所有数据44         else if("queryAll".equals(type)){45             queryAll(request, response);46         } 
47     }48 49     // 新增50     public void Insert(HttpServletRequest request, HttpServletResponse response)51             throws ServletException, IOException {52         /*注册字符串到日期的转换器 
53          * ConvertUtils.register(new DateLocaleConverter(), java.util.Date.class); 
54          * */ 55                 //将jsp页面专递参数封装到 domain层的 Tb_User对象中56                  Tb_User tb_User=WebUtils.request2Bean(request, Tb_User.class); 
57                  System.out.println(tb_User.getName()); 
58                 // 把获取到的这些值放到user里59                 Tb_User user = new Tb_User();60                 try {61                     // 下面两句是把 string 转换为 sql类型的 时间格式62                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");63                     String time=sdf.format(tb_User.getBirthday());64                      user.setBirthday(new Date(sdf.parse(time).getTime()));65                     user.setEmail(tb_User.getEmail());66                     user.setName(tb_User.getName());67                     user.setPassword(tb_User.getPassword()); 
68                     user.setSex(tb_User.isSex());69                     // 最后调用服务来添加70                     String message = null;71                     if (myITb_UserService.insertData(user) == true) {72                         queryAll(request, response);73                     } else {74                         message = "新增失败!!!";75                         request.setAttribute("msg", message);76                         request.getRequestDispatcher("/index.jsp").forward(request,    response);77                     }78                 } catch (Exception e1) {79                     e1.printStackTrace();80                 }81     }82      //查询所有的数据83      public void queryAll(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{84              List<tb_user> lis=myITb_UserService.queryAllData(); 
85              request.setAttribute("list", lis);86                  request.getRequestDispatcher("/jsp/WebUtils_User.jsp").forward(request, response);87         }88       89 }</tb_user>

 

3.jsp

## 建立一個

WebUtils_User.jsp

 

 

  WebUtils_User.jsp的程式碼如下: 

 1  2  6 <!--    c标签要使用,那么就必须要有它 --> 7  8 <set></set>10  11 nbsp;HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">12 13   14     <base>"> 15     <title>My JSP 'WebUtils_User.jsp' starting page</title> 16   17   18   19     <div>21         <form>22             <h4 id="新增用户">新增用户</h4>23             姓名: <input><br>24              密码: <input><br> 25              出生日期 : <input><br> 26              性别: <select>27                 <option>男</option>28                 <option>女</option>29             </select><br> 30             <input>31             <hr>32         </form>33     </div> 34     <div>35         <form> 36              <input> <br>37             <table> 38                  <thead>39                   <tr>
<td>ID</td>
<td>姓名</td>
<td>密码</td>
<td>日期</td>
<td>性别</td>
<td>操作</td>
</tr>40                  </thead>41                  <tbody>42          <foreach>43          <tr>44                 <td>${list.id }</td>45                 <td>${list.name }</td>46                 <td>${list.password }</td>47                 <td>${list.birthday }</td> 48                 <td>
<if>男</if>49                 <if>女</if>
</td>50                  <td>
<a>修改 </a> 51                     <a>删除</a>  </td> 52          </tr>53          </foreach>54                  </tbody>55             </table>56             <hr>57         </form>58     </div> 59   60 
# 效果如下

 

 

二:使用jQuery提價表單

#應用jquery- 2.1.4.min.js的檔案

  在剛剛的WebUtils_User.jsp中應用jQuery-2.1.4.min.js的檔案即可應用jQuery的了

   WebUtils_User.jsp的完整程式碼如下:

#  

 1  2  6 <!--    c标签要使用,那么就必须要有它 --> 7  8 <set></set>10  11 nbsp;HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">12 13   14     <base>"> 15     <title>My JSP 'WebUtils_User.jsp' starting page</title> 16   <script></script>17   <script>18   function funInsert(){19   //专递的参数和定义的变量必须要遵循驼峰形式的格式20   var userName=$("#name").val();21    var userPassword=$("#password").val();22     var userSex=$("#sex").val();23      var userBirthday=$("#birthday").val(); 
24      //那面的专递的参数 如:name,password...必须要与domain层的表的名称对应,25   $.post("${url}/zhu/Servlet_TbUser2",{who:&#39;jQueryInsert&#39;,name:userName,password:userPassword,sex:userSex,birthday:userBirthday},  
26   function(getData){27         console.log(getData); 
28         alert(getData.msg); 
29         30      },"json");31   }32   33   </script>34   35   36   37   38     <div>40         <form>41             <h4 id="新增用户">新增用户</h4>42             姓名: <input><br>43              密码: <input><br> 44              出生日期 : <input><br> 45              性别: <select>46                 <option>男</option>47                 <option>女</option>48             </select><br> 49             <input>50             <hr>51         </form>52     </div> 53     <div>54         <form> 55              <input> <br>56             <table> 57                  <thead>58                   <tr>
<td>ID</td>
<td>姓名</td>
<td>密码</td>
<td>日期</td>
<td>性别</td>
<td>操作</td>
</tr>59                  </thead>60                  <tbody>61          <foreach>62          <tr>63                 <td>${list.id }</td>64                 <td>${list.name }</td>65                 <td>${list.password }</td>66                 <td>${list.birthday }</td> 67                 <td>
<if>男</if>68                 <if>女</if>
</td>69                  <td>
<a>修改 </a> 70                     <a>删除</a>  </td> 71          </tr>72          </foreach>73                  </tbody>74             </table>75             <hr>76         </form>77     </div> 78 79      <div> 81             <h4 id="不用使用form标签提交表单-使用jQuery的post来提交表单">不用使用form标签提交表单,使用jQuery的post来提交表单</h4>82             <h5 id="新增用户">新增用户</h5> 83             姓名: <input><br>84              密码: <input><br> 85              出生日期 : <input><br> 86              性别: <select>87                 <option>男</option>88                 <option>女</option>89             </select><br> 90             <input>91             <hr>92          93     </div> 94   95 
## 

   

Servlet_TbUser2完整## 

   Servlet_TbUser2完整

#程式碼如下:

    使用JSON*方法來把資料從servlet專遞個jsp中

    #JSON*所需要的用到的jar包是

 
  1 package zhu.jdbc.servlet;  2   3 import java.io.IOException;  4 import java.sql.Date;  5    6 import java.text.SimpleDateFormat;  7 import java.util.List;  8   9 import javax.servlet.ServletException; 10 import javax.servlet.http.HttpServlet; 11 import javax.servlet.http.HttpServletRequest; 12 import javax.servlet.http.HttpServletResponse; 13  14 import net.sf.json.JSONObject; 15  16   17  18 import zhu.jdbc.domain.Tb_User; 19 import zhu.jdbc.service.ITb_UserService; 20 import zhu.jdbc.service.imp.ITb_UserServiceImpI; 21 import zhu.jdbc.unit.WebUtils; 22  23 public class Servlet_TbUser2 extends HttpServlet { 24     /** 25      * 
 26      */ 27     private static final long serialVersionUID = 1L; 28     ITb_UserService myITb_UserService = new ITb_UserServiceImpI(); 29  30     @Override 31     protected void doGet(HttpServletRequest req, HttpServletResponse resp) 32             throws ServletException, IOException { 33         doPost(req, resp); 34     } 35  36     @Override 37     protected void doPost(HttpServletRequest request, 38             HttpServletResponse response) throws ServletException, IOException { 39         request.setCharacterEncoding("UTF-8");// 解决乱码 40         String type = request.getParameter("who"); 41         // 新增 42         if ("Insert".equals(type)) { 43             Insert(request, response); 44         } 45         //查询所有数据 46         else if("queryAll".equals(type)){ 47             queryAll(request, response); 48         } 
 49         //使用jquery提交表单新增 50                 else if("jQueryInsert".equals(type)){ 51                     jQueryInsert(request, response); 52                 } 
 53     } 54  55     // 新增 56     public void Insert(HttpServletRequest request, HttpServletResponse response) 57             throws ServletException, IOException { 58         /*注册字符串到日期的转换器 
 59          * ConvertUtils.register(new DateLocaleConverter(), java.util.Date.class); 
 60          * */ 
 61                 //将jsp页面专递参数封装到 domain层的 Tb_User对象中 62                  Tb_User tb_User=WebUtils.request2Bean(request, Tb_User.class); 
 63                  System.out.println(tb_User.getName()); 
 64                 // 把获取到的这些值放到user里 65                 Tb_User user = new Tb_User(); 66                 try { 67                     // 下面两句是把 string 转换为 sql类型的 时间格式 68                     SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 69                     String time=sdf.format(tb_User.getBirthday()); 70                      user.setBirthday(new Date(sdf.parse(time).getTime())); 71                     user.setEmail(tb_User.getEmail()); 72                     user.setName(tb_User.getName()); 73                     user.setPassword(tb_User.getPassword()); 
 74                     user.setSex(tb_User.isSex()); 75                     // 最后调用服务来添加 76                     String message = null; 77                     if (myITb_UserService.insertData(user) == true) { 78                         queryAll(request, response); 79                     } else { 80                         message = "新增失败!!!"; 81                         request.setAttribute("msg", message); 82                         request.getRequestDispatcher("/index.jsp").forward(request,    response); 83                     } 84                 } catch (Exception e1) { 85                     e1.printStackTrace(); 86                 } 87     } 88      //查询所有的数据 89      public void queryAll(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException{ 90              List<tb_user> lis=myITb_UserService.queryAllData(); 
 91              request.setAttribute("list", lis); 92                  request.getRequestDispatcher("/jsp/WebUtils_User.jsp").forward(request, response); 93         } 94       95       96     // 新增 97         public void jQueryInsert(HttpServletRequest request, HttpServletResponse response) 98                 throws ServletException, IOException { 99             100             /*注册字符串到日期的转换器 
101              * ConvertUtils.register(new DateLocaleConverter(), java.util.Date.class); 
102              * */ 
103                     //将jsp页面专递参数封装到 domain层的 Tb_User对象中104                      Tb_User tb_User=WebUtils.request2Bean(request, Tb_User.class); 
105                      System.out.println(tb_User.getName()); 
106                     // 把获取到的这些值放到user里107                     Tb_User user = new Tb_User();108                     try {109                         // 下面两句是把 string 转换为 sql类型的 时间格式110                         SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");111                         String time=sdf.format(tb_User.getBirthday());112                          user.setBirthday(new Date(sdf.parse(time).getTime()));113                         user.setEmail(tb_User.getEmail());114                         user.setName(tb_User.getName());115                         user.setPassword(tb_User.getPassword()); 
116                         user.setSex(tb_User.isSex());117                         // 最后调用服务来添加 
118                         119                          JSONObject json=new JSONObject();120                         response.setCharacterEncoding("UTF-8");//解决乱码121                         if (myITb_UserService.insertData(user) == true) {122                             json.put("msg", "新增成功!");  
123                         } else { 
124                             json.put("msg", "新增失败!");  
125                         }126                         //使用了JSONObject就必须这句代码 
127                            response.getWriter().write(json.toString());128                     } catch (Exception e1) {129                         e1.printStackTrace();130                     }131                 132         }133       134 }</tb_user>

 

# 效果:

 

 

#原始碼下載位址: 

 

####

以上是在jsp提交表單的參數封裝到一個方法裡的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱工具

DVWA

DVWA

Damn Vulnerable Web App (DVWA) 是一個PHP/MySQL的Web應用程序,非常容易受到攻擊。它的主要目標是成為安全專業人員在合法環境中測試自己的技能和工具的輔助工具,幫助Web開發人員更好地理解保護網路應用程式的過程,並幫助教師/學生在課堂環境中教授/學習Web應用程式安全性。 DVWA的目標是透過簡單直接的介面練習一些最常見的Web漏洞,難度各不相同。請注意,該軟體中

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推薦:為Win版本,支援程式碼提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強大的PHP整合開發環境

PhpStorm Mac 版本

PhpStorm Mac 版本

最新(2018.2.1 )專業的PHP整合開發工具