Spring MVC3 Hibernate CRUD示例應用程序

學習從HelloWorld應用程序開始的任何Web框架都是一個好主意。 一旦我們熟悉了框架配置,最好做一個CRUD(創建,讀取,更新,刪除)應用程序,該應用程序涵蓋Web框架的各個方面,例如驗證,請求URL映射,請求參數綁定,預填充表單等。 。

現在,我將解釋如何使用Spring MVC3,Hibernate和MySQL編寫簡單的CRUD應用程序。 我們的應用程序是ContactsManagements,您可以在其中查看或搜索聯系人,創建新聯系人,編輯或刪除現有聯系人。

步驟#1:創建聯系人表

CREATE TABLE  CONTACTS
(id int(10) unsigned NOT NULL AUTO_INCREMENT,name varchar(45) NOT NULL,address varchar(45) DEFAULT NULL,gender char(1) DEFAULT 'M',dob datetime DEFAULT NULL,email varchar(45) DEFAULT NULL,mobile varchar(15) DEFAULT NULL,phone varchar(15) DEFAULT NULL,PRIMARY KEY (id)
);

步驟2:將SpringMVC,Hibernate及其從屬jar復制到WEB-INF / lib文件夾中。 如果您使用的是Maven,則可以提及以下依賴項。

<dependencies><dependency><groupid>junit</groupid><artifactid>junit</artifactid><version>4.8.1</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-web</artifactid><version>3.0.5.RELEASE</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-core</artifactid><version>3.0.5.RELEASE</version><type>jar</type><scope>compile</scope><exclusions><exclusion><artifactid>commons-logging</artifactid><groupid>commons-logging</groupid></exclusion></exclusions></dependency><dependency><groupid>log4j</groupid><artifactid>log4j</artifactid><version>1.2.14</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-tx</artifactid><version>3.0.5.RELEASE</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>jstl</groupid><artifactid>jstl</artifactid><version>1.1.2</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>taglibs</groupid><artifactid>standard</artifactid><version>1.1.2</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-webmvc</artifactid><version>3.0.5.RELEASE</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-aop</artifactid><version>3.0.5.RELEASE</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>commons-digester</groupid><artifactid>commons-digester</artifactid><version>2.1</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>commons-collections</groupid><artifactid>commons-collections</artifactid><version>3.2.1</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.hibernate</groupid><artifactid>hibernate-core</artifactid><version>3.3.2.GA</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>javax.persistence</groupid><artifactid>persistence-api</artifactid><version>1.0</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>c3p0</groupid><artifactid>c3p0</artifactid><version>0.9.1.2</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.springframework</groupid><artifactid>spring-orm</artifactid><version>3.0.5.RELEASE</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.slf4j</groupid><artifactid>slf4j-api</artifactid><version>1.6.1</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.slf4j</groupid><artifactid>slf4j-log4j12</artifactid><version>1.6.1</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>cglib</groupid><artifactid>cglib-nodep</artifactid><version>2.2</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>org.hibernate</groupid><artifactid>hibernate-annotations</artifactid><version>3.4.0.GA</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>jboss</groupid><artifactid>javassist</artifactid><version>3.7.ga</version><type>jar</type><scope>compile</scope></dependency><dependency><groupid>mysql</groupid><artifactid>mysql-connector-java</artifactid><version>5.1.14</version><type>jar</type><scope>compile</scope></dependency></dependencies>

步驟#3:配置SpringMVC

a)在web.xml中配置DispatcherServlet

<servlet><servlet-name>dispatcher</servlet-name><servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class><load-on-startup>1</load-on-startup></servlet><servlet-mapping><servlet-name>dispatcher</servlet-name><url-pattern>*.do</url-pattern></servlet-mapping><listener><listener-class>org.springframework.web.context.ContextLoaderListener</listener-class></listener><context-param><param-name>contextConfigLocation</param-name><param-value>classpath:applicationContext.xml</param-value></context-param>

