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.mzph.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;情况将…