`

一道Struts面试题

 
阅读更多
题目是这样的
有两张表
一张为新闻类别表
有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(50not null,
  content 
varchar(500not 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.class2);
        
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>

好了,一切OK,打开浏览器测试一切正常.
 源码可以在我的网盘下载. 下载
分享到:
评论

相关推荐

    struts面试题详解

    在深入探讨Struts面试题之前,我们首先理解Struts1的基本架构和工作原理。 **1. Struts1框架的核心组件:** - **ActionServlet**:这是Struts1的核心控制器,它是一个实现了Servlet接口的类。当用户发起HTTP请求时...

    JAVA笔试面试资料JDBC HTTP、JSP、Servlet、Struts面试题汇总资料.zip

    JAVA笔试面试资料JDBC HTTP、JSP、Servlet、Struts面试题汇总资料: 2014年最新Java笔试题及答案.docx 225道Java面试题 学会了Java面试随你问.docx Ant和Maven的作用是什么?两者之间功能、特点有哪些区别?.docx ...

    struts2面试题

    Struts2 面试题 Struts2 是基于 Java 语言的 Web 应用程序框架,继承自 WebWork 框架。Struts2 的主要特点是使用 FilterDispatcher 作为核心控制器,将请求分发到相应的 Action 中。下面是 Struts2 面试题中涉及到...

    struts1面试题

    以上就是关于Struts1面试题的一些核心知识点,包括其初始化流程、处理用户请求的步骤、数据验证机制以及配置文件中的元素详解。这些内容涵盖了Struts1的基本架构和工作原理,对于理解和解答相关面试问题非常关键。

    Struts2面试题及答案

    ### Struts2面试题及答案解析 #### 一、Struts2框架执行流程与核心组件 **题目背景:** 在Struts2框架中,FilterDispatcher是核心组件之一,它负责处理用户请求,并调用相应的Action进行业务逻辑处理。相较于...

    Struts2基础面试题

    ### Struts2基础面试题详解 #### 1. Struts2的核心控制器及其性质 - **Struts1的核心控制器**:在Struts1框架中,核心控制器是`ActionServlet`,这是一个实现了`HttpServlet`接口的类,因此本质上是一个Servlet。 ...

    Struts2 框架面试题.CHM

    持续更新ing Struts2 框架面试题汇总。 Struts2 基于 MVC 架构,框架结构清晰,使用 OGNL,提供了全局范围、包范围和Action范围的国际化资源文件管理实现。

    大量的Struts面试题集合

    以下是一些Struts面试题及相关的知识点解析: 1. **什么是Struts框架?** Struts是一个开源的MVC框架,它基于Model-View-Controller设计模式,旨在提高Java Web应用的可维护性和可扩展性。它提供了请求处理、页面...

    Struts2面试题

    ### Struts2面试题知识点详解 #### 一、Struts2的工作流程 1. **请求接收**:所有的请求首先会被`StrutsPrepareAndExecuteFilter`接收。 2. **请求识别**:`StrutsPrepareAndExecuteFilter`判断这个请求是否属于...

    2014 java servet jdbc struts struts2面试题

    【Struts2面试题】 1. **Struts2架构**:基于MVC模式,了解Action、Result、Interceptor等核心组件。 2. **Struts2拦截器**:自定义拦截器,理解默认拦截器栈及其作用。 3. **Struts2配置**:struts.xml文件,...

    最全的IT公司面试题集 CHM版的

    外企面试,软件测试面试题,Python面试题,Oracle面试题,MySql面试题,Web开发面试题,Unix面试题,程序员面试,网络技术面试题,网络安全面试题,Linux面试题,Hibernate面试题,Spring面试题,SQL Server面试题,Struts面试题,...

    struts面试题大全.doc

    面试中关于Struts的问题通常会涉及其核心概念、优缺点、处理流程以及关键对象的作用。下面是对这些知识点的详细解释: 1. **Struts 优点与缺点**: - **优点**: - 开源社区支持,丰富的学习资源。 - Taglib...

    java面试题,J2EE面试题 笔试题

    最全的j2EE面试题,题量大、经典,是我面试的整理试题 1、java笔试题大集合 2、各个公司面试题 3、J2EE初学者面试题 4、J2EE面试题(打码查错题) 5、java_华为笔试题 6、java常见面试题 7、java程序员面试宝典 8、...

    struts基础面试笔试题及其答案

    Struts 是一个开源的Java Web框架,由Apache软件基金会维护,主要用于构建企业级...以上是关于Struts基础的一些常见面试题和答案,深入理解和掌握这些概念对于Java Web开发者来说非常重要,尤其是在处理企业级应用时。

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题48.struts2的执行流程或者struts2的原理.mp4 │ Java面试题49.Struts2的拦截器是什么?你都用它干什么?.mp4 │ Java面试题50.Spring MVC的执行流程.mp4 │ Java面试题51.SpringMVC和Struts2的不同.mp4...

Global site tag (gtag.js) - Google Analytics