b)在WEB-INF / dispatcher-servlet.xml中配置View Resolver

<bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver" p:prefix="/jsp/" p:suffix=".jsp">
</bean>

c)在WEB-INF / classes / applicationContext.xml中配置注釋支持,PropertyPlaceHolderConfigurer,ResourceBundleMessageSource

<context:annotation-config></context:annotation-config><context:component-scan base-package="com.sivalabs"></context:component-scan><mvc:annotation-driven> </mvc:annotation-driven><context:property-placeholder location="classpath:config.properties"></context:property-placeholder><bean id="messageSource" class="org.springframework.context.support.ResourceBundleMessageSource" p:basename="Messages"></bean>

步驟#4:在config.properties中配置JDBC連接參數和Hibernate屬性

################### JDBC Configuration ##########################
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://localhost:3306/sivalabs
jdbc.username=root
jdbc.password=admin################### Hibernate Configuration ##########################
hibernate.dialect=org.hibernate.dialect.MySQLDialect
hibernate.show_sql=true
#hibernate.hbm2ddl.auto=update
hibernate.generate_statistics=true

步驟5:在WEB-INF / classes / applicationContext.xml中配置數據源,SessionFactory,TransactionManagement支持

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource" p:driverclassname="${jdbc.driverClassName}" p:url="${jdbc.url}" p:username="${jdbc.username}" p:password="${jdbc.password}">
</bean> <bean id="sessionFactory" class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean"><property name="dataSource" ref="dataSource"></property><property name="hibernateProperties"><props>       <prop key="hibernate.dialect">${hibernate.dialect}</prop>         <prop key="hibernate.show_sql">${hibernate.show_sql}</prop></props></property><property name="packagesToScan" value="com.sivalabs"></property>
</bean><bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager" p:sessionfactory-ref="sessionFactory">
</bean><tx:annotation-driven transaction-manager="transactionManager"></tx:annotation-driven>

步驟#6:在WEB-INF / classes / Messages.properties中配置標簽和錯誤消息

App.Title=SivaLabs
typeMismatch.java.util.Date={0} is Invalid Date.
dob=DOB

步驟#7:創建實體類Contact.java

package com.sivalabs.contacts;import java.util.Date;import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.Table;import org.apache.commons.lang.builder.ToStringBuilder;@Entity
@Table(name="CONTACTS")
public class Contact
{@Id@GeneratedValue(strategy = GenerationType.AUTO)private int id;@Column private String name;@Column private String address;@Column private String gender;@Column private Date dob;@Column private String email;@Column private String mobile;@Column private String phone;@Overridepublic String toString(){return ToStringBuilder.reflectionToString(this);}//setters & getters
}

步驟#8:創建在CONTACTS表上執行CRUD操作的ContactsDAO.java。

package com.sivalabs.contacts;import java.util.List;import org.hibernate.Criteria;
import org.hibernate.SessionFactory;
import org.hibernate.criterion.Restrictions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;@Repository
@Transactional
public class ContactsDAO
{@Autowiredprivate SessionFactory sessionFactory;public Contact getById(int id){return (Contact) sessionFactory.getCurrentSession().get(Contact.class, id);}@SuppressWarnings("unchecked")public List searchContacts(String name){Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Contact.class);criteria.add(Restrictions.ilike("name", name+"%"));return criteria.list();}@SuppressWarnings("unchecked")public List getAllContacts(){Criteria criteria = sessionFactory.getCurrentSession().createCriteria(Contact.class);return criteria.list();}public int save(Contact contact){return (Integer) sessionFactory.getCurrentSession().save(contact);}public void update(Contact contact){sessionFactory.getCurrentSession().merge(contact);}public void delete(int id){Contact c = getById(id);sessionFactory.getCurrentSession().delete(c);}
}

步驟#9:創建ContactFormValidator.java,它在保存/更新聯系人時執行驗證。

package com.sivalabs.contacts;import org.springframework.stereotype.Component;
import org.springframework.validation.Errors;
import org.springframework.validation.ValidationUtils;
import org.springframework.validation.Validator;@Component("contactFormValidator")
public class ContactFormValidator implements Validator
{@SuppressWarnings("unchecked")@Overridepublic boolean supports(Class clazz){return Contact.class.isAssignableFrom(clazz);}@Overridepublic void validate(Object model, Errors errors){ValidationUtils.rejectIfEmptyOrWhitespace(errors, "name","required.name", "Name is required.");}
}

步驟#10:創建處理所有CRUD請求的ContactsControllers.java。

package com.sivalabs.contacts;import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.List;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.propertyeditors.CustomDateEditor;
import org.springframework.stereotype.Controller;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.WebDataBinder;
import org.springframework.web.bind.annotation.InitBinder;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.support.SessionStatus;
import org.springframework.web.servlet.ModelAndView;@Controller
public class ContactsControllers
{@Autowiredprivate ContactsDAO contactsDAO;@Autowiredprivate ContactFormValidator validator;@InitBinderpublic void initBinder(WebDataBinder binder){SimpleDateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");dateFormat.setLenient(false);binder.registerCustomEditor(Date.class, new CustomDateEditor(dateFormat, true));}@RequestMapping("/searchContacts")public ModelAndView searchContacts(@RequestParam(required= false, defaultValue="") String name){ModelAndView mav = new ModelAndView("showContacts");List contacts = contactsDAO.searchContacts(name.trim());mav.addObject("SEARCH_CONTACTS_RESULTS_KEY", contacts);return mav;}@RequestMapping("/viewAllContacts")public ModelAndView getAllContacts(){ModelAndView mav = new ModelAndView("showContacts");List contacts = contactsDAO.getAllContacts();mav.addObject("SEARCH_CONTACTS_RESULTS_KEY", contacts);return mav;}@RequestMapping(value="/saveContact", method=RequestMethod.GET)public ModelAndView newuserForm(){ModelAndView mav = new ModelAndView("newContact");Contact contact = new Contact();mav.getModelMap().put("newContact", contact);return mav;}@RequestMapping(value="/saveContact", method=RequestMethod.POST)public String create(@ModelAttribute("newContact")Contact contact, BindingResult result, SessionStatus status){validator.validate(contact, result);if (result.hasErrors()){   return "newContact";}contactsDAO.save(contact);status.setComplete();return "redirect:viewAllContacts.do";}@RequestMapping(value="/updateContact", method=RequestMethod.GET)public ModelAndView edit(@RequestParam("id")Integer id){ModelAndView mav = new ModelAndView("editContact");Contact contact = contactsDAO.getById(id);mav.addObject("editContact", contact);return mav;}@RequestMapping(value="/updateContact", method=RequestMethod.POST)public String update(@ModelAttribute("editContact") Contact contact, BindingResult result, SessionStatus status){validator.validate(contact, result);if (result.hasErrors()) {return "editContact";}contactsDAO.update(contact);status.setComplete();return "redirect:viewAllContacts.do";}@RequestMapping("deleteContact")public ModelAndView delete(@RequestParam("id")Integer id){ModelAndView mav = new ModelAndView("redirect:viewAllContacts.do");contactsDAO.delete(id);return mav;}
}

步驟#11:與其在所有JSP中編寫JSTL標記庫描述,不如在一個JSP中聲明它們并將其包含在其他JSP中。

taglib_includes.jsp

<%@taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
<%@taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt"%><%@taglib uri="http://www.springframework.org/tags/form" prefix="form"%>
<%@taglib uri="http://www.springframework.org/tags" prefix="spring"%>

步驟#12:創建JSP。

a)showContacts.jsp

