首页 > 代码库 > 晨跑调查程序学习笔记

晨跑调查程序学习笔记

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类。

 


 

程序截图:




 


晨跑调查程序学习笔记