使用IntelliJ IDEA开发SpringMVC网站(四)用户管理

news/2024/5/9 15:40:22/文章来源:https://blog.csdn.net/bat1992/article/details/70270738

七、用户管理

    既然我们要做一个博客管理系统,当然要首先实现我们的用户管理。在上一文中,我们已经配置好了数据库。接下来,就要实现网站的一些业务逻辑。

1、JPA操作定义

    在实现用户管理操作之前,需要讲解一下JPA的开发工作。

    首先,在com.gaussic.repository包内新建一个UserRepository接口:

    让该接口继承 JpaRepository:

package com.gaussic.repository;import com.gaussic.model.UserEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.stereotype.Repository;/*** Created by dzkan on 2016/3/8.*/
@Repository
public interface UserRepository extends JpaRepository<UserEntity, Integer> {
}

    在JpaRepository中,定义了几个简化的操作数据库的方法:

    (1) findAll():查找表中所有记录;

    (2)findOne(Integer id):按id来查找某一条记录;

    (3)findByXXX(Object xxx):在这里XXX是一个字段名,根据该字段的值开查找所有记录;

    (4)save()和delete():添加一条记录以及删除一条记录。

    除此之外,我们还可以在该repository中自定义新的方法,这将在稍后实际开发中提及。

2、后台管理

    为了尽可能的在省去篇幅的情况下,在此省去管理员操作的开发。默认在访问 /admin 时,进入后台管理。

(1)查看所有用户

    将MainController补充为如下形式:

package com.gaussic.controller;import com.gaussic.model.UserEntity;
import com.gaussic.repository.UserRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.ModelMap;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;import java.util.List;/*** Created by dzkan on 2016/3/8.*/
@Controller
public class MainController {// 自动装配数据库接口,不需要再写原始的Connection来操作数据库@AutowiredUserRepository userRepository;@RequestMapping(value = "/", method = RequestMethod.GET)public String index() {return "index";}@RequestMapping(value = "/admin/users", method = RequestMethod.GET)public String getUsers(ModelMap modelMap) {// 查询user表中所有记录List<UserEntity> userList = userRepository.findAll();// 将所有记录传递给要返回的jsp页面,放在userList当中modelMap.addAttribute("userList", userList);// 返回pages目录下的admin/users.jsp页面return "admin/users";}
}

    讲解:

    1. 自动装配:相当于数据库操作的极简化,只要定义了就可以直接进行数据库操作,不用再去管开启连接、关闭连接等问题

    2. 找到所有记录:使用JpaRepository的默认方法findAll()。

    3. modelMap:用于将controller方法里面的参数传递给所需的jsp页面,以进行相关显示。

    现在,需要在pages下新建目录admin,并新建users.jsp页面,以进行用户的管理:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --><title>SpringMVC 用户管理</title><!-- 新 Bootstrap 核心 CSS 文件 --><link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css"><!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --><!-- WARNING: Respond.js doesn't work if you view the page via file:// --><!--[if lt IE 9]><script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script><script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script><![endif]-->
</head>
<body>
<div class="container"><h1>SpringMVC 博客系统-用户管理</h1><hr/><h3>所有用户 <a href="/admin/users/add" type="button" class="btn btn-primary btn-sm">添加</a></h3><!-- 如果用户列表为空 --><c:if test="${empty userList}"><div class="alert alert-warning" role="alert"><span class="glyphicon glyphicon-info-sign" aria-hidden="true"></span>User表为空,请<a href="/admin/users/add" type="button" class="btn btn-primary btn-sm">添加</a></div></c:if><!-- 如果用户列表非空 --><c:if test="${!empty userList}"><table class="table table-bordered table-striped"><tr><th>ID</th><th>昵称</th><th>姓名</th><th>密码</th><th>操作</th></tr><c:forEach items="${userList}" var="user"><tr><td>${user.id}</td><td>${user.nickname}</td><td>${user.firstName} ${user.lastName}</td><td>${user.password}</td><td><a href="/admin/users/show/${user.id}" type="button" class="btn btn-sm btn-success">详情</a><a href="/admin/users/update/${user.id}" type="button" class="btn btn-sm btn-warning">修改</a><a href="/admin/users/delete/${user.id}" type="button" class="btn btn-sm btn-danger">删除</a></td></tr></c:forEach></table></c:if>
</div><!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>

    讲解:

  1. <c>标签:在jsp中使用了jstl语法,可以方便地进行一些判断<c:if>与遍历操作<c:forEach>;

  2. 页面使用了Bootstrap,部分功能将在之后实现。

    运行Tomcat,在浏览器中输入 http://localhost:8080/admin/users,进入用户管理界面,显示如下:

    由于目前数据库中没有数据,因而显示为空,现在需要向数据库中添加用户。

(2)添加用户

    在MainController中增加两个方法:

// get请求,访问添加用户 页面
@RequestMapping(value = "/admin/users/add", method = RequestMethod.GET)
public String addUser() {// 转到 admin/addUser.jsp页面return "admin/addUser";
}// post请求,处理添加用户请求,并重定向到用户管理页面
@RequestMapping(value = "/admin/users/addP", method = RequestMethod.POST)
public String addUserPost(@ModelAttribute("user") UserEntity userEntity) {// 注意此处,post请求传递过来的是一个UserEntity对象,里面包含了该用户的信息// 通过@ModelAttribute()注解可以获取传递过来的'user',并创建这个对象// 数据库中添加一个用户,该步暂时不会刷新缓存//userRepository.save(userEntity);// 数据库中添加一个用户,并立即刷新缓存userRepository.saveAndFlush(userEntity);// 重定向到用户管理页面,方法为 redirect:urlreturn "redirect:/admin/users";
}

    讲解:

  1. /admin/users/add请求:get请求转到添加用户页面

  2. /admin/users/addP请求:post请求收集数据并存库

  3. @ModelAttribute注解:收集post过来的数据(在此,相当于post过来了一整个userEntity,不用一个一个地取)

  4. save()和saveAndFlush():save()方法处理完毕后,数据依然在缓冲区未写入数据库,使用saveAndFlush()可以立即刷新缓冲区,写入数据库

  5. redirect:/admin/users:这里使用重定向,可以让该方法重定向访问一个请求,ruturn之后,将跳转到 :/admin/users 所访问的页面。

现在,在pages的admin目录下新建一个addUser.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --><title>SpringMVC 添加用户</title><!-- 新 Bootstrap 核心 CSS 文件 --><link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css"><!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --><!-- WARNING: Respond.js doesn't work if you view the page via file:// --><!--[if lt IE 9]><script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script><script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script><![endif]-->
</head>
<body>
<div class="container"><h1>SpringMVC 添加用户</h1><hr/><form:form action="/admin/users/addP" method="post" commandName="user" role="form"><div class="form-group"><label for="firstName">Nickname:</label><input type="text" class="form-control" id="nickname" name="nickname" placeholder="Enter Nickname:"/></div><div class="form-group"><label for="firstName">First Name:</label><input type="text" class="form-control" id="firstName" name="firstName" placeholder="Enter FirstName:"/></div><div class="form-group"><label for="lastName">Last Name:</label><input type="text" class="form-control" id="lastName" name="lastName" placeholder="Enter LastName:"/></div><div class="form-group"><label for="password">Password:</label><input type="text" class="form-control" id="password" name="password" placeholder="Enter Password:"/></div><div class="form-group"><button type="submit" class="btn btn-sm btn-success">提交</button></div></form:form>
</div><!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>

    讲解:

  1. <form:form>标签:使用Spring的form标签,可以方便的收集整块数据,commondName=“user”说明form内的内容都保存在这个user实例中,然后将整个user实例传递给controller处理。在所有的input标签中,name一定要与UserEntity中的成员相同,不然无法找到

  2. 在提交之后,后台将会处理 /admin/users/addP 请求。

    现在,重新启动服务器,访问 http://localhost:8080/admin/users/add 页面,如下图所示:

    输入数据,点击提交,数据库中将会写入新的用户,重新跳转到用户管理页面:

(3)查看用户详情

    在MainController中加入查看详情操作:

// 查看用户详情
// @PathVariable可以收集url中的变量,需匹配的变量用{}括起来
// 例如:访问 localhost:8080/admin/users/show/1 ,将匹配 id = 1
@RequestMapping(value = "/admin/users/show/{id}", method = RequestMethod.GET)
public String showUser(@PathVariable("id") Integer userId, ModelMap modelMap) {// 找到userId所表示的用户UserEntity userEntity = userRepository.findOne(userId);// 传递给请求页面modelMap.addAttribute("user", userEntity);return "admin/userDetail";
}

    在pages目录下新建 userDetail.jsp:

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --><title>SpringMVC 用户详情</title><!-- 新 Bootstrap 核心 CSS 文件 --><link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css"><!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --><!-- WARNING: Respond.js doesn't work if you view the page via file:// --><!--[if lt IE 9]><script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script><script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script><![endif]-->
</head>
<body>
<div class="container"><h1>SpringMVC 用户详情</h1><hr/><table class="table table-bordered table-striped"><tr><th>ID</th><td>${user.id}</td></tr><tr><th>Nickname</th><td>${user.nickname}</td></tr><tr><th>First Name</th><td>${user.firstName}</td></tr><tr><th>Last Name</th><td>${user.lastName}</td></tr><tr><th>Password</th><td>${user.password}</td></tr></table>
</div><!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>

    讲解:如何访问一个实例内的数据?

        使用${}语法,在{}内可以使用类似Java的方法方便地访问数据。

    重启服务器,进入 http://localhost:8080/admin/users ,点击ID = 1的用户的 详情 按钮,可以查看用户详情:

    从url可以看出,访问的是ID=1的用户的详细情况,这样的URL采用了REST风格设计,看起来更加简便。

(4)修改用户信息

    现在我们要对用户信息做一定的修改,那该如何做呢。假设我们要能够修改全部的数据(除了id),JpaRepository未定义update方法,需要我们自己定义。

    打开UserRepository,添加updateUser()接口方法:

package com.gaussic.repository;import com.gaussic.model.UserEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import org.springframework.stereotype.Repository;
import org.springframework.transaction.annotation.Transactional;/*** Created by dzkan on 2016/3/8.*/
@Repository
public interface UserRepository extends JpaRepository<UserEntity, Integer> {@Modifying      // 说明该方法是修改操作@Transactional  // 说明该方法是事务性操作// 定义查询// @Param注解用于提取参数@Query("update UserEntity us set us.nickname=:qNickname, us.firstName=:qFirstName, us.lastName=:qLastName, us.password=:qPassword where us.id=:qId")public void updateUser(@Param("qNickname") String nickname, @Param("qFirstName") String firstName,@Param("qLastName") String qLastName, @Param("qPassword") String password, @Param("qId") Integer id);
}

    在MainController中定义update操作方法:

// 更新用户信息 页面
@RequestMapping(value = "/admin/users/update/{id}", method = RequestMethod.GET)
public String updateUser(@PathVariable("id") Integer userId, ModelMap modelMap) {// 找到userId所表示的用户UserEntity userEntity = userRepository.findOne(userId);// 传递给请求页面modelMap.addAttribute("user", userEntity);return "admin/updateUser";
}// 更新用户信息 操作
@RequestMapping(value = "/admin/users/updateP", method = RequestMethod.POST)
public String updateUserPost(@ModelAttribute("userP") UserEntity user) {// 更新用户信息userRepository.updateUser(user.getNickname(), user.getFirstName(),user.getLastName(), user.getPassword(), user.getId());userRepository.flush(); // 刷新缓冲区return "redirect:/admin/users";
}

    然后,在pages目录下,新建updateUser.jsp文件:

<%@ taglib prefix="form" uri="http://www.springframework.org/tags/form" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="utf-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1"><!-- 上述3个meta标签*必须*放在最前面,任何其他内容都*必须*跟随其后! --><title>SpringMVC Demo 更新用户</title><!-- 新 Bootstrap 核心 CSS 文件 --><link rel="stylesheet" href="//cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css"><!-- HTML5 shim and Respond.js for IE8 support of HTML5 elements and media queries --><!-- WARNING: Respond.js doesn't work if you view the page via file:// --><!--[if lt IE 9]><script src="//cdn.bootcss.com/html5shiv/3.7.2/html5shiv.min.js"></script><script src="//cdn.bootcss.com/respond.js/1.4.2/respond.min.js"></script><![endif]-->
</head>
<body>
<div class="container"><h1>SpringMVC 更新用户信息</h1><hr/><form:form action="/admin/users/updateP" method="post" commandName="userP" role="form"><div class="form-group"><label for="firstName">Nickname:</label><input type="text" class="form-control" id="nickname" name="nickname" placeholder="Enter Nickname:"value="${user.nickname}"/></div><div class="form-group"><label for="firstName">First Name:</label><input type="text" class="form-control" id="firstName" name="firstName" placeholder="Enter FirstName:"value="${user.firstName}"/></div><div class="form-group"><label for="lastName">Last Name:</label><input type="text" class="form-control" id="lastName" name="lastName" placeholder="Enter LastName:"value="${user.lastName}"/></div><div class="form-group"><label for="password">Password:</label><input type="text" class="form-control" id="password" name="password" placeholder="Enter Password:"value="${user.password}"/></div><!-- 把 id 一并写入 userP 中 --><input type="hidden" id="id" name="id" value="${user.id}"/><div class="form-group"><button type="submit" class="btn btn-sm btn-success">提交</button></div></form:form>
</div><!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script><!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
<script src="//cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>

    重启服务器,进入 http://localhost:8080/admin/users ,点击第一个用户的 修改 按钮,做如下修改:

    提交后,重新跳转回用户管理页面,可发现修改完成:

(5)删除用户

    现在,新添加一个用户:

    现在我们需要删掉新加入的用户,打开MainController,加入以下方法:

// 删除用户
@RequestMapping(value = "/admin/users/delete/{id}", method = RequestMethod.GET)
public String deleteUser(@PathVariable("id") Integer userId) {// 删除id为userId的用户userRepository.delete(userId);// 立即刷新userRepository.flush();return "redirect:/admin/users";
}

    重启服务器,进入 http://localhost:8080/admin/users ,点击ID=2的用户的删除按钮,在controller中处理完之后,将跳转回用户管理界面:

 

    这样,增删该查基本完成了。

    其实,更到这里,基本就可以开始开发工作了,还有一些其他的功能,都需要通过平时的积累以及多查资料来完成。例如JSON数据的处理,异步请求的处理,以及相关外键等操作。

    要知道的是,读者所阅读的三十分钟,需要写这篇文章的人数个小时的努力,整理确实不易。读文章要有举一反三地态度,才能真正的把东西学精学全。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_862985.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

个人网站搭建保姆级教学:Hexo + Kaze + Gitee Pages

前 言 建网站本身是一个很大的工程&#xff0c;涉及前端页面的搭建&#xff0c;网站数据的存储&#xff0c;还要购置服务器资源&#xff0c;甚至是后期的维护&#xff0c;过程相当繁琐。 不过如果仅仅是想搭建个人的网站&#xff0c;写写博客&#xff0c;想要美观&#xff0c…