<%@include file="taglib_includes.jsp" %><html>
<head><title><spring:message code="App.Title"></spring:message> </title>
<script type="text/javascript" src="js/contacts.js"></script>
</head>
<body style="font-family: Arial; font-size:smaller;"><center><form action="searchContacts.do" method="post"><table style="border-collapse: collapse;" width="500" border="0" bordercolor="#006699"><tbody><tr>     <td>Enter Contact Name</td>      <td><input name="name" type="text"><input value="Search" type="submit"><input value="New Contact" onclick="javascript:go('saveContact.do');" type="button"></td></tr>
</tbody></table></form><c:if test="${empty SEARCH_CONTACTS_RESULTS_KEY}">
</c:if><c:if test="${! empty SEARCH_CONTACTS_RESULTS_KEY}">    <c:foreach var="contact" items="${SEARCH_CONTACTS_RESULTS_KEY}">
</c:foreach></c:if><table style="border-collapse: collapse;" width="500" border="1" bordercolor="#006699"><tbody><tr bgcolor="lightblue">    <th>Id</th>    <th>Name</th>       <th>Address</th>     <th>Mobile</th>    <th></th>   </tr>
<tr>    <td colspan="4">No Results found</td>   </tr><tr>     <td><c:out value="${contact.id}"></c:out></td>     <td><c:out value="${contact.name}"></c:out></td>     <td><c:out value="${contact.address}"></c:out> </td>     <td><c:out value="${contact.mobile}"></c:out></td>     <td><a href="updateContact.do?id=$%7Bcontact.id%7D">Edit</a><a href="javascript:deleteContact('deleteContact.do?id=${contact.id}');">Delete</a></td>    </tr></tbody></table></center></body>
</html>

b)newContact.jsp

<%@include file="taglib_includes.jsp" %><html>
<head><script type="text/javascript" src="js/contacts.js"></script><title><spring:message code="App.Title"></spring:message> </title>
</head>
<body style="font-family: Arial; font-size:smaller;"><table style="border-collapse: collapse;" width="750" align="center" bgcolor="lightblue" border="1" bordercolor="#006699" height="500"><tbody><tr>   <td align="center"><h3>Edit Contact Form</h3></td>  </tr>
<tr valign="top" align="center">     <td align="center"><form:form action="saveContact.do" method="post" commandname="newContact"><table style="border-collapse: collapse;" width="500" border="0" bordercolor="#006699" cellpadding="2" cellspacing="2"><tbody><tr>       <td width="100" align="right">Name</td>       <td width="150"><form:input path="name"></form:input></td>       <td align="left"><form:errors path="name" cssstyle="color:red"></form:errors></td>      </tr>
<tr>       <td width="100" align="right">DOB</td>       <td><form:input path="dob"></form:input></td>       <td align="left"><form:errors path="dob" cssstyle="color:red"></form:errors></td>      </tr>
<tr>       <td width="100" align="right">Gender</td>       <td>     <form:select path="gender"><form:option value="M" label="Male"><form:option value="F" label="Female"></form:option></form:option></form:select></td>       <td></td>            </tr>
<tr>       <td width="100" align="right">Address</td>       <td><form:input path="address"></form:input></td>       <td align="left"><form:errors path="address" cssstyle="color:red"></form:errors></td>      </tr>
<tr>       <td width="100" align="right">Email</td>       <td><form:input path="email"></form:input></td>       <td align="left"><form:errors path="email" cssstyle="color:red"></form:errors></td>      </tr>
<tr>       <td width="100" align="right">Mobile</td>       <td><form:input path="mobile"></form:input></td>       <td align="left"><form:errors path="mobile" cssstyle="color:red"></form:errors></td>      </tr>
<tr>       <td colspan="3" align="center"><input name="" value="Save" type="submit"><input name="" value="Reset" type="reset"><input value="Back" onclick="javascript:go('viewAllContacts.do');" type="button"></td>      </tr>
</tbody></table></form:form></td>       </tr>
</tbody></table></body>
</html>

a)editContact.jsp

