Lone Ao Cang Lang が書いた Servlet+JSP+JavaBean 開発モデル () を参照することをお勧めします。
彼の JavaWeb 学習の概要をすべて読むと、多くのことが得られます。 JSP 配信のパラメータ 私も彼からメソッドを学びました
とても便利だと思います 特にプロジェクトを実行するときに、多くのコードを節約できます
1 つ: 必須パッケージ
前回の記事 JDBC+Servlet+jsp() の内容をベースに、新しい関数コードを追加しました
1: コードの書き方
1.zhu.jdbc.unit
クラスを作成するwebutils.javazhu.jdbc.unitパッケージ(パラメーター定義の保存に使用されるクラス)
webutilsコードは次のとおりです。 より明確にするために、別のサーブレットと jsp
を構築します。 2. zhu.jdbc.servlet zhu.jdbc.servlet パッケージの下に
クラスを作成します (パラメーター定義を保存するために使用されるクラス)
主な違いは、WebUtils クラスのメソッド request2Bean が呼び出されない場合、特別な配信パラメータは次のようになります
呼び出し後は次のようになります:
コードは次のとおりです:
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>
3.jsp
WebUtils_User.jsp
を作成します。 WebUtils_User.jsp は次のとおりです:
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>
効果は次のとおりです
2: 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 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
Servlet_TbUser2 の完全なコードは次のとおりです。
JSON* メソッドを使用してデータを配置します サーブレットから JSP を配信します
JSON* には jar パッケージが必要です
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:'jQueryInsert',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
効果:
ソースコードのダウンロードアドレス:
以上がJSPで送信されたフォームのパラメータはメソッドにカプセル化されます。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

この記事では、Javaプロジェクト管理、自動化の構築、依存関係の解像度にMavenとGradleを使用して、アプローチと最適化戦略を比較して説明します。

この記事では、MavenやGradleなどのツールを使用して、適切なバージョン化と依存関係管理を使用して、カスタムJavaライブラリ(JARファイル)の作成と使用について説明します。

この記事では、カフェインとグアバキャッシュを使用してJavaでマルチレベルキャッシュを実装してアプリケーションのパフォーマンスを向上させています。セットアップ、統合、パフォーマンスの利点をカバーし、構成と立ち退きポリシー管理Best Pra

この記事では、キャッシュや怠zyなロードなどの高度な機能を備えたオブジェクトリレーショナルマッピングにJPAを使用することについて説明します。潜在的な落とし穴を強調しながら、パフォーマンスを最適化するためのセットアップ、エンティティマッピング、およびベストプラクティスをカバーしています。[159文字]

Javaのクラスロードには、ブートストラップ、拡張機能、およびアプリケーションクラスローダーを備えた階層システムを使用して、クラスの読み込み、リンク、および初期化が含まれます。親の委任モデルは、コアクラスが最初にロードされ、カスタムクラスのLOAに影響を与えることを保証します


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

メモ帳++7.3.1
使いやすく無料のコードエディター

Dreamweaver Mac版
ビジュアル Web 開発ツール

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン
