JAVA WEB项目开发案例精粹之二,投票系统
系统架构应用服务器:Servlet容器:Tomcat数据库服务器:MySQL第三方工具(插件)应用图表工具:JFreeChart学知识点使用jsp+struts2+jdbc+JFreeChart进行开发学习MySQL的基本使用学会简单的使用JFreeChart画柱状图学会使用Cookie防止多用户多次投票页面及一
系统架构
- 应用服务器:
- 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
<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>
最后进行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防止多用户多次投票
//在进行投票前检查
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。
代码只是粗略的写完,还没有自测,明天再传
更多推荐
所有评论(0)