<%@include file="taglib_includes.jsp" %><html>
<head><script type="text/javascript" src="js/contacts.js"></script><title><spring:message code="App.Title"></spring:message> </title>
</head>
<body style="font-family: Arial; font-size:smaller;"><table style="border-collapse: collapse;" width="750" align="center" bgcolor="lightblue" border="1" bordercolor="#006699" height="500"><tbody><tr>   <td align="center"><h3>Edit Contact Form</h3></td>  </tr>
<tr valign="top" align="center">     <td align="center"><form:form action="updateContact.do" method="post" commandname="editContact"><table style="border-collapse: collapse;" width="500" border="0" bordercolor="#006699" cellpadding="2" cellspacing="2"><tbody><tr>       <td width="100" align="right">Id</td>       <td width="150"><form:input path="id" readonly="true"></form:input></td>       <td align="left"><form:errors path="id" cssstyle="color:red"></form:errors></td>      </tr>
<tr>       <td width="100" align="right">Name</td>       <td><form:input path="name"></form:input></td>       <td align="left"><form:errors path="name" cssstyle="color:red"></form:errors></td>      </tr>
<tr>       <td width="100" align="right">DOB</td>       <td><form:input path="dob"></form:input></td>       <td align="left"><form:errors path="dob" cssstyle="color:red"></form:errors></td>      </tr>
<tr>       <td width="100" align="right">Gender</td>       <td>     <form:select path="gender"><form:option value="M" label="Male"><form:option value="F" label="Female"></form:option></form:option></form:select></td>       <td></td>            </tr>
<tr>       <td width="100" align="right">Address</td>       <td><form:input path="address"></form:input></td>       <td align="left"><form:errors path="address" cssstyle="color:red"></form:errors></td>      </tr>
<tr>       <td width="100" align="right">Email</td>       <td><form:input path="email"></form:input></td>       <td align="left"><form:errors path="email" cssstyle="color:red"></form:errors></td>      </tr>
<tr>       <td width="100" align="right">Mobile</td>       <td><form:input path="mobile"></form:input></td>       <td align="left"><form:errors path="mobile" cssstyle="color:red"></form:errors></td>      </tr>
<tr valign="bottom">       <td colspan="3" align="center"><input value="Delete" onclick="javascript:deleteContact('deleteContact.do?id=${editContact.id}');" type="button"><input name="" value="Save" type="submit">     <input value="Back" onclick="javascript:go('viewAllContacts.do');" type="button"></td>      </tr>
</tbody></table></form:form></td>       </tr>
</tbody></table></body>
</html>

步驟#13:編寫包含實用程序方法的javascript文件js / contacts.js

function go(url)
{window.location = url;
}function deleteContact(url)
{var isOK = confirm("Are you sure to delete?");if(isOK){go(url);}
}

步驟#14:歡迎文件index.jsp

<%
response.sendRedirect("viewAllContacts.do");
%>

步驟#15:啟動服務器,然后將瀏覽器URL指向http:// localhost:8080 / SpringMVCHibernate

