1. ホーム
  2. Web プログラミング
  3. JSP プログラミング

JSPで実現するシンプルな人事管理システム

2022-01-16 14:10:58

この例では、参考までにJSPで実装された簡単な人事管理システムの具体的なコードを以下のように共有します。

このシステムは、jspの9つの組み込みオブジェクトと4つのスコープの知識が含まれています実装するために、マップコレクションを使用して、ユーザーのログイン、社員情報の表示、社員情報の変更機能を実現するために、データベースをシミュレートするために使用します。

JSPの9つの組み込みオブジェクト。Application, Config, Exception, Out, PageContent, Page, Request, Response, Sesstion。
JSPの4大スコープ アプリケーションセッションページの要求 

プロジェクト体制

画像

Emp.java 従業員情報

package org.wang.model;

public class Emp {
 private String account;
 private String name;
 private String password;
 private String email;

 public Emp(String account, String name, String password, String email) {
 this.account = account;
 this.name = name;
 this.password = password;
 this.email = email;
 }

 public String getAccount() {
 return account;
 }

 public void setAccount(String account) {
 this.account = account;
 }

 public String getName() {
 return name;
 }

 public void setName(String name) {
 this.name = name;
 }

 public String getPassword() {
 return password;
 }

 public void setPassword(String password) {
 this.password = password;
 }

 public String getEmail() {
 return email;
 }

 public void setEmail(String email) {
 this.email = email;
 }
}

DBUtil.java は、社員情報を格納するためのコレクションでデータベースをシミュレートします。

package org.wang.db;

import org.wang.model.Emp;
import java.util.HashMap;
import java.util.Map;

// use the collection simulation to manipulate the database
public class DBUtil{
 public static Map<String, Emp> map = new HashMap<String, Emp>();
 // use static code block to complete the initialization of the values in the map operation
 static {
 map.put("001",new Emp("001","zhangsan","11111","[email protected]"));
 map.put("002",new Emp("002","lisi","121212","[email protected]"));
 map.put("003",new Emp("003","wangwu","131313","[email protected]"));
 map.put("004",new Emp("004","zhaoliu","141414","[email protected]"));
 }

 // determine whether the user name and password is correct
 public static boolean selectEmpByAccountAndPassword(Emp emp){
 // user input information into the emp object, determine whether the value in the emp object and the value of the map corresponds to
 boolean flag = false;
 //Iterate over the keys in the current map collection
 for (String key : map.keySet()){
 Emp e = map.get(key);
 // determine if the value passed in by the user is equal to the value in the map collection
 if(emp.getAccount().equals(e.getAccount()) && emp.getPassword().equals(e.getPassword())){
 flag = true;
 break;
 }
 }
 return flag;
 }
}

index.jspのログイン画面

{{コード

index-control.jsp ログイン画面の制御画面。ユーザーのログイン情報が、マップコレクションの社員情報と一致するかどうかを処理するために使用されます。

{{コード
{未定義

error.jsp

{{コード
{未定義

update.jsp 社員情報ページの修正

<%--
 Created by IntelliJ IDEA.
 User: wangy
 Date: 2018/11 Time: 8:19
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
 <head>
 <title>Personnel Management System Login</title>
 </head>
 <body>
 <h3 align="center">Personnel Management System Login Page</h3>
 <hr>
 <%--action represents the server-side handler--%>
 <form action="index-control.jsp">
 <table align="center">
 <tr>
 <td>
 Account Number.
 </td>
 <td>
 <input type="text" name="account">
 </td>
 </tr>
 <tr>
 <td>
 Password.
 </td>
 <td>
 <input type="password" name="password">
 </td>
 </tr>
 <tr>
 <td>
 <input type="submit" value="login">
 </td>
 </tr>
 </table>
 </form>
 </body>
</html>
<%-- Created by IntelliJ IDEA. User: wangy Date: 2018/11 Time: 9:09 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" errorPage="error.jsp" %> <%@ page import="org.wang.db.*,org.wang.model.*" %> <%@ page import="java.util.Map" %> <html> <head> <title>Personnel Management System</title> </head> <body> <%--Get the account number and password entered by the user, and call the method in DBUtil to determine if the information exists request:Get request information request.getParameter(String name): you can get the value of the control by the name property of a control out.println(); output the information to the page --%> <% // Get the account and password entered by the user String account = request.getParameter("account"); String password = request.getParameter("password"); // encapsulate the user input account and password into an Emp object Emp emp = new Emp(account,null,password,null); boolean flag = DBUtil.selectEmpByAccountAndPassword(emp); //Get the map collection Map<String,Emp> map = DBUtil.map; if(flag==true){ //set session session.setAttribute("account",account); //use application to get system access Object o = application.getAttribute("count"); //judge that if the current user is the first to log in, the value in application is null, then set the access amount to 1 if(o == null){ application.setAttribute("count",1); }else{ //count was originally a String, strong conversion to int type, and do +1 operation int count = Integer.parseInt(o.toString()); application.setAttribute("count",count+1); } %> <%--Get the number of visits and display them on the page - %> <h3 align="right">Current visits: <%=application.getAttribute("count")%></h3> <%--Get the value in session and display it on the page --%> <h3 align="center">Welcome to the personnel management system</h3> <h3 align="right">Login Account:<%=session.getAttribute("account")%></h3> <hr> <table align="center" border="1" width="500px"> <tr> <td> Account Number </td> <td> Employee Name </td> <td> Email </td> <td> Modify </td> </tr> <% - Use a for loop to automatically generate cell rows based on the data in the simulated database to display the employee information table - %> <% for (String key : map.keySet()){ Emp e = map.get(key); %> <tr> <td> <%=e.getAccount()%> </td> <td> <%=e.getName()%> </td> <td> <%=e.getEmail()%> </td> <td> <%--Click on modify to jump to update.jsp page, use URL to pass parameters, address bar will show data information--%> <%--Adjacent two jsp pages pass data by way of URL parameters--%> <% - syntax rules: page?key1=value1 & key2=value2 --%> <a href="update.jsp?account=<%=e.getAccount()%>&name=<%=e.getName()%>&email=<%=e.getEmail()%>& quot; rel="external nofollow" >modify</a> </td> </tr> <% } %> </table> <% }else{ throw new Exception("Login failed"); } %> </body> </html>
<%--
 Created by IntelliJ IDEA.
 User: wangy
 Date: 2018/11 Time: 16:01
 To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" isErrorPage="true" %>
<html>
<head>
 <title>Title</title>
</head>
<body>
 <%=exception.getMessage()%>
</body>
</html>

実行効果

ログイン画面

画像

 ログインに成功したら、社員情報表示画面に入る

画像

社員情報の変更(ここではデータ表示バックを使用しています)

画像

以上、本記事の全内容をご紹介しました。皆様の学習の一助となり、BinaryDevelopをより支持していただけると幸いです。

{コード