程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> JSP編程 >> 關於JSP >> 一道Struts面試題

一道Struts面試題

編輯:關於JSP

  題目是這樣的 有兩張表  一張為新聞類別表  有2個字段:    nid(pk)         sort      有一張新聞內容表    有三個字段    cid(pk)       nid(fk)     title     content    要求通過下拉列表框的方法選擇新聞類別然後顯示該類別的新聞標題(在當前頁中顯示)  我是用Struts2+Hibernate3.2+JPA實現的. 數據庫腳本:  create database if not exists news; drop table if exists newssort; create table newssort  (   nid int primary key AUTO_INCREMENT,   sort varchar(50) );   drop table if exists news; create table news (   cid int primary key AUTO_INCREMENT,   title varchar(50) not null,   content varchar(500) not null,   nid  int null );   insert into newssort values(null,'娛樂'); insert into newssort values(null,'時事');   insert into news values(null,'好事','好事連連哈哈',1); insert into news values(null,'壞事','壞事不斷',1); insert into news values(null,'愛情是什麼','愛情是什麼啊,還沒知道呢',2); insert into  news values(null,'什麼啊','測試內容',2);   select * from news; select * from newssort;   兩個VO類: News.java: package com.vo;   import java.io.Serializable;   import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.Table;   @SuppressWarnings("serial") @Entity @Table(name="news") public class News implements Serializable {     private Integer cid;     private String title;     private String content;     @Id     @GeneratedValue(strategy=GenerationType.AUTO)     public Integer getCid()     {         return cid;     }       public void setCid(Integer cid)     {         this.cid = cid;     }       public String getTitle()     {         return title;     }       public void setTitle(String title)     {         this.title = title;     }       public String getContent()     {         return content;     }       public void setContent(String content)     {         this.content = content;     } }   Newssort.java: package com.vo;   import java.io.Serializable; import java.util.ArrayList; import java.util.List;   import javax.persistence.Entity; import javax.persistence.GeneratedValue; import javax.persistence.GenerationType; import javax.persistence.Id; import javax.persistence.JoinColumn; import javax.persistence.OneToMany; import javax.persistence.Table;   import org.hibernate.annotations.LazyCollection; import org.hibernate.annotations.LazyCollectionOption;   @SuppressWarnings("serial") @Entity @Table(name = "newssort") public class Newssort implements Serializable {     private Integer nid;     private String sort;     private List<News> news = new ArrayList<News>();     @OneToMany     @JoinColumn(name="nid")     @LazyCollection(LazyCollectionOption.FALSE)     public List<News> getNews()     {         return news;     }       public void setNews(List<News> news)     {         this.news = news;     }       @Id     @GeneratedValue(strategy = GenerationType.AUTO)     public Integer getNid()     {         return nid;     }       public void setNid(Integer nid)     {         this.nid = nid;     }          public String getSort()     {         return sort;     }       public void setSort(String sort)     {         this.sort = sort;     } }     寫個測試類先測試一個持久層操作: package com.test;   import java.util.Iterator; import org.hibernate.Session; import org.hibernate.cfg.AnnotationConfiguration; import org.junit.After; import org.junit.Before;   import com.vo.News; import com.vo.Newssort; public class Test {     private Session session ;     @Before     public void setUp()     {         session = new AnnotationConfiguration().configure().buildSessionFactory().openSession();     }     @After     public void tearDown()     {         session.close();     }          @SuppressWarnings("unchecked")     @org.junit.Test     public void testFind()     {         @SuppressWarnings("unused")         //List<Newssort> newssort = session.createCriteria(Newssort.class).list();         Newssort newssort = (Newssort) session.load(Newssort.class, 2);         for(Iterator<News> i = newssort.getNews().iterator();i .hasNext();)         {             String title = i.next().getTitle();             System.out.println(title);         }     } }   好了寫Action NewsAction: package com.web.action;   import java.util.List; import java.util.Map;   import org.hibernate.Session; import org.hibernate.cfg.AnnotationConfiguration;   import com.opensymphony.xwork2.ActionContext; import com.opensymphony.xwork2.ActionSupport; import com.vo.News; import com.vo.Newssort;   @SuppressWarnings( { "serial", "unchecked" }) public class NewsAction extends ActionSupport {     private Session session;     private Integer sortid;       public Integer getSortid()     {         return sortid;     }       public void setSortid(Integer sortid)     {         this.sortid = sortid;     }       public void init()     {         session = new AnnotationConfiguration().configure()                 .buildSessionFactory().openSession();     }       public String findNewssort()     {         this.init();         List<Newssort> sorts = session.createCriteria(Newssort.class).list();         Map request = (Map) ActionContext.getContext().get("request");         request.put("sorts", sorts);         session.close();         return SUCCESS;     }          public String findNews()     {         this.init();         System.out.println("findNews");         List<Newssort> sorts = session.createCriteria(Newssort.class).list();         Newssort newssort = (Newssort) session.load(Newssort.class, sortid);         List<News> news = newssort.getNews();         Map request = (Map) ActionContext.getContext().get("request");         request.put("sorts", sorts);         request.put("news", news);         session.close();         return SUCCESS;     } }     hibernate.cfg.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE hibernate-configuration PUBLIC     "-//Hibernate/Hibernate Configuration DTD 3.0//EN"     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd"> <hibernate-configuration>     <session-factory>         <property name="dialect">org.hibernate.dialect.MySQLDialect</property>         <property name="connection.driver_class">com.mysql.jdbc.Driver</property>         <property name="connection.url">jdbc:mysql://localhost:3306/news</property>         <property name="connection.username">root</property>         <property name="connection.password">root</property>         <property name="show_sql">true</property>         <!-- 實體類映射 -->         <mapping class="com.vo.News"/>         <mapping class="com.vo.Newssort"/>     </session-factory> </hibernate-configuration>       struts.xml: <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC     "-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"     "http://struts.apache.org/dtds/struts-2.0.dtd"> <struts>     <package name="com" extends="struts-default">         <action name="findNewssort" class="com.web.action.NewsAction" method="findNewssort">             <result name="success">/index.jsp</result>         </action>                  <action name="findNews" class="com.web.action.NewsAction" method="findNews">             <result name="success">/index.jsp</result>         </action>     </package> </struts>       web.xml:  <?xml version="1.0" encoding="UTF-8"?> <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee"     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee      http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">     <filter>         <filter-name>struts2</filter-name>         <filter-class>             org.apache.struts2.dispatcher.FilterDispatcher         </filter-class>     </filter>     <filter-mapping>         <filter-name>struts2</filter-name>         <url-pattern>/*</url-pattern>     </filter-mapping>     <welcome-file-list>         <welcome-file>prepare.jsp</welcome-file>     </welcome-file-list> </web-app>     前台有兩個jsp: prapare.jsp: <%@ page language="java" pageEncoding="GB18030"%> <html>   <head>     <title>My JSP 'index.jsp' starting page</title>     <script type="text/javascript">         window.location = "findNewssort.action";     </script>   </head>   <body>   </body> </html>     index.jsp: <%@ page language="java" pageEncoding="GB18030"%> <%@taglib uri="/struts-tags" prefix="s" %> <html>   <head>     <title>My JSP 'index.jsp' starting page</title>     <script type="text/javascript">         function findNews()         {             var sort = document.getElementById("sort");             window.location = "findNews.action?sortid=" + sort.value;         }     </script>   </head>   <body>       <select id="sort" name="sortid" onchange="findNews();">       <option>請選擇</option>           <s:iterator value="#request['sorts']" id="sort" >               <option value="<s:property value='#sort.nid'/>" ><s:property value="#sort.sort" /></option>           </s:iterator>       </select>       <hr />       <s:iterator value="#request['news']" id="news">           <s:property value="#news.title"/><br />       </s:iterator>   </body> </html>  

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved