JAVA WEB项目开发案例精粹之二,投票系统

系统架构

  • 应用服务器:
    • Servlet容器:Tomcat
  • 数据库服务器:MySQL

第三方工具(插件)应用

  • 图表工具:JFreeChart

学知识点

  • 使用jsp+struts2+jdbc+JFreeChart进行开发
  • 学习MySQL的基本使用
  • 学会简单的使用JFreeChart画柱状图
  • 学会使用Cookie防止多用户多次投票


页面及一些图片资料就没有做了,是从网上下载的资料直接使用的。

事前准备:一些用到的工具类:Page(分页)和JDBC连接工具。

开始从struts2的mvc配置开始:

首先struts2使用的是filter做为入口去启动整个框架的,所以要在web.xml中做如下配置:

        <filter>				        <!--定义核心Filter FilterDispatcher -->
		<filter-name>struts2</filter-name>	<!-- 定义核心Filter的名称 -->
		<filter-class>						<!--定义核心Filter的实现类 -->
			org.apache.struts2.dispatcher.FilterDispatcher
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>struts2</filter-name><!--核心Filter的名称 -->
		<url-pattern>/*</url-pattern><!--使用该核心Filter过滤所有的Web请求 -->
	</filter-mapping>

然后编写实体类:Channel,Vote,Vote,VoteOption,VoteResult.以及对增删改查的各种接口和实现类,进行代码编写。目前处于学习阶段,所以并没有自己设计数据库以及dao操作,都是根据网上源码的接口去一一对应实现其接口提供的方法,一对应action

最后进行action的编写:

struts2的mvc会根据struts.xml的配置文件进行mapping对应,根据配置文件配置的url路径去寻找对应的action,如下

<action name="addVote" class="com.dian.action.AddVoteAction">
   <result name="success">/admin/addVote.jsp</result>
</action>

配置包时必须指定name属性,该name属性值可以任意取名,但必须唯一,如果其他包要继承该包,必须通过该属性进行引用,包的namespace属性用于定义该包的命名空间,命名空间作用为访问该包下的action路径的一部分,见示例.namespace属性可以不配置,如果不指定该属性,默认的命名空间为””
 
通常每个包都应该继承struts- default 包,因为struts2很多核心功能都是拦截来实现的,如,从请求中把请求参数封闭到action,文件上传和数据验证等都是通过拦截器实现的,struts- default 定义了这些拦截器和Result类型,可以这么说,当包继承了struts- default 才能使用struts2提供的核心功能,struts- default 包是在struts2-core- 2 .xx.jar文件中的struts-defalut.xml中定义,struts- default .xml也是struts2默认配置文件,struts2每次都会自动加载struts- default .xml文件.
 
Action 元素method属性,默认值为method=”execute”,也就是当action接收到请求后,交给哪个方法去处理,默认的是交给execute方法去处理,当然,也可以交给其他方法,{ 1 }代表通配符,比如你上面的{ 1 }index,我访问 aaidex,bbindex都能够跳到此控制机器定义的这个方法
 
<result name= "success" >/WEB-INF/JspPage/chapter1/HelloWorld.jsp</result> 
result元素主要定义视图的跳转和返回的行为及类型.
以上就是整个项目的流程。

从中学习到的一些小知识:
1.使用Cookie防止多用户多次投票
//在进行投票前检查
 for (Cookie cookie : cookies) {// 遍历cookies

            if (cookie.getValue().equals(Integer.toString(voteID))) {// 如果用户已经投过票
                this.addActionError("您今天已经投过票了,请明天再来!");
                return INPUT;
            }
        }


//投票完成后添加 Cookie
// 更新完成后,添加cookie,防止重复投票
            Cookie cookie = new Cookie("hasVote" + voteID, Integer.toString(voteID));
            ServletActionContext.getResponse().addCookie(cookie);

2.JFreeChart画柱状图

根据一些JFReeChart手册,和查询出来的条件,搭建出合适的模型。

 chart = ChartFactory.createBarChart3D(
                voteName,
                "投票选项",
                "投票数",
                dcd,
                PlotOrientation.VERTICAL ,
                false,
                true,
                false);

3.一些工具类的使用和搭建,Page,DBConnection。


代码只是粗略的写完,还没有自测,明天再传








雷进辉Visual C++项目开发案例精粹是一本关于Visual C++开发技术的案例教程。本书从基础知识开始,通过讲解多个实际项目的开发过程和技巧,帮助读者更好地掌握Visual C++的应用。 该书首先介绍了Visual C++的基本概念和开发环境的设置,包括开发工具的安装及配置,语言基础和程序框架的建立等。随后,书中通过多个具体的项目案例,涵盖了Visual C++的各个方面的开发技巧,包括图像处理、数据库应用、多线程编程、网络编程等。每个案例都配有详细的步骤和代码展示,读者可以通过跟随案例一步步实践,快速掌握相关知识和技能。 该书的精华之处在于其案例的选择和内容的深度。作者雷进辉在多年的实践经验中,总结出了一系列经典的项目案例,并在书中进行了系统地阐述和讲解。这些案例涵盖了实际开发中的常见问题和技术难点,读者可以通过学习这些案例,了解到如何解决实际项目中的各种挑战。而且,作者在讲解过程中注重理论与实践的结合,不仅讲解技术原理,还提供了大量的实际代码和开发实例,方便读者进行动手实践。 综上所述,雷进辉Visual C++项目开发案例精粹是一本值得推荐的Visual C++学习教材。无论是Visual C++初学者还是有一定经验的开发者,都可以通过学习该书的案例,提高自己的开发能力和项目实践经验。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值