﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-hyljava-随笔分类-Spring  MVＣ</title><link>http://www.blogjava.net/hyljava/category/53490.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 23 Mar 2017 20:58:53 GMT</lastBuildDate><pubDate>Thu, 23 Mar 2017 20:58:53 GMT</pubDate><ttl>60</ttl><item><title>解决SoapUI的Request URL不支持大写</title><link>http://www.blogjava.net/hyljava/archive/2017/03/23/soapui.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Thu, 23 Mar 2017 02:27:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2017/03/23/soapui.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/432397.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2017/03/23/soapui.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/432397.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/432397.html</trackback:ping><description><![CDATA[<span style="widows: 1; text-transform: none; background-color: rgb(245,245,245); text-indent: 0px; display: inline !important; font: 14px/20px 'Open Sans', 'Helvetica Neue', 'Hiragino Sans GB', sans-serif, Arial, Verdana, 'BitStream vera Sans', Tahoma, Helvetica, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-stroke-width: 0px">在SoapUI的Request URL中，每次输入的URL中含有的大写字母会自动转换为小写字母，导致请求不了</span>，<br /><span style="widows: 1; text-transform: none; background-color: rgb(245,245,245); text-indent: 0px; display: inline !important; font: 14px/20px 'open sans', 'helvetica neue', 'hiragino sans gb', sans-serif, arial, verdana, 'bitstream vera sans', tahoma, helvetica, sans-serif; white-space: normal; float: none; letter-spacing: normal; color: rgb(0,0,0); word-spacing: 0px; -webkit-text-stroke-width: 0px">这个问题在SoapUI&nbsp;5.1.2和5.2.1版本中都存在，具体的解决办法是在HTTP TestRequest Properties的属性中，在Endpoint中输入对应的含有大写字母的URL即可。<img border="0" alt="" src="http://www.blogjava.net/images/blogjava_net/hyljava/soapui.png" /><br /><br /><br /><br /></span><img src ="http://www.blogjava.net/hyljava/aggbug/432397.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2017-03-23 10:27 <a href="http://www.blogjava.net/hyljava/archive/2017/03/23/soapui.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring MVC使用动态代理实现事务控制</title><link>http://www.blogjava.net/hyljava/archive/2013/04/19/398073.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Fri, 19 Apr 2013 02:56:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/04/19/398073.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/398073.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/04/19/398073.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/398073.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/398073.html</trackback:ping><description><![CDATA[<div><div><div style="text-align: center; ">Spring MVC使用动态代理实现事务控制</div>applicationContext.xml文件中配置</div><br />&lt;?xml version="1.0" encoding="UTF-8"?&gt;</div><div>&lt;beans xmlns="http://www.springframework.org/schema/beans"</div><div><span style="white-space:pre">	</span>xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"</div><div><span style="white-space:pre">	</span>xmlns:jdbc="http://www.springframework.org/schema/jdbc" xmlns:jee="http://www.springframework.org/schema/jee"</div><div><span style="white-space:pre">	</span>xmlns:tx="http://www.springframework.org/schema/tx" xmlns:jpa="http://www.springframework.org/schema/data/jpa"</div><div><span style="white-space:pre">	</span>xsi:schemaLocation="</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd</div><div><span style="white-space:pre">		</span>http://www.springframework.org/schema/data/jpa http://www.springframework.org/schema/data/jpa/spring-jpa.xsd"</div><div><span style="white-space:pre">	</span>default-lazy-init="true"&gt;</div><div><span style="white-space:pre">	</span>&lt;!--</div><div><span style="white-space:pre">		</span>spring在启动的时候，会默认加载会默认加载整个对象实例图，从初始化ACTION配置、到</div><div><span style="white-space:pre">		</span>service配置到dao配置、乃至到数据库连接、事务等等。这样可以减少web服务器在运行时的负担，但是对于开发者来说无疑是效率极低的一个设置了。</div><div></div><div><span style="white-space:pre">		</span>还好，spring提供了default-lazy-init属性，其配置形式如下，applicationContext.xml中： &lt;</div><div><span style="white-space:pre">		</span>beans default-lazy-init ="true" &gt; &lt; bean class ="org.xxxx.bean" &gt;</div><div></div><div><span style="white-space:pre">		</span>。。。。。。 &lt;/beans&gt;</div><div></div><div><span style="white-space:pre">		</span>spring配置默认default-lazy-init为false，当配置为true时sping不会再去加载整个对象实例图，大大减少了初始化的时间，减少了spring的启动速度。</div><div></div><div><span style="white-space:pre">		</span>这样做只是为了在开发过程中节约启动时间，在部署到实际环境中，倒是没必要设置default-lazy-init为true。毕竟部署到实际环境中不是经常的事，每次启动1分钟倒不是大问题，而且可以提高服务器效率。</div><div></div><div><span style="white-space:pre">		</span>当然，也不是所有的beans都能设置default-lazy-init成为true.对于scheduler的bean不能用lazy-init</div><div></div><div><span style="white-space:pre">		</span>&lt; beans default-lazy-init ="true" &gt; &lt; bean class</div><div><span style="white-space:pre">		</span>="org.springframework.scheduling.quartz.SchedulerFactoryBean" &gt; &lt;</div><div><span style="white-space:pre">		</span>property name ="triggers" &gt; &lt; list &gt; &lt; ref bean ="buildHtmlTrigger" /&gt;</div><div><span style="white-space:pre">		</span>&lt; ref bean ="askTrigger" /&gt; &lt; ref bean ="mailSenderTrigger" /&gt; &lt; ref</div><div><span style="white-space:pre">		</span>bean ="topicDetailBuildTrigger" /&gt; &lt; ref bean ="forumBuildTrigger" /&gt;</div><div><span style="white-space:pre">		</span>&lt; ref bean ="topicBuildTrigger" /&gt; &lt;/ list &gt; &lt;/ property &gt; &lt;/ bean &gt;</div><div><span style="white-space:pre">		</span>&lt;/ beans &gt; 这样的话。所有的scheduler就都不管用了。所以请大家要注意。</div><div><span style="white-space:pre">	</span>--&gt;</div><div>&nbsp;</div><div></div><div><span style="white-space:pre">	</span>&lt;!-- 使用annotation 自动注册bean, 并保证@Required、@Autowired的属性被注入 --&gt;</div><div><span style="white-space:pre">	</span>&lt;context:component-scan base-package="com.edufe"&gt;</div><div><span style="white-space:pre">		</span>&lt;context:exclude-filter type="annotation"</div><div><span style="white-space:pre">			</span>expression="org.springframework.stereotype.Controller" /&gt;</div><div><span style="white-space:pre">	</span>&lt;/context:component-scan&gt;</div><div></div><div></div><div><span style="white-space:pre">	</span>&lt;context:property-placeholder</div><div><span style="white-space:pre">		</span>ignore-resource-not-found="true"</div><div><span style="white-space:pre">		</span>location="classpath*:/application.properties,</div><div>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="white-space:pre">			</span> &nbsp;classpath*:/application.development.properties" /&gt;</div><div></div><div><span style="white-space:pre">	</span>&lt;!-- 创建数据源 --&gt;</div><div><span style="white-space:pre">	</span>&lt;bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"</div><div><span style="white-space:pre">		</span>destroy-method="close"&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="driverClassName" value="${jdbc.driver}" /&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="url" value="${jdbc.url}" /&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="username" value="${jdbc.username}" /&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="password" value="${jdbc.password}" /&gt;</div><div><span style="white-space:pre">	</span>&lt;/bean&gt;</div><div></div><div><span style="white-space:pre">	</span>&lt;!-- 使用嵌入式数据库H2 --&gt;</div><div><span style="white-space:pre">	</span>&lt;!--</div><div><span style="white-space:pre">		</span>&lt;jdbc:embedded-database id="dataSource" type="H2"&gt; &lt;jdbc:script</div><div><span style="white-space:pre">		</span>location="classpath:sql/h2/schema.sql" /&gt; &lt;jdbc:script</div><div><span style="white-space:pre">		</span>location="classpath:sql/h2/import-data.sql" /&gt;</div><div><span style="white-space:pre">		</span>&lt;/jdbc:embedded-database&gt;</div><div><span style="white-space:pre">	</span>--&gt;</div><div></div><div><span style="white-space:pre">	</span>&lt;!-- 创建jdbcTemplate对象 --&gt;</div><div><span style="white-space:pre">	</span>&lt;bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate"&gt;</div><div><span style="white-space:pre">		</span>&lt;property name="dataSource" ref="dataSource" /&gt;</div><div><span style="white-space:pre">	</span>&lt;/bean&gt;</div><div></div><div></div><div></div><div><span style="white-space:pre">	</span>&lt;!-- 在容器文件中配置bean（service，dao，domain，action，数据源）， --&gt;</div><div><span style="white-space:pre">	</span>&lt;!--</div><div><span style="white-space:pre">		</span>bean的作用是， 当我们spring框架加载的时候，spring就会自动创建一个bean，并放入内存 即产生UserService</div><div><span style="white-space:pre">		</span>user=new UserService(); user.setName("张三");</div><div><span style="white-space:pre">	</span>--&gt;</div><div><span style="white-space:pre">	</span>&lt;!--</div><div><span style="white-space:pre">		</span>&lt;bean id="userService" class=""&gt; 这里就体现出了注入的概念 &lt;property name="name"&gt;</div><div><span style="white-space:pre">		</span>&lt;value&gt;张三&lt;/value&gt; &lt;/property&gt; 在UserService中引用ByeService的对象ref是个引用</div><div><span style="white-space:pre">		</span>&lt;property name="byeS" ref="byeService" /&gt; &lt;/bean&gt;</div><div><span style="white-space:pre">	</span>--&gt;</div><div>&nbsp;</div><div>&nbsp;</div><div><span style="white-space:pre">	</span>&lt;!-- 处理事务 --&gt;</div><div><span style="white-space:pre">	</span>&lt;!-- 生成一个事务管理对象 --&gt;</div><div><span style="white-space:pre">	</span>&lt;bean id="transactionManager"</div><div><span style="white-space:pre">		</span>class="org.springframework.jdbc.datasource.DataSourceTransactionManager"&gt;</div><div><span style="white-space:pre">		</span>&lt;constructor-arg index="0" ref="dataSource"&gt;</div><div><span style="white-space:pre">		</span>&lt;/constructor-arg&gt;</div><div><span style="white-space:pre">	</span>&lt;/bean&gt;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>&lt;!-- 生成默认事务定义对象 --&gt;</div><div><span style="white-space:pre">	</span>&lt;bean id="def" class="org.springframework.transaction.support.DefaultTransactionDefinition"&gt;&lt;/bean&gt;</div><div>&nbsp;</div><div></div><div></div><div>&lt;/beans&gt;<br /><br />在dao中<br /><div><span style="white-space:pre">	</span>@Autowired</div><div><span style="white-space:pre">	</span>private DataSourceTransactionManager transactionManager;</div><div><span style="white-space:pre">	</span>@Autowired</div><div><span style="white-space:pre">	</span>private DefaultTransactionDefinition def;<br /><div>public int excuteTrac() {</div><div><span style="white-space:pre">		</span>int temp = 0;</div><div></div><div><span style="white-space:pre">		</span>// 批插入</div><div><span style="white-space:pre">		</span>String sql1[] = new String[4];</div><div><span style="white-space:pre">		</span>// 向第一个表插入的语句</div><div><span style="white-space:pre">		</span>sql1[0] = "insert into usermbo( ID, USERNAME, age) values('122','22','22')";</div><div><span style="white-space:pre">		</span>sql1[1] = "insert into usermbo( ID, USERNAME, age) values('133','33','33')";</div><div><span style="white-space:pre">		</span>sql1[2] = "insert into usermbo( ID, USERNAME, age) values('144','44','33')";</div><div><span style="white-space:pre">		</span>sql1[3] = "insert into usermbo( ID, USERNAME, age) values('155','55','33')";</div><div></div><div><span style="white-space:pre">		</span>String[] sql2 = new String[3];</div><div><span style="white-space:pre">		</span>// 向第二个表插入的语句</div><div><span style="white-space:pre">		</span>sql2[0] = "insert into address (NO, NAME) values('33','33')";</div><div><span style="white-space:pre">		</span>// 此条数据是错误数据 插入会出现异常</div><div><span style="white-space:pre">		</span>sql2[1] = "insert into address (NO, NAME) &nbsp;values('eee','44')";</div><div><span style="white-space:pre">		</span>sql2[2] = "insert into address (NO, NAME) &nbsp;values('144','44')";</div><div>&nbsp;</div><div><span style="white-space:pre">		</span>TransactionStatus status = transactionManager.getTransaction(def);</div><div></div><div><span style="white-space:pre">		</span>try {</div><div><span style="white-space:pre">			</span>int[] a = jdbcTemplate.batchUpdate(sql1);</div><div><span style="white-space:pre">			</span>int[] b = jdbcTemplate.batchUpdate(sql2);</div><div><span style="white-space:pre">			</span>try {</div><div><span style="white-space:pre">				</span>transactionManager.commit(status);</div><div><span style="white-space:pre">			</span>} catch (Exception e) {</div><div><span style="white-space:pre">				</span> System.out.println("事务提交异常");</div><div><span style="white-space:pre">			</span>}</div><div></div><div><span style="white-space:pre">		</span>} catch (Exception ex) {</div><div><span style="white-space:pre">			</span> System.out.println("出现事务异常");</div><div><span style="white-space:pre">			</span>try {</div><div><span style="white-space:pre">				</span>transactionManager.rollback(status);</div><div><span style="white-space:pre">			</span>} catch (IllegalTransactionStateException e) {</div><div></div><div><span style="white-space:pre">				</span> System.out.println("回滚数据异常");</div><div><span style="white-space:pre">			</span>}</div><div><span style="white-space:pre">			</span>temp = -1;</div><div><span style="white-space:pre">		</span>}</div><div><span style="white-space:pre">		</span>return temp;</div><div><span style="white-space:pre">	</span>}</div></div></div><img src ="http://www.blogjava.net/hyljava/aggbug/398073.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-04-19 10:56 <a href="http://www.blogjava.net/hyljava/archive/2013/04/19/398073.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SpringMVC做二级联动</title><link>http://www.blogjava.net/hyljava/archive/2013/04/12/397747.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Fri, 12 Apr 2013 07:30:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/04/12/397747.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/397747.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/04/12/397747.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/397747.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/397747.html</trackback:ping><description><![CDATA[<div>&lt;select id="myCol" onchange="getChange()"&gt;</div><div><span style="white-space:pre">				</span>&lt;option value="1"&gt;</div><div><span style="white-space:pre">					</span>大连交大</div><div><span style="white-space:pre">				</span>&lt;/option&gt;</div><div><span style="white-space:pre">				</span>&lt;option value="2"&gt;</div><div><span style="white-space:pre">					</span>东北财经</div><div><span style="white-space:pre">				</span>&lt;/option&gt;</div><div><span style="white-space:pre">				</span>&lt;option value="3"&gt;</div><div><span style="white-space:pre">					</span>大连海事</div><div><span style="white-space:pre">				</span>&lt;/option&gt;</div><div>&lt;/select&gt;</div><div></div><div>&lt;select id="myGet"&gt;</div><div></div><div>&lt;/select&gt;<br /><br /><br /><div>&lt;script type="text/javascript" &nbsp;&gt;</div><div>function getChange() {</div><div><span style="white-space:pre">	</span>//获取到第一个select表单value值</div><div><span style="white-space:pre">	</span>var myCol = document.getElementById("myCol").value;</div><div>&nbsp;<span style="white-space:pre">	</span>//拼接成要获取值的url<span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>var url = "getCateGory?myCol=" + myCol; //url &nbsp;</div><div><span style="white-space:pre">	</span> //利用jquery的ajax方法，使用此方法要引jquery包</div><div><span style="white-space:pre">	</span>htmlobj = $.ajax( {</div><div><span style="white-space:pre">		</span>url : url,</div><div><span style="white-space:pre">		</span>async : false</div><div><span style="white-space:pre">	</span>});</div><div><span style="white-space:pre">	</span>//此处利用json处理值，还需要引json包，在服务器端可以使用GSON转化数据，响应当前页面</div><div><span style="white-space:pre">	</span>/*服务器端：</div><div><span style="white-space:pre">		</span>//需要引GSON包</div><div><span style="white-space:pre">	</span> &nbsp; //创建一个Gson对象</div><div><span style="white-space:pre">		</span>Gson gson = new Gson();</div><div><span style="white-space:pre">		</span>//返回一个json格式的字符串&nbsp;</div><div><span style="white-space:pre">	</span> <span style="white-space:pre">	</span>String pStr = gson.toJson(user);</div><div>&nbsp; &nbsp; &nbsp; <span style="white-space:pre">	</span>System.out.println(pStr);</div><div><span style="white-space:pre">		</span> out.print(pStr);</div><div><span style="white-space:pre">	</span>*/</div><div><span style="white-space:pre">	</span>//接取响应值，并且转化成JSON对象</div><div><span style="white-space:pre">	</span>var obj = JSON.parse(htmlobj.responseText);</div><div><span style="white-space:pre">	</span> //此变量是为拼接而做</div><div><span style="white-space:pre">	</span>var options = "";</div><div><span style="white-space:pre">	</span>var myGet = document.getElementById("myGet");</div><div></div><div><span style="white-space:pre">	</span>//myGet.removeChild("option");</div><div><span style="white-space:pre">	</span>//删除现有option节点</div><div><span style="white-space:pre">	</span>for ( var i = 1; i &lt;= myGet.length; i++) {</div><div><span style="white-space:pre">		</span>myGet.remove(i);</div><div><span style="white-space:pre">	</span>}</div><div><span style="white-space:pre">	</span>myGet.remove(myGet.selectedIndex);</div><div>&nbsp; &nbsp;//利用循环，在此将新的option添加上</div><div>&nbsp; &nbsp;for(var i=0;i&lt;obj.length;i++){</div><div>&nbsp;<span style="white-space:pre">	</span> alert(obj[i].uUserName);</div><div>&nbsp; &nbsp; &nbsp;var myOption=document.createElement("option");</div><div>&nbsp;<span style="white-space:pre">	</span>myOption.setAttribute("value",obj[i].uId);</div><div>&nbsp;<span style="white-space:pre">	</span>var testN=document.createTextNode(obj[i].uUserName);</div><div><span style="white-space:pre">	</span> myOption.appendChild(testN);</div><div>&nbsp;<span style="white-space:pre">	</span> myGet.appendChild(myOption);</div><div>&nbsp;&nbsp;</div><div>&nbsp;//此种方法最简单，但是没有技术含量</div><div>&nbsp;//options+="&lt;option value='"+obj[i].uId+"'&gt;"+obj[i].uUserName+"&lt;/option&gt;";</div><div></div><div>&nbsp;}</div><div>// myGet.innerHTML=options;</div><div>&nbsp;&nbsp;</div><div>}</div><div></div><div></div><div>&lt;/script&gt;</div></div><img src ="http://www.blogjava.net/hyljava/aggbug/397747.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-04-12 15:30 <a href="http://www.blogjava.net/hyljava/archive/2013/04/12/397747.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Spring MVC级联查询（用户与地址之间关系）</title><link>http://www.blogjava.net/hyljava/archive/2013/04/12/397741.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Fri, 12 Apr 2013 05:10:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/04/12/397741.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/397741.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/04/12/397741.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/397741.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/397741.html</trackback:ping><description><![CDATA[&nbsp;这里的级联查询仿照Hibernate中的一对多关系映射，写个例子留个笔记<br />（地址表主表，用户表从表）<br />用户表（类）User<br />成员变量如下，并且对应有get和set方法<br /><div>&nbsp; &nbsp; &nbsp; &nbsp; private String uId;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>private String uUserName;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>private String uPassWord;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>private String uTelephone;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>private int uAge;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>private Date uBirthday;<br />对应的表如下：</div><div><span style="white-space: pre;">&nbsp;     <img src="http://www.blogjava.net/images/blogjava_net/hyljava/user50.png" width="463" height="68" alt="" /></span></div>地址表（类）Address成员变量如下：<br /><div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private int no;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>private String name;</div><div><span style="white-space:pre">	</span></div><div><span style="white-space:pre">	</span>private List&lt;User&gt; userList;<br /><img src="http://www.blogjava.net/images/blogjava_net/hyljava/address239.png" width="176" height="69" alt="" /><br /><br />对应的UserDao中先写：<br /><div><span style="white-space:pre">	</span>public List&lt;User&gt; findByAddressId(int a){</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>String sql="select * from usermbo where address=?";</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>List&lt;User&gt; users = new &nbsp;ArrayList&lt;User&gt;();</div><div><span style="white-space:pre">		</span>Object[] params=new Object[]{a};</div><div><span style="white-space:pre">		</span>users = jdbcTemplate.query(sql,params, new UserRowMapper() );</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>return users;</div><div><span style="white-space:pre">	</span>}<br /><br /><div><span style="white-space:pre">	</span>private class UserRowMapper implements ParameterizedRowMapper&lt;User&gt;{</div><div></div><div><span style="white-space:pre">		</span>public User mapRow(ResultSet rs, int rowNum) throws SQLException {</div><div><span style="white-space:pre">			</span>User user = new User();</div><div><span style="white-space:pre">			</span>user.setuUserName(rs.getString("username"));</div><div><span style="white-space:pre">			</span>user.setuAge(rs.getInt("age"));</div><div><span style="white-space:pre">			</span>user.setuId(rs.getInt("id")+"");</div><div><span style="white-space:pre">			</span>user.setuTelephone(rs.getString("telephone"));</div><div><span style="white-space:pre">			</span>return user;</div><div><span style="white-space:pre">		</span>}</div><div></div><div><span style="white-space:pre">	</span>}<br /><br />此部完成以后，再写AddressDao<br /><br /><div><span style="white-space:pre">	</span>@Autowired</div><div><span style="white-space:pre">	</span>private UserDao userDao ;<br /><br /><br /><div><span style="white-space:pre">	</span>public List&lt;Address&gt; getAddress(){</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>String sql="select * from address";</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>List&lt;Address&gt; addresss = new &nbsp;ArrayList&lt;Address&gt;();</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>addresss = jdbcTemplate.query(sql, new AddressRowMapper() );</div><div><span style="white-space:pre">		</span></div><div><span style="white-space:pre">		</span>return addresss;</div><div><span style="white-space:pre">	</span>}<br /><div><span style="white-space:pre">	</span>private class AddressRowMapper implements ParameterizedRowMapper&lt;Address&gt;{</div><div></div><div><span style="white-space:pre">		</span>public Address mapRow(ResultSet rs, int rowNum) throws SQLException {</div><div><span style="white-space:pre">			</span>Address address=new Address( );</div><div><span style="white-space:pre">			</span>address.setNo(rs.getInt("no"));</div><div><span style="white-space:pre">			</span>address.setName(rs.getString("name"));</div><div>&nbsp;<span style="white-space:pre">	</span> &nbsp; &nbsp; &nbsp; &nbsp;address.setUserList( userDao.findByAddressId(rs.getInt("no")));</div><div><span style="white-space:pre">			</span>return address;</div><div><span style="white-space:pre">		</span>}</div><div></div><div><span style="white-space:pre">	</span>}<br />Service层再配一下（此层不配也行直接将<br />@Autowired<br /><span style="white-space: pre;">	</span>private AddressDao addressDao ;引入Controllar中即可）<br />在Controllar中再写<br /><div>addressService.getAddress()就可以查出结果</div></div></div><div><span style="white-space: pre;">	</span><div>&nbsp;[Address&nbsp;[name=计算力,&nbsp;no=1,&nbsp;userList=[User&nbsp;[uAddress=null,&nbsp;uAge=12,&nbsp;uBirthday=null,&nbsp;uId=11,&nbsp;uPassWord=null,&nbsp;uTelephone=1234567,&nbsp;uUserName=张三]]],&nbsp;Address&nbsp;[name=大连,&nbsp;no=2,&nbsp;userList=[]],&nbsp;Address&nbsp;[name=海南,&nbsp;no=3,&nbsp;userList=[User&nbsp;[uAddress=null,&nbsp;uAge=34,&nbsp;uBirthday=null,&nbsp;uId=12,&nbsp;uPassWord=null,&nbsp;uTelephone=2323232323,&nbsp;uUserName=李四],&nbsp;User&nbsp;[uAddress=null,&nbsp;uAge=33,&nbsp;uBirthday=null,&nbsp;uId=13,&nbsp;uPassWord=null,&nbsp;uTelephone=2323,&nbsp;uUserName=王武]]]]&nbsp;</div></div></div></div></div></div><img src ="http://www.blogjava.net/hyljava/aggbug/397741.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-04-12 13:10 <a href="http://www.blogjava.net/hyljava/archive/2013/04/12/397741.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>SPRING-MVC访问静态文件,如jpg,js,css</title><link>http://www.blogjava.net/hyljava/archive/2013/04/09/397580.html</link><dc:creator>何云隆</dc:creator><author>何云隆</author><pubDate>Tue, 09 Apr 2013 06:48:00 GMT</pubDate><guid>http://www.blogjava.net/hyljava/archive/2013/04/09/397580.html</guid><wfw:comment>http://www.blogjava.net/hyljava/comments/397580.html</wfw:comment><comments>http://www.blogjava.net/hyljava/archive/2013/04/09/397580.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/hyljava/comments/commentRss/397580.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/hyljava/services/trackbacks/397580.html</trackback:ping><description><![CDATA[<div clearfix"="" style="zoom: 1; color: #454545; font-family: tahoma, helvetica, arial; font-size: 12px; line-height: normal;"><h2>SPRING-MVC访问静态文件,如jpg,js,css<br /><br /></h2></div><div id="content" mod-cs-content="" text-content=""  clearfix"="" style="zoom: 1; width: 758px; overflow: hidden; line-height: 1.5; margin: 7px 0px 10px; color: #454545; font-family: tahoma, helvetica, arial;"><p style="margin: 0px; padding: 0px;"></p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">如何你的DispatcherServlet拦截 *.do这样的URL，就不存在访问不到静态资源的问题。如果你的DispatcherServlet拦截&#8220;/&#8221;，拦截了所有的请求，同时对*.js,*.jpg的访问也就被拦截了。</p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">目的：可以正常访问静态文件，不要找不到静态文件报404。<br />&nbsp;<br />方案一：激活Tomcat的defaultServlet来处理静态文件<br /></p>Xml代码 &nbsp;<a style="text-decoration: underline; color: #f06d99;"><img src="http://elf8848.iteye.com/images/icon_star.png" style="border: 0px; margin-bottom: 8px; clear: both; max-width: 758px; vertical-align: top;"  alt="" /></a>&lt;servlet-mapping&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;default&lt;/servlet-name&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;*.jpg&lt;/url-pattern&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet-mapping&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-mapping&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;default&lt;/servlet-name&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;*.js&lt;/url-pattern&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet-mapping&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-mapping&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;servlet-name&gt;default&lt;/servlet-name&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;url-pattern&gt;*.css&lt;/url-pattern&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/servlet-mapping&gt;&nbsp;&nbsp;&nbsp;&nbsp;要配置多个，每种文件配置一个&nbsp;&nbsp;&nbsp;<p style="margin: 0px; padding: 0px;">要写在DispatcherServlet的前面， 让defaultServlet先拦截，这个就不会进入Spring了，我想性能是最好的吧。</p><p style="margin: 0px; padding: 0px;"><br /></p><p style="margin: 0px; padding: 0px;">Tomcat, Jetty, JBoss, and GlassFish&nbsp; 默认 Servlet的名字 -- "default"<br />Google App Engine 默认 Servlet的名字 -- "_ah_default"<br />Resin 默认 Servlet的名字 -- "resin-file"<br />WebLogic 默认 Servlet的名字&nbsp; -- "FileServlet"<br />WebSphere&nbsp; 默认 Servlet的名字 -- "SimpleFileServlet"&nbsp;</p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;"><br />方案二： 在spring3.0.4以后版本提供了mvc:resources&nbsp;<br />mvc:resources 的使用方法：<br /></p>Xml代码 &nbsp;<a style="text-decoration: underline; color: #f06d99;"><img src="http://elf8848.iteye.com/images/icon_star.png" style="border: 0px; margin-bottom: 8px; clear: both; max-width: 758px; vertical-align: top;"  alt="" /></a>&lt;!--&nbsp;对静态资源文件的访问&nbsp;--&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;mvc:resources&nbsp;mapping="/images/**"&nbsp;location="/images/"&nbsp;/&gt;&nbsp;&nbsp;<p style="margin: 0px; padding: 0px;">&nbsp;&nbsp;<br />/images/**映射到 ResourceHttpRequestHandler进行处理，location指定静态资源的位置.可以是web application根目录下、jar包里面，这样可以把静态资源压缩到jar包中。cache-period 可以使得静态资源进行web cache&nbsp;<br />&nbsp;<br />如果出现下面的错误，可能是没有配置&lt;mvc:annotation-driven /&gt;的原因。&nbsp;<br />报错WARNING: No mapping found for HTTP request with URI [/mvc/user/findUser/lisi/770] in DispatcherServlet with name 'springMVC'<br /></p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">使用&lt;mvc:resources/&gt;元素,把mapping的URI注册到SimpleUrlHandlerMapping的urlMap中,<br />key为mapping的URI pattern值,而value为ResourceHttpRequestHandler,<br />这样就巧妙的把对静态资源的访问由HandlerMapping转到ResourceHttpRequestHandler处理并返回,所以就支持classpath目录,jar包内静态资源的访问.<br />另外需要注意的一点是,不要对SimpleUrlHandlerMapping设置defaultHandler.因为对static uri的defaultHandler就是ResourceHttpRequestHandler,<br />否则无法处理static resources request.</p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">方案三 ，使用&lt;mvc:default-servlet-handler/&gt;</p>Xml代码 &nbsp;<a style="text-decoration: underline; color: #f06d99;"><img src="http://elf8848.iteye.com/images/icon_star.png" style="border: 0px; margin-bottom: 8px; clear: both; max-width: 758px; vertical-align: top;"  alt="" /></a>&lt;mvc:default-servlet-handler/&gt;&nbsp;&nbsp;<p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">会把"/**" url,注册到SimpleUrlHandlerMapping的urlMap中,把对静态资源的访问由HandlerMapping转到 org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler 处理并返回.<br />DefaultServletHttpRequestHandler使用就是各个Servlet容器自己的默认Servlet.</p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">补充说明：多个HandlerMapping的执行顺序问题：</p><p style="margin: 0px; padding: 0px;">DefaultAnnotationHandlerMapping的order属性值是：0<br /><br />&lt;mvc:resources/&nbsp;&gt;自动注册的&nbsp;SimpleUrlHandlerMapping的order属性值是：&nbsp;2147483646</p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">&lt;mvc:default-servlet-handler/&gt;自动注册的SimpleUrlHandlerMapping的order属性值是：2147483647</p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">spring会先执行order值比较小的。当访问一个a.jpg图片文件时，先通过DefaultAnnotationHandlerMapping&nbsp;来找处理器，一定是找不到的，我们没有叫a.jpg的Action。再按order值升序找，由于最后一个SimpleUrlHandlerMapping&nbsp;是匹配"/**"的，所以一定会匹配上，再响应图片。</p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">访问一个图片，还要走层层匹配。真不知性能如何？改天做一下压力测试，与Apache比一比。</p><p style="margin: 0px; padding: 0px;">&nbsp;</p><p style="margin: 0px; padding: 0px;">最后再说明一下，如何你的DispatcherServlet拦截 *.do这样的URL，就不存上述问题了。<br /><h2><br />转载至：<span style="font-size: 12px;">http://hi.baidu.com/blueskyfaith/item/a47483a91d5cfce015329b98</span></h2></p></div><img src ="http://www.blogjava.net/hyljava/aggbug/397580.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/hyljava/" target="_blank">何云隆</a> 2013-04-09 14:48 <a href="http://www.blogjava.net/hyljava/archive/2013/04/09/397580.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>