搭建 Drupal 个人网站的图文教学

操作场景 Drupal 是使用 PHP 语言编写的开源内容管理框架&#xff08;CMF&#xff09;&#xff0c;由内容管理系统&#xff08;CMS&#xff09;及 PHP 开发框架&#xff08;Framework&#xff09;共同构成。Drupal 具备强大的定制化开发能力&#xff0c;您可使用 Drupal 作为个…

云服务器,网站域名没有备案为啥就无法访问呢?

不是阿里云的要备案&#xff0c;而且只要是服务器在国内的&#xff0c;就都要备案才可以正常使用的哦&#xff01; 下面咱们逐个解答题主的问题&#xff1a; 1、备案指的是域名备案还是ip备案还是阿里云租的服务器备案&#xff1f; 备案指的是域名的备案&#xff0c;因为备案…

利用爬虫爬取看看豆网站站的数据信息

其实很早我就开始关注爬虫技术&#xff0c;这两天特别学习了一下&#xff0c;并且做了一个简单的demo。爬取了看看豆网站的数据信息。总共11751本书&#xff0c;爬取了不到3个小时&#xff0c;基本每秒爬取1条。速度慢的原因主要是单线程&#xff0c;使用mysql数据库。想要提高…

利用爬虫爬取 zol网站热门手机

使用了20几分钟&#xff0c;爬取了zol相关的热门手机型号、特点、价格、上市时间、屏幕大小相关信息。对最新的热门手机做了一个简单的统计。如果你想知道任何其他的信息&#xff0c;可以给我留言。我已经把我的相关代码传导了github上。欢迎下载。另附其中还有关于LOL英雄数据…

又拍网架构-又一个用到PYTHON的网站

又拍网是一个照片分享社区&#xff0c;从2005年6月至今积累了260万用户&#xff0c;1.1亿张照片&#xff0c;目前的日访问量为200多万。5年的发展历程里经历过许多起伏&#xff0c;也积累了一些经验&#xff0c;在这篇文章会介绍一些在技术上的积累。 又拍网和大多数Web2.0站点…

web网站搜索框的搜索实现

js 添加一个按钮 &#xff0c;给按钮&#xff0c;添加&#xff0c;onclick事件"aiqiyi()" function aiqiyi(){ var t获取搜索框值&#xff1b; window.location.href"http://so.iqiyi.com/so/q_"t; http://so.iqiyi.com/so/q_ 是爱奇艺的搜索&#xff…

IIS+php环境下TinkPHP5的网站配置总结(萌新亲测)

环境介绍 Win7;我用的是ThinkPHP5.0框架&#xff1b;phpStudy2008集成环境&#xff0c;它会集成php5.2到7.2的所有版本&#xff0c;所以免去了安装php的步骤。一开始我在本地用的是Apachephp环境运行的网站&#xff0c;这是没有任何问题的&#xff0c;但是服务器的环境是IISph…

六款堪称神器的网站

导读网站是通往互联网世界的一大工具&#xff0c;在这片信息的海洋上&#xff0c;总有那么几款产品&#xff0c;如海岛般骄傲伫立&#xff0c;带给人不一样的感觉。当然&#xff0c;本文的标题是有失公允的&#xff0c;世界是优秀的产品不计其数&#xff0c;要分类罗列出来简直…

APP设计与网站着陆页设计

APP设计 可用性的四要素 o 功能性&#xff1a;这个产品能够正常工作吗&#xff1f; o 可学习性&#xff1a;这个产品在不经过额外学习的情况下能够顺利使用吗&#xff1f; o 灵活性&#xff1a;除了完成主要的任务之外&#xff0c;这个产品能做更多的事情吗&#xff1…

win2012 服务器IIS 8.0 搭建FTP,VS2015发布网站(一)FTP设置

