首页 > 代码库 > 晨跑调查程序学习笔记
晨跑调查程序学习笔记
1.网站开发思路,从jsp页面开始写起,然后写servlet,之后写类来保存获取的表单变量,最后将获取的变量写入到数据库。
2.开始写代码前先检查字符集,检查方法:
选中所建立的工程——>Alt+Enter——>修改字符集要尽量和数据库默认字符集一致。
注意:我的MySQL安装时默认字符集不是utf-8,为了和老师讲的一致,我将其修改成了UTF-8.
MySQL修改默认字符集的方法见:http://www.cnblogs.com/xingyunblog/p/3836299.html
3.编写表单代码时表单Get和Post的选择,如果无汉字,则用get或者post都可以,默认get方式。但如有汉字则只能用post,否则可能会出现乱码问题。
4.table属性:border边框宽度,bgcolor背景颜色
5.input的type属性radio是单选按钮,type属性submit是提交。name属性必须一样,checked属性为默认选择项,value属性区分选项。
6.<td>属性colspan是跨列,有多少<td></td>就有多少列。
index.jsp页面代码如下:
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><html> <head> <title>投票页面</title> </head> <body bgcolor="#6699FF"> <form action="voteServlet" > <table bgcolor="#eeeeee" align="center"> <caption><h2>晨跑情况调查表</h2></caption> <tr> <td> <input type="radio" name="vote" value="A" checked="checked"/>坚持跑下去</td> <td> <input type="radio" name="vote" value="B"/>跑一学期试试</td> <td> <input type="radio" name="vote" value="C"/>不想跑了</td> </tr> <tr align="center"> <td colspan="3"> <input type="submit"value="提交"/></td> </tr> </table> </form> </body></html>
7.写servlet时直接新建servlet就可以图形用户界面配置web.xml.
8.web.xml中的<url-pattern>/voteServlet</url-pattern>中的url地址一定要和<form action="voteServlet">保持一致。
voteServlet.java源码如下:
package servlets;import java.io.IOException;import javax.servlet.RequestDispatcher;import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import javax.servlet.http.HttpSession;import service.IDBService;import service.IDBServiceImpl;import beans.User;//表单提交servlet类public class VoteServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //获取用户提交参数vote的值 response.setContentType("text/html;charset=utf-8"); String vote=request.getParameter("vote"); //获取客户端用户IP String ip=request.getRemoteAddr(); //创建对象user类,跳转到User类 User user=new User(); user.setIp(ip); user.setVote(vote); //创建IDBService服务类,创建IDBserviceImpl服务实现类 //IDBserviceImpl类实现IDBService类接口 IDBService service=new IDBServiceImpl(); //判断数据库中是否存在这个ip User findUser=service.selectUserByIP(ip); String message="对不起,您已经投过票了,谢谢您的支持!"; //如果findUser不为null,则说明该用户已经投过票了,不能再投了。 if(findUser==null){ service.insertUser(user); message="您的投票已完成,谢谢您的支持!"; } //session保存反馈结果字符串 HttpSession session=request.getSession(); session.setAttribute("message",message); //跳转页面 RequestDispatcher rd=request.getRequestDispatcher("message.jsp"); rd.forward(request, response); } //doPost调用doGet方法 public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request,response); }}
9.servlet中通过request.getParameter(变量名name字符串) 获取提交的数据.
10.面向对象类中不要定义成int类型,因为定义成Interger在后面代码中才可以进行判空操作。
11.定义好变量后,就可以使用source——>Generate Getters and Setters...快速重写赋值和修改变量方法。
编写好User.java代码如下:
package beans;import java.io.Serializable;//此类对象user类,用来赋值保存获取的变量。public class User implements Serializable { private Integer id;//这里不要定义成int类型,不然无法进行判空操作。 private String ip; private String vote; public Integer getId() { return id; } public void setId(Integer id) { this.id = id; } public String getIp() { return ip; } public void setIp(String ip) { this.ip = ip; } public String getVote() { return vote; } public void setVote(String vote) { this.vote = vote; }}
建立数据库如下:
12.图形用户界面建立数据库后,选中数据库——右键——转储Sql文件——>选择保存路径,
13.记事本方式打开sql文件,添加语句create datebase run_data;use run_data;将修改后的文件保存。
run_data.sql文件修改后如下:
/*Navicat MySQL Data TransferSource Server : localhost_3306Source Server Version : 50130Source Host : localhost:3306Source Database : run_dataTarget Server Type : MYSQLTarget Server Version : 50130File Encoding : 65001Date: 2014-10-03 10:12:09*/create datebase run_data;use run_data;SET FOREIGN_KEY_CHECKS=0;-- ------------------------------ Table structure for `users`-- ----------------------------DROP TABLE IF EXISTS `users`;CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT, `ip` varchar(255) DEFAULT NULL, `vote` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;-- ------------------------------ Records of users-- ----------------------------
14.新建一个Folder,起一个名字,将刚才生成的sql文件复制到这个目录下。
15.在eclipse下,package, source folder, folder都是文件夹. 但它们有区别如下:
1.sourceFolder靠"/"来进行上下级划分,package靠“.”来进行上下级划分。
2.source folder下能建package,而package下不能建source folder.
3.package:当你在建立一个package时,它自动建立到source folder下,也只能建立在这个目录之下.
4.source folder:存放java源代码的文件夹,当然也包括一些package文件夹,还可以包含其他文件.
5.项目构建后,source folder里面的java自动编译成class文件到相应的bin文件夹中,其他文件也会移到到相应的目录下.
6.folder:里面可以放入任何文件.包括java源文件,jar文件,其他文件(例如,图片,声音等).
7.folder:如果里面含有java源文件,不管程序是否正确,eclipse都不会报错,把它们当做普通文件处理.
但是项目如果要使用这里面的文件,情况就不同了.
8. package:ECLIPSE会自动编译此文件夹同里面所包含的代码跟package
9.source folder:ECLIPSE会自动编译里面的类文件,但文件夹本身不会编译
10.folder:下面的类,ECLIPSE不会编译到指定存放编译文件包里.
16.创建接口IDBService,选中IDBService service=new IDBServiceImpl();中的IDBService后右键——>Create Interface,包名service.
IDBService.java代码如下:
package service;import java.util.List;import beans.User;//提供服务类public interface IDBService { //插入数据 void insertUser(User user); //查询所有用户 List<User> selectAllUsers(); //查询所有用户IP User selectUserByIP(String ip); List<User> selectUsersByVote(String vote);}
17.选中IDBService service=new IDBServiceImpl();中的IDBServiceImpl按下Alt+1快速修复,新建class类。
程序截图:
晨跑调查程序学习笔记