精华内容
下载资源
问答
  • 动态网站开发技术 早期的动态网站开发技术使用的CGI-BIN接口。开发人员编写与接口相关的单独的程序和基于Web的应用程序,后者通过Web服务器来调用前者。这种开发技术存在着严重的扩展性问题——每一个新的CGI...
  • PAGE 29 - 基于技术的徐州美食动态网站的设计与实现 摘要 随着网络技术的迅猛发展互联网的快速普及使越来越多人选择从互联网获取信息因此互联网逐渐成为一个宽广的信息发布平台和获取信息的平台 本网站运用SQL...
  • 基于动态网站的设计与实现 摘 要 本文针对服务器端新技术来设计动态网站以解决网站更新速度慢维护工作量大交互性差等问题我们严格按照软件工程的设计思想采用技术与Web数据库的结合开发了一个B/SBrowser/Server...
  • 本次毕业设计的任务开发基于java的婚恋交友动态网站,有效解决传统婚恋交友存在的问题.开发技术采用JSP,数据库使用MySQL.基于MyEclipse开发工具进行设计,服务器采用tomcat. 本系统主要分前台普通

    “网络红娘”的出现不仅对传统交友方式和恋爱观形成强烈冲击,更形成了一门具有良好发展前景的新兴产业。与欧美国家相比,我国婚恋网站起步较晚,目前仍处于跑马圈地的群雄纷争时代,一家独大的行业巨头尚未出现。虽然部分专业婚恋网站已获得国内外大笔风险投资,但至今未能找到有效的盈利模式,仍处于“烧钱”阶段。
    本次毕业设计的任务是开发基于java的婚恋交友动态网站,有效解决传统婚恋交友存在的问题.开发技术采用JSP,数据库使用MySQL.基于MyEclipse开发工具进行设计,服务器采用tomcat.

    本系统主要分前台普通用户和后台管理员使用的两个部分.
    前台部分包括用户注册与登录、个人信息管理、查看其他会员空间、发起留言、相册信息管理、照片信息管理、发布文章、发起留言等模块。
    后台部分包括会员信息管理、系统公告管理、相册信息管理、照片信息管理、文章信息管理等功能。

    功能模块分析

    (1)管理员管理会员信息
    该模块主要完成管理员对会员信息的管理,因为会员要自己注册生成,本模块只包括查看、删除会员信息操作。
    (2)管理员管理系统公告功能
    该管理功能主要完成管理员对系统公告的管理,包括系统公告的添加、查询、删除操作。
    (3)管理员管理会员相册信息功能
    该管理功能主要完成管理员对会员相册信息的管理。
    (4)管理员管理会员照片信息功能
    该管理功能主要完成管理员对会员照片信息的管理.
    (5)管理员管理会员文章信息功能
    该管理功能主要完成管理员对会员文章信息的管理。
    (6)会员相册信息管理功能
    该管理功能主要完成会员对自己相册信息的管理,包括相册信息的添加、查询、删除操作。
    (7)会员照片信息管理功能
    该管理功能主要完成会员对自己照片信息的管理,包括照片信息的添加、查询、删除操作。在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    摘 要 I
    ABSTRACT II
    第一章 绪论 1
    1.1课题背景及意义 1
    1.2开发工具及技术 1
    1.2.1开发工具 1
    1.2.2 JSP技术 2
    1.2.3 JavaScript 3
    1.3软硬件需求 4
    第二章 系统分析 5
    2.1可行性分析 5
    2.1.1技术可行性 5
    2.1.2经济可行性 5
    2.1.3操作可行性 5
    2.1.4法律可行性 6
    2.2功能模块分析 6
    2.3设计的基本思想 10
    2.4性能需求 11
    2.4.1系统的安全性 11
    2.4.2数据的完整性 11
    2.5界面需求 11
    第三章 数据库设计 13
    3.1数据库的分析与设计 13
    3.1.1数据库的概念结构设计 13
    3.1.2数据库的逻辑结构设计 16
    3.1.3数据库的连接原理 18
    第四章 系统功能实现 21
    4.1会员注册功能 21
    4.2登录页面设计 22
    4.3管理员主页面 25
    4.4修改登录密码 26
    4.5会员信息管理 26
    4.6系统公告管理模块 27
    4.6.1系统公告录入 27
    4.6.2系统公告管理 27
    4.7管理员管理相册信息 28
    4.8管理员管理照片信息 28
    4.9管理员管理文章信息 28
    4.10会员个人信息管理 29
    4.11会员相册信息管理 30
    4.11.1添加相册信息 30
    4.11.1相册信息管理 30
    4.12照片信息管理 31
    4.12.1添加照片信息 31
    4.12.2照片信息管理 31
    4.13文章信息管理 32
    4.13.1添加文章信息 32
    4.13.2文章信息管理 33
    4.14留言信息管理模块 33
    第五章 系统测试 34
    5.1系统测试目的与意义 34
    5.2测试过程 34
    5.2.1主页面的登录模块测试 34
    5.3其他错误 35
    结 论 36
    参考文献 37
    致 谢 38

    展开全文
  • Python3+Scrapy+phantomJs+Selenium爬取今日头条在实现...本文所要介绍的是基于Python3,配合Scrapy+phantomjs+selenium框架的动态网页爬取技术。 本文所实现的2个项目已上传至Github中,求Star~ 1. 爬取今日头条新

    Python3+Scrapy+phantomJs+Selenium爬取今日头条

    在实现爬虫的过程中,我们不可避免的会爬取又JS以及Ajax等动态网页技术生成网页内容的网站,今日头条就是一个很好的例子。

    本文所要介绍的是基于Python3,配合Scrapy+phantomjs+selenium框架的动态网页爬取技术。

    本文所实现的2个项目已上传至Github中,求Star~
    1. 爬取今日头条新闻列表URL:
    2. 爬取今日头条新闻内容:

    静态网页爬取技术以及windows下爬虫环境搭建移步上几篇博客,必要的安装软件也在上一篇博客中提供。

    本文介绍使用PhantongJs + Selenium实现新闻内容的爬取,爬取新闻列表的url也是相同的原理,不再赘述。

    项目结构

    这里写图片描述

    项目原理

    底层代码使用Python3,网络爬虫基础框架采用Scrapy,由于爬取的是动态网页,整个网页并不是直接生成页面,动过Ajax等技术动态生成。所以这里考虑采用 PhantomJs+Selenium模拟实现一个无界面的浏览器,去模拟用户操作,抓取网页代码内容。

    代码文件说明

    项目结构从上到下依次为:

    • middleware.py:整个项目的核心,用于启动中间件,在Scrapy抓取调用request的过程中实现模拟用户操作浏览器
    • ContentSpider.py:爬虫类文件,定义爬虫
    • commonUtils:工具类
    • items.py:爬虫所抓取到的字段存储类
    • pipelines.py:抓取到的数据处理类

    这5个为关键类代码,其余的代码为业务相关代码。

    关键代码讲解

    1. middleware.py
    # douguo request middleware
    # for the page which loaded by js/ajax
    # ang changes should be recored here:
    #
    # @author zhangjianfei
    # @date 2017/05/04
    
    from selenium import webdriver
    from scrapy.http import HtmlResponse
    from DgSpiderPhantomJS import settings
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
    import time
    import random
    
    
    class JavaScriptMiddleware(object):
        print("LOGS  Starting Middleware  ...")
    
        def process_request(self, request, spider):
    
            print("LOGS:  process_request is starting  ...")
    
            # 开启虚拟浏览器参数
            dcap = dict(DesiredCapabilities.PHANTOMJS)
    
            # 设置agents
            dcap["phantomjs.page.settings.userAgent"] = (random.choice(settings.USER_AGENTS))
    
            # 启动phantomjs
            driver = webdriver.PhantomJS(executable_path=r"D:\phantomjs-2.1.1\bin\phantomjs.exe", desired_capabilities=dcap)
    
            # 设置60秒页面超时返回
            driver.set_page_load_timeout(60)
            # 设置60秒脚本超时时间
            driver.set_script_timeout(60)
    
            # get page request
            driver.get(request.url)
    
            # simulate user behavior
            js = "document.body.scrollTop=10000"
            driver.execute_script(js)  # 可执行js,模仿用户操作。此处为将页面拉至1000。
    
            # 等待异步请求响应
            driver.implicitly_wait(20)
    
            # 获取页面源码
            body = driver.page_source
    
            return HtmlResponse(driver.current_url, body=body, encoding='utf-8', request=request)
    
    1. ContentSpider.py
    # -*- coding: utf-8 -*-
    
    import scrapy
    import random
    import time
    from DgSpiderPhantomJS.items import DgspiderPostItem
    from scrapy.selector import Selector
    from DgSpiderPhantomJS import urlSettings
    from DgSpiderPhantomJS import contentSettings
    from DgSpiderPhantomJS.mysqlUtils import dbhandle_update_status
    from DgSpiderPhantomJS.mysqlUtils import dbhandle_geturl
    
    
    class DgContentSpider(scrapy.Spider):
        print('LOGS: Spider Content_Spider Staring  ...')
    
        sleep_time = random.randint(60, 90)
        print("LOGS: Sleeping :" + str(sleep_time))
        time.sleep(sleep_time)
    
        # get url from db
        result = dbhandle_geturl()
        url = result[0]
        # spider_name = result[1]
        site = result[2]
        gid = result[3]
        module = result[4]
    
        # set spider name
        name = 'Content_Spider'
        # name = 'DgUrlSpiderPhantomJS'
    
        # set domains
        allowed_domains = [site]
    
        # set scrapy url
        start_urls = [url]
    
        # change status
        """对于爬去网页,无论是否爬取成功都将设置status为1,避免死循环"""
        dbhandle_update_status(url, 1)
    
        # scrapy crawl
        def parse(self, response):
    
            # init the item
            item = DgspiderPostItem()
    
            # get the page source
            sel = Selector(response)
    
            print(sel)
    
            # get post title
            title_date = sel.xpath(contentSettings.POST_TITLE_XPATH)
            item['title'] = title_date.xpath('string(.)').extract()
    
            # get post page source
            item['text'] = sel.xpath(contentSettings.POST_CONTENT_XPATH).extract()
    
            # get url
            item['url'] = DgContentSpider.url
    
            yield item
    
    
    1. commonUtils
    import random
    from hashlib import md5
    
    
    # 获取随机发帖ID
    def get_random_user(user_str):
        user_list = []
        for user_id in str(user_str).split(','):
            user_list.append(user_id)
        userid_idx = random.randint(1, len(user_list))
        user_chooesd = user_list[userid_idx-1]
        return user_chooesd
    
    
    # 获取MD5加密URL
    def get_linkmd5id(url):
        # url进行md5处理,为避免重复采集设计
        md5_url = md5(url.encode("utf8")).hexdigest()
        return md5_url
    
    1. items.py
    # -*- coding: utf-8 -*-
    
    # Define here the models for your scraped items
    #
    # See documentation in:
    # http://doc.scrapy.org/en/latest/topics/items.html
    
    
    import scrapy
    
    
    class DgspiderUrlItem(scrapy.Item):
        url = scrapy.Field()
    
    
    class DgspiderPostItem(scrapy.Item):
        url = scrapy.Field()
        title = scrapy.Field()
        text = scrapy.Field()
    1. pipelines.py
    # -*- coding: utf-8 -*-
    
    # Define your item pipelines here
    #
    # Don't forget to add your pipeline to the ITEM_PIPELINES setting
    # See: http://doc.scrapy.org/en/latest/topics/item-pipeline.html
    
    import re
    import datetime
    import urllib.request
    from DgSpiderPhantomJS import urlSettings
    from DgSpiderPhantomJS import contentSettings
    from DgSpiderPhantomJS.mysqlUtils import dbhandle_insert_content
    from DgSpiderPhantomJS.uploadUtils import uploadImage
    from DgSpiderPhantomJS.mysqlUtils import dbhandle_online
    from DgSpiderPhantomJS.PostHandle import post_handel
    from DgSpiderPhantomJS.mysqlUtils import dbhandle_update_status
    from bs4 import BeautifulSoup
    from DgSpiderPhantomJS.commonUtils import get_random_user
    from DgSpiderPhantomJS.commonUtils import get_linkmd5id
    
    
    class DgspiderphantomjsPipeline(object):
    
        # post构造reply
        cs = []
    
        # 帖子title
        title = ''
    
        # 帖子文本
        text = ''
    
        # 当前爬取的url
        url = ''
    
        # 随机用户ID
        user_id = ''
    
        # 图片flag
        has_img = 0
    
        # get title flag
        get_title_flag = 0
    
        def __init__(self):
            DgspiderphantomjsPipeline.user_id = get_random_user(contentSettings.CREATE_POST_USER)
    
        # process the data
        def process_item(self, item, spider):
            self.get_title_flag += 1
    
            # 获取当前网页url
            DgspiderphantomjsPipeline.url = item['url']
    
            # 获取post title
            if len(item['title']) == 0:
                title_tmp = ''
            else:
                title_tmp = item['title'][0]
    
            # 替换标题中可能会引起 sql syntax 的符号
            # 对于分页的文章,只取得第一页的标题
            if self.get_title_flag == 1:
    
                # 使用beautifulSoup格什化标题
                soup_title = BeautifulSoup(title_tmp, "lxml")
                title = ''
                # 对于bs之后的html树形结构,不使用.prettify(),对于bs, prettify后每一个标签自动换行,造成多个、
                # 多行的空格、换行,使用stripped_strings获取文本
                for string in soup_title.stripped_strings:
                    title += string
    
                title = title.replace("'", "”").replace('"', '“')
                DgspiderphantomjsPipeline.title = title
    
            # 获取正post内容
            if len(item['text']) == 0:
                text_temp = ''
            else:
                text_temp = item['text'][0]
    
            soup = BeautifulSoup(text_temp, "lxml")
            text_temp = str(soup)
    
            # 获取图片
            reg_img = re.compile(r'<img.*?>')
            imgs = reg_img.findall(text_temp)
            for img in imgs:
                DgspiderphantomjsPipeline.has_img = 1
    
                # matchObj = re.search('.*src="(.*)"{2}.*', img, re.M | re.I)
                match_obj = re.search('.*src="(.*)".*', img, re.M | re.I)
                img_url_tmp = match_obj.group(1)
    
                # 去除所有Http:标签
                img_url_tmp = img_url_tmp.replace("http:", "")
    
                # 对于<img src="http://a.jpg" title="a.jpg">这种情况单独处理
                imgUrl_tmp_list = img_url_tmp.split('"')
                img_url_tmp = imgUrl_tmp_list[0]
    
                # 加入http
                imgUrl = 'http:' + img_url_tmp
    
                list_name = imgUrl.split('/')
                file_name = list_name[len(list_name)-1]
    
                # if os.path.exists(settings.IMAGES_STORE):
                #     os.makedirs(settings.IMAGES_STORE)
    
                # 获取图片本地存储路径
                file_path = contentSettings.IMAGES_STORE + file_name
                # 获取图片并上传至本地
                urllib.request.urlretrieve(imgUrl, file_path)
                upload_img_result_json = uploadImage(file_path, 'image/jpeg', DgspiderphantomjsPipeline.user_id)
                # 获取上传之后返回的服务器图片路径、宽、高
                img_u = upload_img_result_json['result']['image_url']
                img_w = upload_img_result_json['result']['w']
                img_h = upload_img_result_json['result']['h']
                img_upload_flag = str(img_u)+';'+str(img_w)+';'+str(img_h)
    
                # 在图片前后插入字符标记
                text_temp = text_temp.replace(img, '[dgimg]' + img_upload_flag + '[/dgimg]')
    
            # 替换<strong>标签
            text_temp = text_temp.replace('<strong>', '').replace('</strong>', '')
    
            # 使用beautifulSoup格什化HTML
            soup = BeautifulSoup(text_temp, "lxml")
            text = ''
            # 对于bs之后的html树形结构,不使用.prettify(),对于bs, prettify后每一个标签自动换行,造成多个、
            # 多行的空格、换行
            for string in soup.stripped_strings:
                text += string + '\n\n'
    
            # 替换因为双引号为中文双引号,避免 mysql syntax
            DgspiderphantomjsPipeline.text = self.text + text.replace('"', '“')
    
            return item
    
        # spider开启时被调用
        def open_spider(self, spider):
            pass
    
        # sipder 关闭时被调用
        def close_spider(self, spider):
    
            # 数据入库:235
            url = DgspiderphantomjsPipeline.url
            title = DgspiderphantomjsPipeline.title
            content = DgspiderphantomjsPipeline.text
            user_id = DgspiderphantomjsPipeline.user_id
            create_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
            dbhandle_insert_content(url, title, content, user_id, DgspiderphantomjsPipeline.has_img, create_time)
    
            # 处理文本、设置status、上传至dgCommunity.dg_post
            # 如果判断has_img为1,那么上传帖子
            if DgspiderphantomjsPipeline.has_img == 1:
                if title.strip() != '' and content.strip() != '':
                    spider.logger.info('status=2 , has_img=1, title and content is not null! Uploading post into db...')
                    post_handel(url)
                else:
                    spider.logger.info('status=1 , has_img=1, but title or content is null! ready to exit...')
                pass
            else:
                spider.logger.info('status=1 , has_img=0, changing status and ready to exit...')
                pass
    
    
    展开全文
  • 动态网站介绍 WWWWorld Wide Web又称为万维网简称WebWWW是一个由许多互相链接的超文本文档组成的系统通过Internet访问是基于客户机/服务器Client/Server模式的信息发布和超文本技术的综合 动态网站注重的是用户能与...
  • 现在的Web网站已经不再仅向浏览者或用户提供静态网页内容的浏览,而是要求能够和用户进行动态的信息交流的动态Web网站,所以,搭建Web网站平台不仅要支持简单的HTML网页浏览,更重要的使Web站点能和用户实现一种...
    现在的Web网站已经不再是仅向浏览者或用户提供静态网页内容的浏览,而是要求能够和用户进行动态的信息交流的动态Web网站,所以,搭建Web网站平台不仅要支持简单的HTML网页浏览,更重要的是使Web站点能和用户实现一种动态的交互式操作。这就要求Web服务器在提供标准的HTML网页浏览之外提供一种能和用户交流的技术。这种技术不但要能够收集和反馈用户信息,还要支持数据库操作(把信息存入数据库和从数据库中检索信息)。

    目录

    几种现有技术对比
    软件的获得
    MySQL数据库服务器的安装及其设置
    Apache和PHP的安装与配置
    搭建快速开发平台


    几种现有技术对比

    目前,最为流行而且应用最为广泛的动态Web网站技术主要有ASP、JSP和PHP三种。这三种技术都是在现有的Web服务器中嵌入了一种编程语言来实现动态Web网站,它们都能和标准的HTML网页很好地集成。下面就这三种技术分别加以介绍。

    ASP:全名为Active Server Pages,是由微软公司推出的一个Web服务器端的开发环境,利用它可以产生和执行动态的、互动的、高性能的Web服务应用程序。它和微软的IIS服务器紧密结合,可以利用Windows操作系统中的众多特性。ASP采用VBScript或者JScript脚本语言作为开发语言,开发人员比较容易上手。ASP.NET则是微软最新推出的一种技术,是在原有ASP技术基础上进行的重大革新,它正在逐步取代ASP。ASP仅能在微软的操作系统下使用,使用时要支付软件费用。

    JSP:全名为Java Server Page,是Sun公司推出的新一代网站开发语言,它几乎可以使用Java语言的所有特性。JSP可以在Servlet和JavaBean的支持下,开发功能强大的Web站点。JSP完全基于Java语言,能够实现跨平台,可以在各种主流操作系统下使用。JSP比较适合开发大型网站,对开发人员要求比较高(一般要熟悉Java编程语言)。

    PHP:是一种跨平台的服务器端的嵌入式脚本语言,它大量的借鉴C、Java和Perl语言的语法,并加入了PHP自己的特性,使Web开发者能够快速地写出动态页面。PHP支持所有主流数据库。它是完全免费的,使用时不需要支付任何费用。

    本文将要讨论的是基于Linux的完全免费的PHP技术的实现方法。我们将搭建一个支持数据库的完全免费的动态网站开发平台。

    软件的获得

    在整个配置过程中,我们使用的软件都是完全免费的开放源代码软件,可以从互联网上免费下载。我们将使用MySQL搭建免费的数据库服务器,使用Apache和PHP构建动态网站,使用Samba服务器实现网站程序的快速开发。

    从MySQL官方网站 http://www.mysql.com/ 下载MySQL的源代码打包文件(后缀名为tar.gz),当前最新版本为4.0.14。

    从Apache官方网站 http://www.apache.org下载Apache的源代码打包文件(后缀名为tar.gz),当前最新版本为1.3.28和2.0.47,本文主要介绍1.3.28版本。

    从PHP官方网站 http://www.php.net下载PHP的源代码打包文件(后缀名为tar.gz),当前最新版本为4.3.2。

    MySQL数据库服务器的安装及其设置

    在进行编译和安装之前,必须确认当前的Linux操作系统当中至少安装了一种C语言编译器,如cc或gcc。如果没有安装,请安装后继续下面的步骤。

    我们假设所有软件的下载目录为root用户的宿主目录,即“/root”目录。

    1. 解压缩包

    用以下命令进行解压缩包操作:

    [root@localhost root]# tar zxvf mysql-4.0.14.tar.gz


    解压缩完成后会生成一个“mysql-4.0.14”的源代码目录。

    2. 软件配置、编译和安装

    切换到源代码目录,进行软件安装前的配置、编译和安装,命令为:

    [root@localhost root]# cd mysql-4.0.14
                [root@localhost mysql-4.0.14]# groupadd mysql
                [root@localhost mysql-4.0.14]# useradd -g mysql mysql
                [root@localhost mysql-4.0.14]# ./configure - -prefix=/usr/local/mysql
                [root@localhost mysql-4.0.14]# make
                [root@localhost mysql-4.0.14]# make install
                [root@localhost mysql-4.0.14]# scripts/mysql_install_db
                [root@localhost mysql-4.0.14]# chown -R root /usr/local/mysql
                [root@localhost mysql-4.0.14]# chown -R mysql /usr/local/mysql/var
                [root@localhost mysql-4.0.14]# chgrp -R mysql /usr/local/mysql
                [root@localhost mysql-4.0.14]# cp support-files/my-medium.cnf /etc/my.cnf


    用如下命令启动MySQL数据库(如果操作系统默认安装的有MySQL数据库,请确认其没有启动):

    [root@localhost mysql-4.0.14]# /usr/local/mysql/bin/safe_mysqld
                --user=mysql &


    将上面的启动命令追加到文件“/etc/rc.d/rc.local”的尾部,使操作系统启动时就自动启动MySQL数据库服务器。

    3. MySQL服务器的初始设置

    新安装的MySQL服务器没有作相关的权限设置,必须手工设置。在命令行中使用如下命令:

    [root@localhost root]# /usr/local/mysql/bin/mysql


    进入MySQL客户端工具的操作界面,接着执行如下的操作:

    mysql>drop database test;
                mysql>use mysql;
                mysql>delete from user where user='';
                mysql>delete from user where host='%';
                mysql>delete from db;


    现在MySQL数据库将只允许本机的MySQL管理员root用户(和操作系统的root用户不同)连接,用如下命令为root用户指定密码:

    [root@localhost root]# cd / usr/local/mysql/bin/
                [root@localhost bin]# ./mysqladmin -u root@localhost password '123456'


    上面命令中“123456”为root用户密码,请根据实际情况变动。

    4. 新建数据库及其权限设置

    用如下命令新建数据库“mydb”,并进行权限设置:

    [root@localhost bin]# ./mysql -u root -p
                mysql>create database mydb;
                mysql>grant all privileges on mydb.* to mydb@localhost identified by 'mydb';
                mysql>exit
                [root@localhost bin]# ./mysqladmin -u root@localhost -p flush-privileges;


    上述命令创建了“mydb”数据库,并且把它的所有权限赋予“mydb”用户,密码为“mydb”,只能从本机登录数据库。

    Apache和PHP的安装与配置

    Apache和PHP的继承安装时,有两种模式:

    1. 解压缩包

    用以下命令进行解压缩包操作:

    [root@localhost root]# tar zxvf apache_1.3.28.tar.gz
                [root@localhost root]# tar zxvf php-4.3.2.tar.gz


    解压缩完成后会生成“apache_1.3.28”和“php-4.3.2”两个源代码目录。

    2. 软件配置、编译和安装

    切换到源代码目录,进行软件的配置、编译和安装,命令为:

    [root@localhost root]# cd apache_1.3.28
                [root@localhost apache_1.3.28]#./configure - -prefix=/usr/local/apache \
                --enable-module=so
                [root@localhost apache_1.3.28]# make
                [root@localhost apache_1.3.28]# make install
                [root@localhost apache_1.3.28]# cd ../ php-4.3.2
                [root@localhost php-4.3.2]#./configure --enable-track-vars \
                --with-mysql=/usr/local/mysql --with-apxs=/usr/local/apache/bin/apxs
                [root@localhost php-4.3.2]# make
                [root@localhost php-4.3.2]# make install
                [root@localhost php-4.3.2]# cp php.ini-dist /usr/local/lib/php.ini


    3. Apache和PHP的基本配置和测试

    编辑Apache的配置文件“/usr/local/apache/conf/httpd.conf”,添加下面一行内容:

    AddType application/x-httpd-php.php


    并且将“DirectoryIndex index.html”一行修改为:

    DirectoryIndex index.html index.htm index.php


    编辑PHP配置文件“/usr/local/lib/php.ini”,将“register_globals = Off”一行内容改为:

    register_globals=On


    用如下命令启动Apache(并且加入到文件“/etc/rc.d/rc.local”中):

    [root@localhost root]# /usr/local/apache/bin/apachectl start


    在目录“/usr/local/apache/htdocs/”下创建test.php文件,内容如下:

    <?php
                phpinfo();
                ?>


    在浏览器中输入地址“http://your_ip/test.php”(your_ip为服务器的IP地址),即可看到PHP的基本配置信息,并且有MySQL数据库的相关支持信息。若未看到,则配置有问题,需要检查以上步骤。

    搭建快速开发平台

    为了充分利用Windows平台下丰富的应用软件,我们将在Linux中使用Samba服务器和Windows主机通信。网页和相关的PHP程序文件在Windows下开发后直接存储在Linux服务器上,无需使用FTP等其它工具上传。

    首先,确认当前的Linux操作系统安装了Samba软件包,若没有安装请安装后继续下面的步骤。

    编辑Samba的配置文件“/etc/samba/smb.conf”,在尾部添加如下内容:

    [homepage]
                path = /usr/local/apache/htdocs
                valid users = php
                public = no
                writable = yes
                printable = no
                create mask = 0765


    使用如下命令添加系统用户和Samba用户:

    [root@localhost root]#adduser php
                [root@localhost root]#smbadduser php:php
                (需要输入Samba密码,在Windows中登录Samba服务器时使用)


    用如下命令启动Samba服务器:

    [root@localhost root]# /etc/rc.d/init.d/smb start


    使用如下命令使Samba服务器每次开机自动启动:

    [root@localhost root]# chkconfig --level 3 smb on


    在Windows客户端(建议使用Windows NT/2000)使用服务器的IP地址“搜索计算机”。找到后,双击计算机图标,在弹出对话框的用户栏输入“php”,密码框中输入使用“smbadduser”命令设置的Samba密码。接着,会看到Samba服务器共享出来的目录“homepage”,在图标上点鼠标右键,选择“映射网络驱动器”,即可映射为本地的一个逻辑盘符。接下来的所有网页和程序都可以通过磁盘符直接存储在Linux服务器上。

    转载于:https://www.cnblogs.com/bluespot/archive/2008/01/23/1050456.html

    展开全文
  • 动漫设计系统(基于ASP.NET的动态网站) 一、系统概述及开发工具 系统概述 动漫管理系统使用ASP.NET分层开发技术,集增加,删除,修改,查询四个功能模块,用户可以进行相应的操作,这里动漫的交流场所,用户们...

    动漫设计系统(基于ASP.NET的动态网站)

    一、系统概述及开发工具

    1. 系统概述
      动漫管理系统使用ASP.NET分层开发技术,集增加,删除,修改,查询四个功能模块,用户可以进行相应的操作,这里是动漫的交流场所,用户们可以进行浏览查询,可以根据自己的了解进行添加删除,欢迎大家来踩网。
      同时,在动漫管理系统中,管理员可以登录进入系统,等等。
      该系统使得所有用户对自己的信息维护与管理更加及时、高效,提高了工作效率。
    2. 开发工具
      (1)Visual Studio2012:
      Microsoft Visual Studio(简称VS)是美国微软公司的开发工具包系列产品。VS是一个基本完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等等。所写的目标代码适用于微软支持的所有平台,包括Microsoft Windows、Windows Mobile、Windows CE、.NET Framework、.NET Compact Framework和Microsoft Silverlight 及Windows Phone。Visual Studio是目前最流行的Windows平台应用程序的集成开发环境。最新版本为 Visual Studio 2017 版本,基于.NET Framework 4.5.2.。
      (2)SQL Server 2012:
      SQL Server 是Microsoft 公司推出的关系型数据库管理系统。具有使用方便可伸缩性好与相关软件集成程度高等优点,可跨越从运行Microsoft Windows 98 的膝上型电脑到运行Microsoft Windows 2012 的大型多处理器的服务器等多种平台使用。Microsoft SQL Server 是一个全面的数据库平台,使用集成的商业智能 (BI)工具提供了企业级的数据管理。Microsoft SQL Server 数据库引擎为关系型数据和结构化数据提供了更安全可靠的存储功能,使您可以构建和管理用于业务的高可用和高性能的数据应用程序
      二、需求分析与可行性分析
    3. 需求分析
      动漫管理系统,是针对动漫爱好者设计,在这里动漫爱好者可以交流自己的心得体会,可以相互分享各自的喜欢的动漫。很多漫迷对信息了解不完全,导致别人嘴里的好片要一年甚至更久才能看到。这里就是专门为漫迷们贴心打造,资讯多多,漫迷再也不怕错过好的动漫电影,及时交流,相互推荐。
      2.功能分析
      (1)信息录入处理
      (2)信息管理处理
      (3)信息显示处理
      (4)信息注册处理
    4. 功能模块设计
      根据动漫管理系统的实际需求,在菜单栏中要能显示动漫查询、动漫添加、动漫删除、动漫修改,要有常见动漫信息的各个方面,功能模块图如图1所示。
      在这里插入图片描述 图1 功能模块图

    三、数据库设计
    数据库以表的形式存放相关的数据,设计系统的数据库结构、数据表结构包含序号、数据项名、含义、数据项类型、长度、非空、索引、主键、外键、引用字段、数据来源等。本系统的数据库中共有3张数据表。有用户注册表tbluser,动漫市场调查表tblsurvey,动漫信息表tblinfo。
    1.用户注册表(tbluser):在这里插入图片描述表1 用户注册表(tbluser)
    2.动漫市场调查表(tblsurvey):
    在这里插入图片描述表2 动漫市场调查表(tblsurvey)
    3.动漫信息表(tblinfo):
    在这里插入图片描述表3 动漫信息表(tblinfo)

    四、各功能模块程序设计
    动漫管理系统整体功能分为两个主要的大模块,管理员模块和用户模块。

    1. 起始页面
      由于管理员和普通用户的区别不同,所以登录界面不同,而且登录后所出现的功能页面也不相同,这就要用户清楚自己的身份,选择准确的登录界面,我为之设计了一个起始页面,如下图 图2 起始页面。
      在这里插入图片描述图2 起始页面
      2.管理员模块
      这个模块主要是管理员完成的其中包括动漫信息的录入、动漫信息的删除、动漫信息的修改、动漫信息的查询、,一共有4个界面,每个界面的功能也不相同,所以每个界面也不一样,下面将一一介绍每个界面的主要功能。主要模块如图2所示。

    图3 管理员功能模块

    ⑴ 管理员登录
    在登录界面的设计中,我采用的是有连接访问数据库,这样数据并发性问题更容易控制,数据也是当前的和及时更新的;此外还设有用户权限,权限不同登录成功后呈现出的主界面也不同;并且使用DataReader组件来以只读和仅转发的方式从数据源检索数据;效果图如图3所示。

    图3管理登录界面
    核心代码如下:
    该代码主要实现连接数据库
    string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”);
    OleDbConnection conn = new OleDbConnection(strConn);
    conn.Open();

        // OleDbCommand com = new OleDbCommand(sql, conn);
        OleDbCommand myCommand = new OleDbCommand("select * from [tbluser] where username='" + user.Text + "' and userpassword='" + userpass.Text + "'", conn);
        OleDbDataReader reader = myCommand.ExecuteReader();
        if (reader.Read())
        {
            Response.Cookies["username"].Value = user.Text;
            Response.Redirect("main.aspx");
        }
        else
        {
            Response.Write("用户名或密码不正确");
        }
        reader.Close();
        conn.Close();
    

    该代码主要实现跨页面传值,通过在Button控件的单击事件中定义一个cookie,并使用Response的Redirect方法跳转到主界面。
    msg.Text = “你的管理名是:” + user.Text + " 你的密码是:" + userpass.Text + “”;
    if (user.Text == “admin” && userpass.Text == “123”)
    {
    Response.Redirect(“main-gl.aspx”);
    }
    Else{
    msg.Text = “你的管理名是:” + user.Text + " 你的密码是:" + userpass.Text + “” + “对不起,您的用户名或密码有误,请重新输入”;}
    ⑵管理主界面
    ①查询模块

    图4 查询模块功能实现图
    核心代码如下:
    该代码主要实现连接数据库
    string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”);

        OleDbConnection myConnection = new OleDbConnection(strConn);
    
        myConnection.Open();
    
        OleDbDataAdapter da = new OleDbDataAdapter("select * from tbluser where username='" + TextBox1.Text + "' ", myConnection);
    
        DataTable mydt = new DataTable();
        da.Fill(mydt);
        GridView1.DataSource = mydt;
    
        GridView1.DataBind();
        myConnection.Close();
    

    ②删除模块

    图5 删除模块功能实现图

    核心代码如下:
    该代码主要实现连接数据库
    string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”);
    OleDbConnection myConnection = new OleDbConnection(strConn);
    myConnection.Open();

        OleDbDataAdapter da = new OleDbDataAdapter("select * from tblinfo ", myConnection);
    
        DataTable myTable = new DataTable();
        da.Fill(myTable);
        GridView1.DataSource = myTable;
    
        GridView1.DataBind();
        myConnection.Close();
    

    添加button,编写代码,从数据库中删除要删除的数据。
    OleDbConnection conn = new OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”));
    conn.Open();
    string SQL = “delete from tblinfo where dmname=’” + TextBox1.Text + “’”;
    OleDbCommand comm = new OleDbCommand(SQL, conn);

        OleDbCommand myCommand = new OleDbCommand("select dmname from tblinfo where dmname='" + TextBox1.Text + "'", conn);
        OleDbDataReader reader = myCommand.ExecuteReader();
        if (reader.Read())
        {
            comm.ExecuteNonQuery();
            conn.Close();
            Response.Redirect("delete.aspx"); 
        }
        else
        {
    
            Response.Write("用户名不存在!");
    

    }

    ③添加模块

    图6 添加模块功能实现图

    核心代码如下:
    该代码主要实现连接数据库
    string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”);
    OleDbConnection myConnection = new OleDbConnection(strConn);
    myConnection.Open();

        OleDbDataAdapter da = new OleDbDataAdapter("select * from tblinfo ", myConnection);
    
        DataTable myTable = new DataTable();
        da.Fill(myTable);
        GridView1.DataSource = myTable;
    
        GridView1.DataBind();
        myConnection.Close();
    

    添加button控件,并编写代码,将数据插入数据库并显示。
    OleDbConnection conn = new OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”));
    conn.Open();
    string SQL = “Insert into tbluser values(’” + TextBox1.Text + “’,’” + TextBox2.Text + “’,’” + TextBox3.Text + “’)”;
    OleDbCommand comm = new OleDbCommand(SQL, conn);

        // OleDbCommand myCommand = new OleDbCommand("select user_id from tbluser where user_id='" + TextBox1.Text + "'", conn);
        OleDbCommand myCommand = new OleDbCommand("select username from tbluser where username='" + TextBox1.Text + "'", conn);
        OleDbDataReader reader = myCommand.ExecuteReader();
        if (reader.Read())
        {
            Response.Write("用户名已经存在!");
        }
        else
        {
            comm.ExecuteNonQuery();
            conn.Close();
            Response.Redirect("register.aspx");
        }
    

    ④修改模块

    图7 修改模块功能实现图

    核心代码如下:
    该代码主要实现连接数据库
    string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”);
    OleDbConnection myConnection = new OleDbConnection(strConn);
    myConnection.Open();

        OleDbDataAdapter da = new OleDbDataAdapter("select * from tblinfo ", myConnection);
    
        DataTable myTable = new DataTable();
        da.Fill(myTable);
        GridView1.DataSource = myTable;
    
        GridView1.DataBind();
        myConnection.Close();
    

    添加button控件,编写代码实现修改数据库中的数据。
    OleDbConnection conn = new OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”));
    conn.Open();
    string SQL = “update tblinfo set dmname=’” + TextBox2.Text + “’ where dmname=’” + TextBox1.Text + “’”;
    OleDbCommand comm = new OleDbCommand(SQL, conn);

        OleDbCommand myCommand = new OleDbCommand("select dmname from tblinfo where dmname='" + TextBox1.Text + "'", conn);
        OleDbDataReader reader = myCommand.ExecuteReader();
        if (reader.Read())
        {
            comm.ExecuteNonQuery();
            conn.Close();
            Response.Redirect("update.aspx");
        }
        else
        {
    
            Response.Write("用户名不存在!");
        }
    
    1. 用户模块
      这个模块主要是用户完成的其中包括用户登录到主界面并且进行动漫信息的查询、用户留言,用户可以查询自己想要的动漫信息,每个界面的功能也不相同,所以每个界面也不一样,下面将一一介绍每个界面的主要功能。主要模块如图8所示。

    图8 用户功能模块
    ⑴用户登录

    图9 用户登录界面
    核心代码如下:
    该代码主要实现连接数据库
    string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”);
    OleDbConnection conn = new OleDbConnection(strConn);
    conn.Open();

        // OleDbCommand com = new OleDbCommand(sql, conn);
        OleDbCommand myCommand = new OleDbCommand("select * from [tbluser] where username='" + user.Text + "' and userpassword='" + userpass.Text + "'", conn);
        OleDbDataReader reader = myCommand.ExecuteReader();
        if (reader.Read())
        {
            Response.Cookies["username"].Value = user.Text;
            Response.Redirect("main.aspx");
        }
        else
        {
            Response.Write("用户名或密码不正确");
        }
        reader.Close();
        conn.Close();
    

    ⑵用户注册

    图10 注册界面
    核心代码如下:
    该代码主要实现连接数据库
    ListBox1.Items.Clear();
    OleDbConnection conn = new OleDbConnection(“Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”));
    conn.Open();

        string SelectStr2 = "select username from tbluser where username='" + Yonghuming.Text + "'";
        string InsertStr2 = "insert  into tbluser values('" + Yonghuming.Text + "','" + Mima.Text + "')";
    
        OleDbCommand myCommand = new OleDbCommand();
        myCommand.Connection = conn;
        myCommand.CommandText = SelectStr2;
        OleDbDataReader reader = myCommand.ExecuteReader();
    
        if (reader.Read())
        {
            CustomValidator1.IsValid = false;
            reader.Close();
            conn.Close();
    
        }
        else
        {
    
            reader.Close();
            myCommand.CommandText = InsertStr2;
            myCommand.ExecuteNonQuery();
            conn.Close();
            ListBox1.Items.Add("账号为:" + Yonghuming.Text);
            ListBox1.Items.Add("密码为:" + Mima.Text);
    

    ⑶用户主界面
    ①用户查询

    图11 用户查询功能模块图
    核心代码如下:
    该代码主要实现连接数据库
    String strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”);

        OleDbConnection myConnection = new OleDbConnection(strConn);
    
        myConnection.Open();
    
        OleDbDataAdapter da = new OleDbDataAdapter("select * from tbluser where username='" + TextBox1.Text + "' ", myConnection);
    
        DataTable mydt = new DataTable();
        da.Fill(mydt);
        GridView1.DataSource = mydt;
    
        GridView1.DataBind();
        myConnection.Close();
    

    ②用户留言

    图12 用户留言功能模块图

    核心代码如下:
    protected void Page_Load(object sender, EventArgs e)
    {
    string strConn = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” + Server.MapPath(“Data/evelyn.mdb”);
    OleDbConnection conn = new OleDbConnection(strConn);
    conn.Open();
    //Label1.Text = Session[“user”].ToString();

    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        string str = "IP地址:" + Request.UserHostAddress + "<hr>";
        str += "发言时间:" + DateTime.Now + "<hr>";
        str += "发言内容:" + TextBox1.Text + "<hr color=#00ffff>";
        Application.Lock();
        Application["message"] = str + Application["message"];
        Application.UnLock();
        TextBox1.Text = "";
    
    }
    protected void Button2_Click(object sender, EventArgs e)
    {
        Application.Clear();
    }
    

    }
    五、使用说明
    首先使用Access建立数据表,创建动漫用户表,创建动漫市场调查表,创建动漫信息表。
    然后使用Visual Studio2012,创建新工程,设计登录界面,主页面,添加母版页,添加查询,修改,删除,添加等模块,并编写代码使其运行。
    然后在网站下创建文件夹Data,将我之前设计的表evelyn.mdb放入。
    程序主流程为:用户打开程序首先进入起始页面,起始页面中有“管理员登录”和“用户自登陆”俩个选项,操作者可以根据自身情况选择。普通用户选择“用户自登陆”,进入用户主页,可以使用查询功能和留言板功能。管理员选择“管理员登录”,进入管理员主页,可以对动漫信息进行添加,删除,修改,查询的操作。

    展开全文
  • WEB(World Wide Web)即全球广域网,也称为万维网,它一种基于超文本和HTTP的、全球性的、动态交互的、跨平台的分布式图形信息系统。其实,WEB就是全球互联网系统的统称,再简单点讲,WEB就是互联网。...
  • XSP一种基于Java和XML的能产生动态Web内容的服务器端语言。在Internet应用程序开发中,使用XSP可以实现静态内容、表现形式和程序逻辑的分离,而这种分离通过Apache Cocoon实现的。Cocoon 一个用Java语言编写的...
  • ?PHP^tl态网站设计课程标准 课程代码 10020004510 课程类别 必修 ...审核人 王永刚 课程定位 本课程系统维护专业的专业必修课在众多的动态网页技术中 PHP乍为 非常优秀的简便的WE印发语言满足了最新的互动式网络开
  • 奋斗网采用 PHP+MYSQL 构建的社会化网络简称 SNS。在奋斗网用户可以轻松构建一个以好友关系为核心的交流网络,让站点用户可以用迷你博客一句话记录生活中的点点滴滴;...轻松快捷的了解好友最新动态
  • ASP动态网站建设论文

    2009-09-04 18:39:18
    ASP动态网站建设论文,基于WEB的信息管理系统利用业已成熟的INTERNET技术
  • 动态网页技术是在传统的静态网页技术的基础上发展而来的,尤其适合现代人们对网络信息的获取速度和用户体验的要求。 介绍了目前的三种动态网页技术:JSP、ASP.NET和PHP。分别介绍了三种技术的产生背景和工作原理,并...
  • 农作物生产系统动态模拟把农业技术由经验型向精确型发展的有效途径,可以促进合理使用化肥,减少环境污染,节约水资源,节本增效,优质高产,合理利用作物营养,保证产量和质量。本项研究以玉米为对象,基于玉米的...
  • 摘 要 衣食住行无人能抗拒美食的诱惑松辽风味包括辽宁吉林和黑龙江三省地方风味称东北风味此次我要做的是一个关于东北特色的美食网站本设计是基于J2EE企业架构运用B/S结构的Web项目通过应用JSP动态网页制作技术和...
  • 一个简单的例子,为了网站那的响应速度,HTML静态页面往往我们最好的选择,但基于数据驱动的网站往往又很难用静态页面实现,那么将动态页面生成html的工作或许就是一个很好的应用场合。另外,对于一些模板的套用,...
  • 基于PHP的个人网站设计与实现论文介绍 摘要随着互联网的迅猛发展网站已经被应用到生活的各个领域与人们的生活融为一体息息相关本文通过对个人网站的系统分析系统设计系统实施等步骤详细介绍了应用PHP动态网页技术...
  • 本系统的页面设计主要在Dreamweaver环境下完成的,通过引入JSP技术和数据库技术使得博客系统的动态功能得以很好的实现,本系统的成功开发可以说是Dreamweaver结合JSP技术开发动态网站的成功体现。
  • 建设基于PHP技术的企业网站能够让需要了解企业的最新动态,需要进行客户与商户间的交流等的人们提供一个快速、方便的平台。通过本企业网站,展示某企业的最新信息,发布重大活动安排,展示最新的产品,为广大的客户...
  • 基于java的同乡会网站

    2020-10-19 11:52:41
    本同乡会网站是在myeclipse,jdk 平台上运用JSP技术来实现的。具有前台和后台功能,前台主要模块有:公告动态动态聚焦、财务公开、家乡文化、同乡会简介、联系我们、论坛社区;后台模块主要功能有:系统用户管理,...
  • 题目企业资讯管理网站,采用B/S(服务器/浏览器)架构,应用javaweb技术,采用Mysql数据库,用java语言实现。它的主要功能需要Myeclipse 平台,Tomcat 服务器,以及普通的浏览器即可实现。旨在通过建立这样一个...
  • 心理健康网是基于java语言将IT技术用于心理健康信息的管理, 协助大学生开展心理健康工作提高工作效率。系统使用Myeclipse开发,数据库同时支持sqlserver,mysql,资料有开题报告,毕业论文,源代码程序等.可以做适用于大...
  • 本同乡会网站是在myeclipse,jdk 平台上运用JSP技术来实现的。具有前台和后台功能,前台主要模块有:公告动态动态聚焦、财务公开、家乡文化、同乡会简介、联系我们、论坛社区;后台模块主要功能有:系统用户管理,...
  • 本毕业设计的内容设计并且实现一个基于web技术的企业门户网站,本系统主要以j2EE作为开发基础,主要使用了struts2+spring+hibernate等多种框架的结合使用,用myeclipse作为开发工具,以MYSQL作为数据库,以...
  • 凭借JEE体系结构、Sun Fire...就应用效果而言,由于网上银行的特点交易更新速度快,在系统实施成功后经常需要动态调整、增加交易,因此采用Java、JEE、JSP和HTML技术实现的Web页面便显得特别易于操作、管理和维护。
  • 基于ASP校园网站设计》毕业论文的目的及研究意义:主要设计计算机学院校园网站,随着计算机技术的发展,在线教育对我们生活和工作显得越来越重要,特别现在信息高度发达的今天,人们对最新信息的需求和发布迫切...
  • 聋人高等教育属于特殊教育,中国...为解决这一问题,本文采用UML建模语言及对网站系统进行静态和动态建模,弥补传统方法的不足。1UML语言简介UML(UnifiedModelingLanguage)由闻名世界的面向对象技术专家GradyBoo

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 934
精华内容 373
关键字:

动态网站技术是基于