沉寂了段时间&#xff0c;想明白了一些事情&#xff0c;现在准备学学asp.net5当前微软的主流mvc5开发网站 现在想用nopcommerce 搭建商城&#xff0c;作为业余时间的爱好玩玩 首先&#xff0c;打开服务器管理器&#xff0c;点击添加角色和功能 web服务器IIS里面这些选项打勾 然…

win2012 服务器IIS 8.0 搭建FTP,VS2015发布网站(二)Visual Studio发布网站

书接上文&#xff0c;右键项目&#xff0c;点击发布 发布web里面&#xff0c;点击 自定义 输入配置文件名称 发布方法-选择FTP 服务器-填写ftp://ftp服务器地址:端口&#xff0c;例子:ftp://baidu.com:21端口号一定要加 站点路径-如果ftp的根路径是/&#xff0c;网站绝对路径…

python爬取前程无忧招聘网站数据搭建Hadoop、Flume、Kafka、Spark用Hive做数据分析Sqoop存储到Mysql并实现可视化

文章目录 一、项目总体要求二、环境搭建1、安装包准备2、安装jdk&#xff08;1&#xff09;查询是否安装java&#xff08;2&#xff09;卸载jdk&#xff08;3&#xff09;安装jdk&#xff08;4&#xff09;配置jdk环境变量 3、配置ssh免密登录&#xff08;1&#xff09;进入到我…

爬取我爱我家网站二手房信息

items文件定义爬取数据&#xff1a; apartment scrapy.Field() total_price scrapy.Field() agent scrapy.Field() image_urls scrapy.Field() images scrapy.Field()spider文件&#xff1a; # -*- coding: utf-8 -*- import scrapy from pachong2.items import Pachong…

使用httpwebrequest发送数据到网站

怎样通过HttpWebRequest 发送 POST 请求到一个网页服务器&#xff1f;例如编写个程序实现自动用户登录&#xff0c;自动提交表单数据到网站等。 假如某个页面有个如下的表单&#xff08;Form&#xff09;&#xff1a; <form name"form1" action" http://www.…

大型电子商务网站架构

大型电子商务网站架构 (转自&#xff1a;http://www.cnblogs.com/skydau/archive/2009/08/30/1556701.html) 7.同一个网站的多语言该如何处理是好,使用配置文件然后cookie或url来判别?客户是自己公司&#xff0c;使用标准方法即可 8.电子商务网站最多的就是 商品的打折方式和…

小型电子商务网站设计原则

最近谈得最多的话题莫过于大规模&#xff0c;大数据量&#xff0c;高性能&#xff0c;高并发等架构话题&#xff0c;其实一个电子商务网站开始时一定是小规模&#xff0c;小数据量&#xff0c;用不着把架构弄得过于复杂。高度设计、过度扩展(高德纳大爷也说过&#xff0c;"…

正确地定制您的网站 ndash; 文件替代机制,zencart

很多用户对zen cart做了自己的修改&#xff0c;非常好&#xff01;但同时&#xff0c;一些用户修改了很多重要的文件&#xff0c;例如&#xff1a; /includes/filenames.php /includes/languages/schinese.php /includes/languages/schinese/*.php 等等… 友情提示&#xff…

网站集成支付宝

&#xff08;本文转载于http://stephen830.javaeye.com/blog/254827 ) 国内电子商务系统实现的基本流程如下&#xff1a; 客户在系统内下订单 -> 系统根据订单生成支付宝接口url -> 客户通过url使用支付宝&#xff08;网上银行&#xff09;付款 -> 支付宝将客户的付款…

淘宝技术发展(个人网站)之二

个人网站 2003年4月7日&#xff0c;马云&#xff0c;在杭州&#xff0c;成立了一个神秘的组织。他叫来十位员工&#xff0c;要他们签了一份协议&#xff0c;这份协议要求他们立刻离开阿里巴巴&#xff0c;去做一个神秘的项目。这个项目要求绝对保密&#xff0c;老马戏称“连说梦…