參考:來自我們SivaLabs的 JCG合作伙伴 Siva的Spring MVC3 Hibernate CRUD示例應用程序 。

    相關文章:

    • Spring MVC開發–快速教程
    • Spring3 RESTful Web服務
    • 帶有Spring和Maven教程的JAX–WS
    • 使用Spring AspectJ和Maven進行面向方面的編程

    翻譯自: https://www.javacodegeeks.com/2011/04/spring-mvc3-hibernate-crud-sample.html

    本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
    如若轉載,請注明出處:http://www.pswp.cn/news/374734.shtml
    繁體地址,請注明出處:http://hk.pswp.cn/news/374734.shtml
    英文地址,請注明出處:http://en.pswp.cn/news/374734.shtml

    如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

    相關文章

    Linux Mint---ATI顯卡驅動安裝篇

    顯卡驅動可謂是至關重要&#xff0c;當時折騰debian驅動的時候可是弄了好幾天才搞定的&#xff0c;現在卻非常容易就是裝上&#xff0c; 詳見這篇博客&#xff1a;http://www.yyearth.com/article/14-03/amd13.html 在此表示感謝&#xff01; 我的話&#xff0c;全在圖形界面下…

    百度云推送的簡單集成

    1.在百度云推送的應用管理頁面&#xff0c;創建自己的應用&#xff0c;創建應用時&#xff0c;需要提供兩個證書&#xff0c;開發環境的推送證書和正式環境的推送證書。證書的格式是pem格式的&#xff0c;需要先在apple 開發者中心配置好推送證書&#xff0c;安裝到mac上&#…

    高級SmartGWT教程,第2部分

    這是我的教程的第二部分&#xff0c;有關使用SmartGWT快速進行UI開發。 在本教程的第一部分中 &#xff0c;我們創建了基本的界面布局并添加了一些基本組件。 現在是時候解決這個問題&#xff0c;并使用SmartGWT的真正功能了。 在繼續之前&#xff0c;讓我們記住到目前為止我們…

    有感而發,生活

    我們每一個人都是獨一無二的&#xff0c;當然我們每一個人的路子也是不盡相同的&#xff0c;不能因為一時的失意而放棄了自己兒時的夢想&#xff0c;路是一步一步走的&#xff0c;未來需要努力&#xff0c;我相信 我們每一個人都可以做到自己心中的樣子&#xff0c;安逸的生活是…

    力扣反轉字符串中的元音字母

    給你一個字符串 s &#xff0c;僅反轉字符串中的所有元音字母&#xff0c;并返回結果字符串。 元音字母包括 ‘a’、‘e’、‘i’、‘o’、‘u’&#xff0c;且可能以大小寫兩種形式出現。 代碼思路&#xff1a; 1.將字符串轉換為字符數組 2.設置碰撞指針&#xff0c;從兩頭尋…

    使用 SqlDataSource 插入、更新和刪除數據49

    簡介 正如在 數據插入、更新和刪除概述 中討論的那樣&#xff0c;GridView 控件提供內置的更新和刪除功能&#xff0c;而DetailsView 和 FormView 控件則包含對插入、編輯和刪除功能的支持。這些數據修改功能無需編寫任何代碼&#xff0c;可直接嵌入數據源控件。 數據插入、更新…

    Solaris是出色的Java開發平臺的原因

    幾天前&#xff0c;我發布了“ OpenSolaris的死亡&#xff1a;為Java開發人員選擇操作系統 ”&#xff0c;其中我說Solaris是Java開發人員的絕佳平臺。 這篇文章的重點只是想知道自OpenSolaris淘汰以來我將使用哪個Solaris版本。 正如Neil的評論使我意識到的那樣&#xff0c;該…

    python , angular js 學習記錄【2】

    1.不同scope之間的通信 &#xff08;1&#xff09;無父子關系的scope通信&#xff1a; 在需要操作的scope里面定義一個事件&#xff0c;名稱為delete_host&#xff0c;參數為data $rootScope.$on(delete_host, function(event,data) {angular.forEach($scope.hosts, function (…

    【轉】phpize學習

    為什么使用phpize? 比如剛開始安裝的時候使用 ./configure --prefix/usr/local/php7 --exec-prefix/usr/local/php7 --bindir/usr/local/php7/bin --sbindir/usr/local/php7/sbin --includedir/usr/local/php7/include --libdir/usr/local/php7/lib/php --mandir/usr/local/ph…

    GWT 2 Spring 3 JPA 2 Hibernate 3.5教程– Eclipse和Maven 2展示

    不久前&#xff0c;我的一個朋友和同事向我飛過&#xff0c;說“世界上只有一半在使用Maven ”。 當我意識到最受歡迎的文章&#xff08;到目前為止&#xff09; GWT 2 Spring 3 JPA 2 Hibernate 3.5 Tutorial提出了一種基于Google的Web Toolkit&#xff08; GWT &#xff09; …

    Android的WiFi開啟與關閉

    注意&#xff1a;要首先注冊開啟和關閉WiFi的權限&#xff0c; <?xml version"1.0" encoding"utf-8"?> <manifest xmlns:android"http://schemas.android.com/apk/res/android"package"com.wyl.wifi"android:versionCode&q…

    awk用法小結(作者總結)

    http://www.chinaunix.net/old_jh/24/691456.htmlhttp://wenku.baidu.com/view/ebac4fc658f5f61fb736664d.htmlawk 用法&#xff1a;awk pattern {action} 變量名 含義 ARGC 命令行變元個數 ARGV 命令行變元數組 FILENAME 當前輸入文件名 FNR 當前文件中的記錄號 FS 輸入域分…

    力扣盛最多水的容器

    給你 n 個非負整數 a1&#xff0c;a2&#xff0c;…&#xff0c;an&#xff0c;每個數代表坐標中的一個點 (i, ai) 。在坐標內畫 n 條垂直線&#xff0c;垂直線 i 的兩個端點分別為 (i, ai) 和 (i, 0) 。找出其中的兩條線&#xff0c;使得它們與 x 軸共同構成的容器可以容納最多…

    Java最佳實踐–多線程環境中的DateFormat

    這是有關使用Java編程語言時的擬議實踐的系列文章的第一篇。 所有討論的主題均基于用例&#xff0c;這些用例來自于電信行業的關鍵任務超高性能生產系統的開發。 在閱讀本文的每個部分之前&#xff0c;強烈建議您參考相關的Java API文檔以獲取詳細信息和代碼示例。 所有測試…

    IntentDemo

    Intent通信示例&#xff1a; 兩個Button&#xff0c;一個startBrowser, 一個startPhone. 其中&#xff0c;OnClickListener()是類View的一個interface&#xff0c;需要實現其中的onClick()函數。 startActivity()開啟另一個Activity&#xff0c;本示例中開啟Browser或Phone. In…

    JBoss 4.2.x Spring 3 JPA Hibernate教程

    在花了許多時間在網上搜索之后&#xff0c;嘗試找到對幾個項目使用Spring&#xff0c;JPA和Hibenate的最有效方法&#xff0c;我們得出了將在下面介紹的配置的結論。 將Spring與JPA和Hibernate集成包括幾個步驟&#xff1a; Spring容器的配置 JPA ORM層的配置 Hibernate Sec…

    力扣長度最小的子數組

    給定一個含有 n 個正整數的數組和一個正整數 target 。 找出該數組中滿足其和 ≥ target 的長度最小的 連續子數組 [numsl, numsl1, …, numsr-1, numsr] &#xff0c;并返回其長度。如果不存在符合條件的子數組&#xff0c;返回 0 方法一&#xff1a;移動窗口 設置兩個指針&…

    Yeelink:將復雜的傳感器以極簡的方式組到同一個網絡內

    Yeelink&#xff1a;將復雜的傳感器以極簡的方式組到同一個網絡內轉載于:https://www.cnblogs.com/qxql2016/p/4692629.html

    androidstudio新建項目中在布局文件中不顯示title的方法

    在androidstudio新建項目的時候&#xff0c;在布局文件里有時候會出現如下情況&#xff1a; 上面的標題欄非常礙眼&#xff0c;要想隱藏標題欄的話&#xff0c;可以在Manifest文件的theme標簽里進行配置&#xff0c;自定義一個theme&#xff0c;加上如下兩句。或者直接在當前th…

    OpenJDK作為Linux上的默認Java

    大家好&#xff0c; 最近&#xff0c;我收到了很多人的私人來信&#xff0c;他們對Linux的默認Java軟件包的更改感到困惑/擔心。 對于許多Linux發行版&#xff0c;Java的Sun / Oracle官方版本已打包為該平臺的默認Java。 但是&#xff0c;由于最近的許可更改&#xff0c;情況將…