`
大连IT精英
  • 浏览: 3640 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

MiniHR

阅读更多
WebContent\
01.\employee\exception.jsp
02.\employee\index.jsp
03.\employee\search.jsp
04.\reports\menu.jsp
05.\WEB-INF\struts-config-employee.xml
06.\WEB-INF\struts-config-reports.xml
07.\WEB-INF\struts-config.xml
08.\WEB-INF\tiles-defs.xml
09.\WEB-INF\validation.xml
10.\WEB-INF\validator-rules.xml
11.\WEB-INF\web.xml
12.\footer.jsp
13.\header.jsp
14.\index.jsp
15.\mainLayout.jsp

src\
\com.struts1.minihr\
16.Employee.java
17.EmployeeSearchService.java
18.LoginAction.java
19.MiniHrValidator.java
20.NoResultsFoundException.java
21.SearchAction.java
22.SearchForm.java
23.MessagResources_es.properties
24.MessagResources.properties
\com.struts1.minihr.security\
25.SecurityService.java
26.SecurityServiceImpl.java
27.User.java

01.
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<html:errors/>


02.
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles" %>

<html>
<head>
<title>ABC, Inc. Human Resources Portal</title>
</head>

<body>
<font size="+1">ABC, Inc. Human Resources Portal</font>
<br>
<hr width="100%" noshade="true">
&#149; Add an Employee
<br>
&#149;
<html:link action="/viewSearch">Search for Employees</html:link>
<br>
</body>

</html>


03.
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>
<%@ taglib uri="http://struts.apache.org/tags-logic" prefix="logic" %>

<html>
<head>
<title>
<bean:message key="title.application"/> -
<bean:message key="title.employee.search"/>
</title>
</head>
<body>

<font size="+1">
<bean:message key="title.application"/> -
<bean:message key="title.employee.search"/>
</font><br>
<hr width="100%" noshade="true">

<html:errors/>

<html:form action="/search">

<table>
<tr>
<td align="right"><bean:message key="label.search.name"/>:</td>
<td><html:text property="name"/></td>
</tr>
<tr>
<td></td>
<td>-- or --</td>
</tr>
<tr>
<td align="right"><bean:message key="label.search.ssNum"/>:</td>
<td><html:text property="ssNum"/> (xxx-xx-xxxx)</td>
</tr>
<tr>
<td></td>
<td><html:submit><bean:message key="label.submit"/></html:submit></td>
</tr>
</table>

</html:form>

<logic:present name="searchForm" property="results">

<hr width="100%" size="1" noshade="true">

<bean:size id="size" name="searchForm" property="results"/>
<logic:equal name="size" value="0">
<center><font color="red"><b>
<bean:message key="error.search.not.found"/>
</b></font></center>
</logic:equal>

<logic:greaterThan name="size" value="0">
<table border="1">
<tr>
<th><bean:message key="label.search.name"/></th>
<th><bean:message key="label.search.ssNum"/></th>
</tr>
<logic:iterate id="result" name="searchForm" property="results">
<tr>
<td><bean:write name="result" property="name"/></td>
<td><bean:write name="result" property="ssNum"/></td>
</tr>
</logic:iterate>
</table>

</logic:greaterThan>

</logic:present>
</body>
<html>


04.
<html>
<head>
<title>ABC, Inc. Human Resources Portal - Reports Menu</title>
</head>
<body>

<font size="+1">
ABC, Inc. Human Resources Portal - Reports Menu
</font><br>
<hr width="100%" noshade="true">

&#149; New Employee Report<br>
&#149; 5-Year Employee Report<br>
&#149; 10-Year Employee Report<br>
&#149; 20-Year Employee Report<br>

</body>
<html>


05.
<?xml version="1.0"?>

<!DOCTYPE struts-config PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
  "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

    <!-- Form Beans Configuration -->
    <form-beans>
        <form-bean name="searchForm" type="com.struts1.minihr.SearchForm" />
    </form-beans>

    <!-- Action Mappings Configuration -->
    <action-mappings>
        <action path="/viewSearch" forward=".search.page" />
        <action path="/search"
            type="com.struts1.minihr.SearchAction"
            name="searchForm"
            scope="request"
            validate="false"
            input=".search.page" >
            <exception type="com.struts1.minihr.NoResultsFoundException"
                key="error.search.not.found"
                path=".error.page" />
        </action>
    </action-mappings>

</struts-config>


06.
<?xml version="1.0"?>

<!DOCTYPE struts-config PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
  "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

    <!-- Form Beans Configuration -->
    <form-beans>
        <form-bean name="searchForm" type="com.struts1.minihr.SearchForm" />
    </form-beans>

    <!-- Action Mappings Configuration -->
    <action-mappings>
        <action path="/viewSearch" forward=".search.page" />
        <action path="/search"
            type="com.struts1.minihr.SearchAction"
            name="searchForm"
            scope="request"
            validate="false"
            input=".search.page" >
            <exception type="com.struts1.minihr.NoResultsFoundException"
                key="error.search.not.found"
                path=".error.page" />
        </action>
    </action-mappings>

</struts-config>


07.
<?xml version="1.0"?>

<!DOCTYPE struts-config PUBLIC
  "-//Apache Software Foundation//DTD Struts Configuration 1.3//EN"
  "http://struts.apache.org/dtds/struts-config_1_3.dtd">

<struts-config>

    <!-- Global Exception Configuration -->
    <global-exceptions>
<!--
        <exception type="com.struts1.minihr.NoResultsFoundException"
            key="error.NoResultsFoundException"
            path="/employee/exception1.jsp" />

        <exception type="com.struts1.minihr.NoResultsFoundException"
            key="error.NoResultsFoundException"
            path="error.page" />
-->
    </global-exceptions>

    <!-- Global Forwards Configuration -->
    <global-forwards>
        <forward name="viewSearch" path="/employee/viewSearch.do"/>
    </global-forwards>

    <!-- Message Resources Configuration -->
    <message-resources parameter="com.struts1.minihr.MessageResources" />

    <!-- Tiles Configuration -->
    <plug-in className="org.apache.struts.tiles.TilesPlugin">
        <set-property property="definitions-config" value="/WEB-INF/tiles-defs.xml" />
    </plug-in>

    <!-- Validator Configuration -->
    <plug-in className="org.apache.struts.validator.ValidatorPlugIn">
        <set-property property="pathnames" value="/WEB-INF/validator-rules.xml,
               /WEB-INF/validation.xml" />
    </plug-in>


</struts-config>



08.
<!DOCTYPE tiles-definitions PUBLIC
       "-//Apache Software Foundation//DTD Tiles Configuration 1.3//EN"
       "http://struts.apache.org/dtds/tiles-config_1_3.dtd">

<tiles-definitions>

    <!-- Main Layout -->
    <definition name=".main.layout" path="/mainLayout.jsp">
        <put name="title" value="" />
        <put name="header" value="/header.jsp" />
        <put name="body" value="" />
        <put name="footer" value="/footer.jsp" />
    </definition>

    <!-- Exception Page -->
    <definition name=".error.page" extends=".main.layout">
        <put name="title" value="ABC, Inc. Human Resources Portal - Employee Exception" />
        <put name="body" value="/employee/exception.jsp" />
    </definition>

    <!-- Search Page -->
    <definition name=".search.page" extends=".main.layout">
        <put name="title" value="ABC, Inc. Human Resources Portal - Employee Search" />
        <put name="body" value="/employee/search.jsp" />
    </definition>

    <!-- Menu Page -->
    <definition name=".menu.page" extends=".main.layout">
        <put name="title" value="ABC, Inc. Human Resources Portal - Employee Menu" />
        <put name="body" value="/reports/menu.jsp" />
    </definition>

</tiles-definitions>



09.
<?xml version="1.0" encoding="ISO-8859-1" ?>

<!DOCTYPE form-validation PUBLIC
     "-//Apache Software Foundation//DTD Commons Validator Rules Configuration 1.3.0//EN"
     "http://jakarta.apache.org/commons/dtds/validator_1_3_0.dtd">

<form-validation>
    <global>
        <!--
            An example global constant
            <constant>
                <constant-name>postalCode</constant-name>
                <constant-value>^\d{5}\d*$</constant-value>
            </constant>
            end example
        -->
    </global>
    <formset>
        <form name="searchForm">
            <field property="ssNum" depends="ssNum">
                <arg key="label.search.ssNum" />
                <var>
                    <var-name>mask</var-name>
                    <var-value>^\d{3}-d{2}-d{4}$</var-value>
                </var>
            </field>
            <!--
            <field property="ssNum" depends="mask">
                <arg key="label.search.ssNum" />
                <var>
                    <var-name>mask</var-name>
                    <var-value>^\d{3}-d{2}-d{4}$</var-value>
                </var>
            </field>
            -->
            <!--
            field property="ssNum" depends="required, ssNum">
                <arg key="label.search.ssNum" />
                <var>
                    <var-name>mask</var-name>
                    <var-value>^\d{3}-d{2}-d{4}$</var-value>
                </var>
            </field>
            -->
        </form>
    </formset>
</form-validation>


10.valdator-rules.xml(from struts 1.3.10)

11.
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
    <display-name>MiniHR</display-name>

    <!-- Action Servlet Configuration -->
    <servlet>
        <servlet-name>action</servlet-name>
        <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>
        <init-param>
            <param-name>config</param-name>
            <param-value>/WEB-INF/struts-config.xml</param-value>
        </init-param>
     	<init-param>
            <param-name>config/employee</param-name>
            <param-value>/WEB-INF/struts-config-employee.xml</param-value>
        </init-param>
        <init-param>
            <param-name>config/reports</param-name>
            <param-value>/WEB-INF/struts-config-reports.xml</param-value>
        </init-param>
        <init-param>
            <param-name>chainConfig</param-name>
            <param-value>org/apache/struts/tiles/chain-config.xml</param-value>
        </init-param>
        <load-on-startup>1</load-on-startup>
    </servlet>

    <!-- Action Servlet Mapping -->
    <servlet-mapping>
        <servlet-name>action</servlet-name>
        <url-pattern>*.do</url-pattern>
    </servlet-mapping>

    <!-- The Welcome File List -->
    <welcome-file-list>
        <welcome-file>/index.jsp</welcome-file>
    </welcome-file-list>

    <!-- StrutsTag Library Descriptors
    <taglib>
        <tablib-uri>/WEB-INF/tlds/struts-bean.tld</tablib-uri>
        <tablib-location>/WEB-INF/tlds/struts-bean.tld</tablib-location>
    </taglib>
    <taglib>
        <tablib-uri>/WEB-INF/tlds/struts-html.tld</tablib-uri>
        <tablib-location>/WEB-INF/tlds/struts-html.tld</tablib-location>
    </taglib>
    <taglib>
        <tablib-uri>/WEB-INF/tlds/struts-logic.tld</tablib-uri>
        <tablib-location>/WEB-INF/tlds/struts-logic.tld</tablib-location>
    </taglib>
    -->

</web-app>


12.
<hr width="100%" noshade="true">
Copyright &copy; ABC, Inc.


13.
<font size="+1">ABC, Inc. Human Resources Portal</font>
<br>
<hr width="100%" noshade="true">


14.
<%@ taglib uri="http://struts.apache.org/tags-bean" prefix="bean" %>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html" %>

<html>
<head>
<title><bean:message key="title.application"/></title>
</head>
<body>

<font size="+1"><bean:message key="title.application"/></font><br>

<hr width="100%" noshade="true">

&#149; <bean:message key="link.employee.add"/><br>
&#149; <html:link forward="viewSearch"><bean:message key="link.employee.search"/></html:link><br>

&#149; <html:link action="/reports/viewMenu">Reports Menu</html:link><br>

</body>
</html>



15.
<%@ taglib uri="http://struts.apache.org/tags-tiles" prefix="tiles"%>

<html>
<head>
<title><tiles:getAsString name="title" /></title>
</head>
<body>
<tiles:insert attribute="header" />
<tiles:insert attribute="body" />
<tiles:insert attribute="footer" />
</body>
</html>


16.
package com.struts1.minihr;

public class Employee {

    private String name;
    private String ssNum;

    public Employee(String name, String ssNum) {
        this.name = name;
        this.ssNum = ssNum;
    }

    public String getName() {
        return name;
    }

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

    public String getSsNum() {
        return ssNum;
    }

    public void setSsNum(String ssNum) {
        this.ssNum = ssNum;
    }


}


17.
package com.struts1.minihr;

import java.util.ArrayList;

public class EmployeeSearchService {

    /* Hard-coded sample data. Normally this would come from a real data source such as a database. */
    private static Employee[] employees =
    {
        new Employee("Bob Davidson", "123-45-6789"),
        new Employee("Mary Williams", "987-65-4321"),
        new Employee("Jim Smith", "111-11-1111"),
        new Employee("Beverly Harris", "222-22-2222"),
        new Employee("Thomas Frank", "333-33-3333"),
        new Employee("Jim Davidson", "444-44-4444")
    };

    // Search for employees by name.
    public ArrayList searchByName(String name) {
        ArrayList resultList = new ArrayList();

        for (int i=0; i < employees.length; i++) {
            if (employees[i].getName().toUpperCase().indexOf(name.toUpperCase())!= -1) {
                resultList.add(employees[i]);
            }
        }

        return resultList;
    }

    // Search for employee by social security number.
    public ArrayList searchBySsNum(String ssNum) {
        ArrayList resultList = new ArrayList();

        for (int i=0; i < employees.length; i++) {
            if (employees[i].getSsNum().equals(ssNum)) {
                resultList.add(employees[i]);
            }
        }

        return resultList;
    }
}


18.
package com.struts1.minihr;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.apache.commons.beanutils.PropertyUtils;
import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

import com.struts1.minihr.security.SecurityService;
import com.struts1.minihr.security.SecurityServiceImpl;
import com.struts1.minihr.security.User;

public final class LoginAction extends Action {

    public ActionForward execute(
            ActionMapping mapping, ActionForm form,
            HttpServletRequest request, HttpServletResponse response)
    throws Exception {
        HttpSession session = request.getSession();
        String username = (String) PropertyUtils.getSimpleProperty(form, "username");
        String password = (String) PropertyUtils.getSimpleProperty(form, "password");
        SecurityService service = new SecurityServiceImpl();
        User user = service.authenticate(username, password);
        session.setAttribute("User", user);
        // Forward control to this Action's success forward
        return mapping.findForward("success");
    }
}


19.
package com.struts1.minihr;

import javax.servlet.http.HttpServletRequest;

import org.apache.commons.validator.Field;
import org.apache.commons.validator.Validator;
import org.apache.commons.validator.ValidatorAction;
import org.apache.commons.validator.util.ValidatorUtils;
import org.apache.struts.action.ActionMessages;
import org.apache.struts.validator.Resources;

public class MiniHrValidator {

    public static boolean validateSsNum (Object bean,
            ValidatorAction action,
            Field field,
            ActionMessages errors,
            Validator validator,
            HttpServletRequest request) {

        String value = ValidatorUtils.getValueAsString(bean, field.getProperty());

        if (value == null || value.length() < 11) {
            errors.add(field.getKey(),
                    Resources.getActionMessage(request, action, field));
            return false;
        }

        for (int i = 0; i < 11; i++) {
            if (i == 3 || i == 6) {
                if (value.charAt(i) != '-') {
                    errors.add(field.getKey(),
                            Resources.getActionMessage(request, action, field));
                    return false;
                }
            } else if ("0123456789".indexOf(value.charAt(i)) == -1) {
                errors.add(field.getKey(),
                        Resources.getActionMessage(request, action, field));
                return false;
            }
        }

        return true;
    }
}


20.
package com.struts1.minihr;

public class NoResultsFoundException extends Exception {

}


21.
package com.struts1.minihr;

import java.util.ArrayList;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.apache.struts.action.Action;
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;

public class SearchAction extends Action {

	@Override
	public ActionForward execute(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) throws Exception {

	    EmployeeSearchService service = new EmployeeSearchService();
	    ArrayList results;

	    SearchForm searchForm = (SearchForm) form;

	    // Perform employee search based on the criteria entered.
	    String name = searchForm.getName();
	    if (name != null && name.trim().length() > 0) {
	      results = service.searchByName(name);
	    } else {
	      results = service.searchBySsNum(searchForm.getSsNum().trim());
	    }

	    // Throw an application exception if results were not found.
	    if (results.size() < 1) {
	      throw new NoResultsFoundException();
	    }

	    // Place search results in SearchForm for access by JSP.
	    searchForm.setResults(results);

	    // Forward control to this Action's input page.
	    return mapping.getInputForward();

	}

}


22.
package com.struts1.minihr;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts.action.ActionErrors;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.action.ActionMessage;
import org.apache.struts.validator.ValidatorForm;

public class SearchForm extends ValidatorForm {

    private static final long serialVersionUID = 1L;

    private String name = null;
    private String ssNum = null;
    private List results = null;

    public String getName() {
        return name;
    }

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

    public String getSsNum() {
        return ssNum;
    }

    public void setSsNum(String ssNum) {
        this.ssNum = ssNum;
    }

    public List getResults() {
        return results;
    }

    public void setResults(List results) {
        this.results = results;
    }

//    @Override
//    // Reset form fields.
//    public void reset(ActionMapping mapping, HttpServletRequest request) {
//        this.name = null;
//        this.ssNum = null;
//        this.results = null;
//    }
//
//    @Override
//    // Validate form data.
//    public ActionErrors validate(ActionMapping mapping, HttpServletRequest request) {
//        ActionErrors errors = new ActionErrors();
//
//        boolean nameEntered = false;
//        boolean ssNumEntered = false;
//
//        // Determine if name has been entered.
//        if (name != null && name.length() > 0) {
//            nameEntered = true;
//        }
//
//        // Determine if social security number has been entered.
//        if (ssNum != null & ssNum.length() > 0) {
//            ssNumEntered = true;
//        }
//
//        // Validate that either name or social security number has been entered.
//        if (!nameEntered && !ssNumEntered) {
//            errors.add(null, new ActionMessage("error.search.criteria.missing"));
//        }
//
//        // Validate format of social security number if it has been entered.
//        if (ssNumEntered && !isValidSsNum(ssNum.trim())) {
//            errors.add("ssNum",
//                    new ActionMessage("error.search.ssNum.invalid"));
//        }
//
//        return errors;
//    }
//
//    // Validate format of social security number.
//    private static boolean isValidSsNum(String ssNum) {
//        if (ssNum.length() < 11) {
//            return false;
//        }
//
//        for (int i = 0; i < 11; i++) {
//            if (i == 3 || i == 6) {
//                if (ssNum.charAt(i) != '-') {
//                    return false;
//                }
//            } else if ("0123456789".indexOf(ssNum.charAt(i)) == -1) {
//                return false;
//            }
//        }
//
//        return true;
//    }
}


23.
# Title Resources
title.application=ABC, Inc. Recursos Humanos Porta
title.employee.search=Búsqueda Del Empleado

# Link Resources
link.employee.add=Agregue a empleado
link.employee.search=Búsqueda para los empleados

# Label Resources
label.search.name=Nombre
label.search.ssNum=Número De la Seguridad Social
label.submit=Someter

# Error Resources
error.search.criteria.missing=El Faltar De los Criterios De la Búsqueda
error.search.ssNum.invalid=Número Inválido De la Seguridad Social
error.search.not.found=Ningunos Empleados Encontraron
errors.header=<font color="red"><cTypeface:Bold>Error De la Validación(s)</b></font><ul>
errors.footer=</ul><hr width="100%" size="1" noshade="true">
errors.suffix=<li>
errors.prefix=</li>


24.
# Title Resources
title.application=ABC, Inc. Human Resources Portal
title.employee.search=Employee Search

# Link Resources
link.employee.add=Add an Employee
link.employee.search=Search for Employees

# Label Resources
label.search.name=Name
label.search.ssNum=Social Security Number
label.submit=Submit

# Error Resources
error.search.criteria.missing=Search Criteria Missing
error.search.ssNum.invalid=Invalid Social Security Number
error.search.not.found=No Employees Found
errors.header=<font color="red"><cTypeface:Bold>Validation Error(s)</b></font><ul>
errors.footer=</ul><hr width="100%" size="1" noshade="true">
errors.prefix=<li>
errors.suffix=</li>



25.
package com.struts1.minihr.security;

import javax.security.sasl.AuthenticationException;

public interface SecurityService {
  public User authenticate(String username, String password)
    throws AuthenticationException;
}


26.
package com.struts1.minihr.security;

import java.util.HashMap;
import java.util.Map;

import javax.security.sasl.AuthenticationException;

public class SecurityServiceImpl implements SecurityService {
  private Map users;
  private static final String ADMIN_ROLE = "administrator";

  public SecurityServiceImpl() {
    users = new HashMap();
    users.put("bsiggelkow",
      new User( "bsiggelkow","Bill", "Siggelkow",  "thatsme",
        new String[] {ADMIN_ROLE}));
    users.put("jholmes",
      new User( "jholmes","James", "Holmes",  "maindude",
        new String[] {ADMIN_ROLE}));
    users.put("gburdell",
      new User( "gburdell","George", "Burdell",  "gotech",
        new String[] {ADMIN_ROLE}));
  }

  public User authenticate(String username, String password)
    throws AuthenticationException
  {
    User user = (User) users.get(username);
    if (user == null)
      throw new AuthenticationException("Unknown user");
    boolean passwordIsValid = user.passwordMatch(password);
    if (!passwordIsValid)
      throw new AuthenticationException("Invalid password");
    return user;
  }
}


27.
package com.struts1.minihr.security;

import java.io.Serializable;

public class User implements Serializable {
  private String firstName;
  private String lastName;
  private String username;
  private String password;
  private String[] roles;

  public User(String name, String fName, String lName,
    String pwd, String[] assignedRoles) {
    username = name;
    firstName = fName;
    lastName  = lName;
    password  = pwd;
    roles = assignedRoles;
  }

  public String getUsername() {
    return username;
  }

  public String getFirstName() {
    return firstName;
  }

  public String getLastName() {
    return lastName;
  }

  public boolean passwordMatch(String pwd) {
    return password.equals(pwd);
  }

  public boolean hasRole(String role) {
    if (roles.length > 0) {
      for (int i=0; i<roles.length; i++) {
        if (role.equals(roles[i])) return true;
      }
    }
    return false;
  }

  public boolean isAdministrator() {
    return hasRole("administrator");
  }
}

分享到:
评论
1 楼 bsn_007 2013-11-26  
what is password

相关推荐

    企业招聘小程序Minihr

    【Minihr小程序详解】 Minihr是一款专为企业和个人打造的求职招聘小程序,旨在简化招聘流程,提升招聘效率。作为一款轻量级应用,它在微信小程序平台上运行,无需下载安装即可使用,大大降低了用户门槛,方便了企业...

    进入struts验证机制!.

    package com.jamesholmes.minihr; import org.apache.struts.validator.ValidatorForm; public class LogonForm extends ValidatorForm { private String username; private String password; public String ...

    微信小程序项目

    在这个名为"微信小程序项目-源码"的压缩包中,包含的是一个名为"miniHr-master"的小程序项目,很可能是人力资源管理相关的应用。 1. 微信小程序框架 微信小程序采用基于JavaScript的自定义框架WXML(WeChat Markup ...

    技嘉Z97X UD3H F9 增加NVME启动功能

    亲测可用

    《基于YOLOv8的音响设备识别系统》(包含源码、完整数据集、可视化界面、部署教程)简单部署即可运行。功能完善、操作简单,适合毕设或课程设计.zip

    资源内项目源码是来自个人的毕业设计,代码都测试ok,包含源码、数据集、可视化页面和部署说明,可产生核心指标曲线图、混淆矩阵、F1分数曲线、精确率-召回率曲线、验证集预测结果、标签分布图。都是运行成功后才上传资源,毕设答辩评审绝对信服的保底85分以上,放心下载使用,拿来就能用。包含源码、数据集、可视化页面和部署说明一站式服务,拿来就能用的绝对好资源!!! 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、大作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.txt文件,仅供学习参考, 切勿用于商业用途。

    毕业设计物联网实战项目基于mqttd-centos7-v2.3.11.zip 配置的emqtt服务器,配套金大万翔物联网管理平台.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕设单片机实战项目基于ESP8266的家庭版简易开关.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕设单片机实战项目基于ESP8266制作的一个局域网关灯神器,还有一个OLED,用于显示实时时间和最近三天的天气信息。.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    毕业设计物联网实战项目基于树莓派wifi的物联网项目.zip

    【项目资源】: 物联网项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    IDE的护眼的主题的套件

    IDE护眼主题套件

    【新能源汽车】基于Matlab/Simulink的增程式电动车动力系统仿真模型设计与优化:功率跟随控制及能量流管理

    内容概要:文章详细介绍了基于Matlab/Simulink构建的增程式电动车仿真模型。该模型由电池、电机、发动机、整车动力学、控制策略和驾驶员模块六大组件构成,重点在于各模块间的能量流动逻辑。文中特别强调了功率跟随控制策略,通过PID闭环控制使发动机功率与电池需求动态匹配,优化了燃油经济性和SOC控制精度。此外,模型采用开放式架构,所有参数通过m脚本集中管理,便于修改和扩展。文章展示了模型在典型工况下的性能表现,并突出了其在科研和工程应用中的灵活性和实用性。; 适合人群:对新能源汽车技术感兴趣的工程师、研究人员以及高校相关专业师生。; 使用场景及目标:①用于研究增程式电动车的能量管理策略;②作为教学案例帮助学生理解复杂系统的建模方法;③为实际工程项目提供可复用的仿真平台。; 阅读建议:读者应重点关注模型的架构设计和关键控制算法实现,同时结合提供的代码片段进行实践操作,以便更好地掌握增程式电动车的工作原理及其优化方法。

    51a30-main.zip

    51a30-main.zip

    【Java数据库技术】索引类型与事务特性详解:提升SQL查询性能与数据一致性管理

    内容概要:本文详细介绍了多种类型的数据库索引及其应用场景,包括普通索引、唯一性索引、单个索引、复合索引、聚簇索引、非聚簇索引、主索引、外键索引、全文索引和空间索引。每种索引都有其独特的定义、要点和适用场景,并附有具体的SQL代码示例。此外,文章还对比了InnoDB和MyISAM两种存储引擎的特点,解释了脏读、不可重复读、可重复读和幻读的概念,并讨论了SQL优化的方法以及数据库事务的ACID特性。 适合人群:具备一定数据库基础知识的开发者、数据库管理员以及参与数据库设计和优化的技术人员。 使用场景及目标:①帮助开发者选择合适的索引类型以提高查询效率;②理解不同存储引擎的特点,选择最适合应用场景的存储引擎;③掌握事务隔离级别的概念,避免数据不一致问题;④学习SQL优化技巧,提升数据库性能;⑤理解ACID特性,确保数据库操作的一致性和可靠性。 阅读建议:本文内容较为全面且深入,建议读者结合实际项目需求,重点理解不同类型索引的应用场景,掌握SQL优化的基本原则,并熟悉事务处理的最佳实践。

    【MATLAB优化算法】基于MATLAB的优化算法实现与应用:涵盖梯度下降、线性规划、非线性规划及智能优化算法

    内容概要:本文详细介绍了MATLAB中优化算法的实现方法,涵盖确定性算法(如梯度下降法)和随机性算法(如遗传算法、粒子群优化)。文章首先讲解了梯度下降法和MATLAB优化工具箱的应用,展示了如何使用fmincon解决约束优化问题。接着,文章深入探讨了线性规划、非线性规划和多目标优化的理论和实践,提供了具体的MATLAB代码示例。此外,文中还介绍了遗传算法、粒子群优化和模拟退火算法的原理及应用,并通过实例展示了这些算法在实际问题中的使用。最后,文章讨论了优化算法在工程、金融和机器学习领域的高级应用,以及调试和优化的常见策略。 适合人群:具备一定编程基础,对优化算法感兴趣的工程师、研究人员和学生。 使用场景及目标:①理解优化算法的基础理论和实现方法;②掌握MATLAB优化工具箱的使用,解决线性、非线性、多目标优化问题;③学习遗传算法、粒子群优化和模拟退火算法的具体应用;④提高优化算法的性能和可靠性,解决实际工程、金融和机器学习问题。 阅读建议:本文内容丰富,涉及多种优化算法及其MATLAB实现,建议读者先掌握基本的优化理论和MATLAB编程基础,再逐步深入学习各类算法的具体应用。在学习过程中,结合提供的代码示例进行实践,并尝试调整参数以优化算法性能。

    python for appium ui automate test, it is something to update.

    this is for myself learn coding, change a pc debug.

    p111基于django的企业员工管理系统.zip

    项目资源包含:可运行源码+sql文件 适用人群:学习不同技术领域的小白或进阶学习者;可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 项目具有较高的学习借鉴价值,也可拿来修改、二次开发。 有任何使用上的问题,欢迎随时与博主沟通,博主看到后会第一时间及时解答。 开发语言:Python 框架:django Python版本:python3.8 数据库:mysql 5.7 数据库工具:Navicat 开发软件:PyCharm 浏览器:谷歌浏览器

    毕设单片机实战项目基于esp8266的太空人时钟小电视.zip

    【项目资源】: 单片机项目适用于从基础到高级的各种项目,特别是在性能要求较高的场景中,比如操作系统开发、嵌入式编程和底层系统编程。如果您是初学者,可以从简单的控制台程序开始练习;如果是进阶开发者,可以尝试涉及硬件或网络的项目。 【项目质量】: 所有源码都经过严格测试,可以直接运行。 功能在确认正常工作后才上传。 【适用人群】: 适用于希望学习不同技术领域的小白或进阶学习者。 可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】: 项目具有较高的学习借鉴价值,也可直接拿来修改复刻。 对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】: 有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及插图等来自网络,若是侵权请联系删除。

    电力电子MMC型STATCOM/SVG载波移相调制与电压均衡控制技术详解:从理论到实战调试经验分享

    内容概要:本文深入探讨了MMC型STATCOM/SVG的核心技术和调试技巧,重点讲解了载波移相调制(CPS-PWM)和电压均衡控制两大关键技术。载波移相调制通过为每个子模块设置不同的载波相位差,有效降低谐波含量并优化开关频率。电压均衡则分为桥臂内、桥臂间和相间三个层次,分别采用动态排序、比例控制和零序电压注入等方法,确保系统稳定运行。文章还分享了多个实战经验,如低压调试、红外热像仪检测以及避免参数设置不当引发的问题。; 适合人群:从事电力电子领域,特别是参与STATCOM/SVG项目的设计、开发和调试的技术人员。; 使用场景及目标:①理解MMC型STATCOM/SVG的工作原理和技术细节;②掌握载波移相调制的具体实现方法;③学习电压均衡控制的各种策略及其应用场景;④获取实际调试过程中常见问题的解决方案。; 阅读建议:本文涉及大量技术细节和实战经验,建议读者结合实际项目进行阅读,重点关注载波移相调制和电压均衡控制的具体实现,并参考提供的代码片段进行实践。

    liangmmm_finalll.scdoc

    liangmmm_finalll.scdoc

Global site tag (gtag.js) - Google Analytics