卢斌

卢斌 公开分享 2016-07-10

Android mvp 开发架构总结

  1. 在了解mvp之前,我们都有涉及过mvc模式,即Model-模型、View-视图、Controller-控制器。Mvp模式是mvc模式的升级版,即ModelM)-模型、ViewV)-视图、PresenterP)-协调器,至于升级在哪,那肯定就是逻辑控制处理的角色那部分了,ControllerPresenter都是处理控制各业务流程的作用,但是不同的是,在mvp当中,M V之间是没有任何关系的,这两者之间有一个P去交互他们,V只负责UI,而M负责远程和本地的线程操作。在P中,与VM的交互使用接口定义交互操作,起到了松耦合的作用,下面来具体讲讲mvp
  2. Google官方给出了mvp的示例,有几个已完成的示例和未完成的示例,其中我们选择了mvp的基础架构的todo-mvp来学习并且应用在项目当中。
  3. 看了这些结构,我们可以看出代码的分块方式是按照功能模块组织的,一个功能有一个模块,每个模块中分为四个类文件:ActivityFragmentPresenterContract。这里activity不是View,他只是负责创建VP的实例,并且将他们联系起来,而Fragment就是一个VPresenter就是一个PContract是一个契约类,同意管理VP的接口,便于查看和维护VP的功能。Model作为单独一个模块,放到了data目录下。其中,有DataSourcePresenter持有这个Model对象,还有一个Repository,也是DataSource的实现类,其中有远程数据RemoteDataSource对象和本地数据LocalDataSource对象,统一管理获取数据的方式。其中,还有ViewPresent的基础接口,View接口中有setPresenter方法,用于将Presenter实例传入View中,在Presenter的实现类的构造方法中调用。Presenter接口中有start方法,用于Presenter开始获取数据并调用View进行界面显示,在View的实现类Fragment中的onResume方法中调用。
  4. 以上就是todo-mvp的大概架构,其实一开始看的时候还是有点懵的,毕竟第一次在android上面使用开发架构,也是第一次使用mvp,所以去网上找了很多资料还有自己也练习了蛮久才弄得有点了解了。
  5. 接下来还要继续深入了解mvp,并且知道远程和本地的数据传输,在wxine app上面使用这个mvp模式来开发和管理。

0 条评论
发表评论…
0
吕健

吕健 公开分享 2016-07-10

Spring Boot任务总结

这个任务接来比较简单,但后来要连接数据库进行增删查改是比较难的尤其是改要非常注意。
一,首先要配置pom.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.tianmaying</groupId>
  6. <artifactId>microblog-demo</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9. <name>Microblog Demo</name>
  10. <description>Demo project for a microblog based on Spring Boot</description>
  11. <parent>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-parent</artifactId>
  14. <version>1.2.5.RELEASE</version>
  15. <relativePath/>
  16. <!-- lookup parent from repository -->
  17. </parent>
  18. <properties>
  19. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  20. <java.version>1.8</java.version>
  21. </properties>
  22. <dependencies>
  23. <!-- MYSQL -->
  24. <dependency>
  25. <groupId>mysql</groupId>
  26. <artifactId>mysql-connector-java</artifactId>
  27. </dependency>
  28. <!-- Spring Boot JDBC -->
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-starter-jdbc</artifactId>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.springframework.boot</groupId>
  35. <artifactId>spring-boot-starter-jdbc</artifactId>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.springframework.boot</groupId>
  39. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.springframework.boot</groupId>
  43. <artifactId>spring-boot-starter-web</artifactId>
  44. </dependency>
  45. <dependency>
  46. <groupId>com.h2database</groupId>
  47. <artifactId>h2</artifactId>
  48. <scope>runtime</scope>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.springframework.boot</groupId>
  52. <artifactId>spring-boot-starter-test</artifactId>
  53. <scope>test</scope>
  54. </dependency>
  55. </dependencies>
  56. <build>
  57. <plugins>
  58. <plugin>
  59. <groupId>org.springframework.boot</groupId>
  60. <artifactId>spring-boot-maven-plugin</artifactId>
  61. </plugin>
  62. </plugins>
  63. </build>
  64. </project>

接着是建立一个数据库:

  1. drop table if exists entries;
  2. create table entries (
  3. id integer primary key auto_increment,
  4. title text not null,
  5. `text` text not null
  6. );

连接数据库

  1. application.properties
  2. spring.datasource.url=jdbc:mysql://localhost:3306/test
  3. spring.datasource.username=root
  4. spring.datasource.password=root
  5. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  6. entries
  7. drop table if exists entries;
  8. create table entries (
  9. id integer primary key auto_increment,
  10. title text not null,
  11. text text not null
  12. );

下面是功能的编写:

  1. package demo.microblog;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.jdbc.core.JdbcTemplate;
  6. import org.springframework.jdbc.core.RowMapper;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.ui.Model;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestMethod;
  11. import org.springframework.web.bind.annotation.RequestParam;
  12. import javax.servlet.http.HttpSession; //导入必要的包
  13. import java.sql.ResultSet;
  14. import java.sql.SQLException;
  15. import java.util.List; //导入数据库
  16. @SpringBootApplication
  17. @Controller //该注解的作用为定义控制器类
  18. public class MicroblogDemoApplication {
  19. private static final String LOGGED_IN = "logged_in";
  20. @Autowired //自动导入依赖的bean
  21. private JdbcTemplate jdbcTemplate;
  22. public static void main(String[] args) {
  23. SpringApplication.run(MicroblogDemoApplication.class, args);
  24. }
  25. @RequestMapping(value = "", method = RequestMethod.GET) //从数据库中用get以获取值
  26. public String index(Model model) {
  27. List<Entry> entries = this.jdbcTemplate.query("select id , title, text from entries", //查询sql语句
  28. new RowMapper<Entry>() {
  29. public Entry mapRow(ResultSet rs, int i) throws SQLException {
  30. return new Entry(rs.getInt("id"),rs.getString("title"), rs.getString("text"));
  31. }
  32. }); //查询功能
  33. model.addAttribute("entries", entries);
  34. return "index";
  35. }
  36. @RequestMapping(value = "", method = RequestMethod.POST) //以一个表的形式传值
  37. public String create(@RequestParam("title") String title,
  38. @RequestParam("text") String text) {
  39. this.jdbcTemplate.update("insert into entries(title, text) values(?,?)", title, text);
  40. return "redirect:/";
  41. } //增加功能
  42. @RequestMapping(value = "/login", method = RequestMethod.GET) //用get方法获取值
  43. public String loginPage(HttpSession session) {
  44. if (session.getAttribute(LOGGED_IN) != null) { //利用session对象令网页显示信息
  45. return "redirect:/";
  46. }
  47. return "login";
  48. }
  49. private boolean verify( String username, String password) { //设定账号为1,密码为1
  50. return "1".equals(username) && "1".equals(password);
  51. }
  52. @RequestMapping(value = "/login", method = RequestMethod.POST) //用post方法向数据库传入账号与密码的值
  53. public String login(@RequestParam("username") String username,
  54. @RequestParam("password") String password,
  55. HttpSession session) {
  56. if (session.getAttribute(LOGGED_IN) != null) { //判断账号和密码是否为空
  57. return "redirect:/";
  58. }
  59. if (!verify(username, password)) { //判断是不是正确的账号密码
  60. return "login";
  61. }
  62. session.setAttribute(LOGGED_IN, true); //正确就会跳到主页
  63. return "redirect:/";
  64. }
  65. @RequestMapping(value = "/logout", method = { RequestMethod.GET, RequestMethod.POST}) //处理登出请求
  66. public String logout(HttpSession session) {
  67. session.removeAttribute(LOGGED_IN);
  68. return "redirect:/";
  69. }
  70. @RequestMapping(value = "/delete", method = RequestMethod.GET) //用get方法获取id然后进行删除
  71. public String delete(@RequestParam("id") int id) {
  72. this.jdbcTemplate.update("delete from entries where id=?", id); //删除的sql语句
  73. return "redirect:/";
  74. }
  75. @RequestMapping(value = "/edit", method = { RequestMethod.GET}) //传地址使用get
  76. public String edit(Model model, @RequestParam("id") Integer id) {
  77. System.out.println(id+"ddddddddd"); //检测是否向页面传值。
  78. Entry entry = this.jdbcTemplate.queryForObject("select id , title, text from entries where id=?",
  79. new RowMapper<Entry>() {
  80. public Entry mapRow(ResultSet rs, int i) throws SQLException {
  81. return new Entry(rs.getInt("id"),rs.getString("title"), rs.getString("text"));
  82. }
  83. }, id); //传单个对象值的语法为:this.jdbcTemplate.queryForObject(sql, requiredType, args)sql语句+泛式变量+参数(用于单个对象传值)
  84. model.addAttribute("entry", entry);
  85. return "/update"; //删除功能
  86. }
  87. @RequestMapping(value = "/update", method = RequestMethod.GET) //用get方法从数据库中获取值并实现修改
  88. public String update(@RequestParam("id") Integer id,
  89. @RequestParam("title") String title,
  90. @RequestParam("text") String text) {
  91. this.jdbcTemplate.update("update entries set title=?,text=? where id=?",title,text,id); //修改的sql语句
  92. return "redirect:/"; //修改功能
  93. }
  94. static class Entry {
  95. public Integer id;
  96. public String title;
  97. public String text;
  98. public Entry() {
  99. }
  100. public Entry(Integer id,String title, String text) { //设置id,title,text值使这三个字段可以进行操作
  101. this.id = id;
  102. this.title = title;
  103. this.text = text;
  104. }
  105. public Integer getId() {
  106. return id;
  107. }
  108. public void setId(Integer id) {
  109. this.id = id;
  110. }
  111. public String getTitle() {
  112. return title;
  113. }
  114. public void setTitle(String title) {
  115. this.title = title;
  116. }
  117. public String getText() {
  118. return text;
  119. }
  120. public void setText(String text) {
  121. this.text = text;
  122. }
  123. }
  124. }

0 条评论
发表评论…
0
郑佳杭

郑佳杭 公开分享 2016-07-10

spring boot JDBCTemplate

实现过程:首先创建Maven文件
然后配置 pom.xml
需要导入的JAR包有:

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
</parent>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

配置完pom.XML文件后 ,建立模型层 ,放入需要操作的数据。

建立方法层 :
方法层是最容易出问题的地方,而且大部分地方不报错,特别是以下几处最容易出错,卡时间:
1:SQL语句没有放参数进来
@RequestMapping(value = “”, method = RequestMethod.POST)
public String create( ) {
this.jdbcTemplate.update(“insert into entries(title, text) values(?,?)”, title, text);
return “redirect:/“;
}
2:直接做连接,页面没传参数进来执行不了方法
<a href="update" >update</a>
3:不清楚POST,GET的区别。随便写。
@RequestMapping(value= “”, method = RequestMethod.GET)
其他的大部分就是语法的问题了。

因为微博登陆需要登录界面所以还有登陆与登出方法。
@RequestMapping(value = “/login”, method = RequestMethod.GET)
public String loginPage(HttpSession session){ //获取session
if (session.getAttribute(LOGGED_IN) != null) { //session.getAttribute() 取括号里的值
return “redirect:/“; } return “login”; //返回登录界面 }
private boolean verify( String username, String password) { //布尔数 非真即假
return “1”.equals(username) && “1”.equals(password); //如果username 字符不等于1 和 password不等于1 ,返回。
}

@RequestMapping(value = “/login”, method = RequestMethod.POST)
public String login(@RequestParam(“username”) String username,
@RequestParam(“password”) String password,
HttpSession session) {
if (session.getAttribute(LOGGED_IN) != null) { //如果 输入的值 不等于空 返回首页
return “redirect:/“; }
if (!verify(username, password)) { //如果不通过 上面verify 则返回登录界面
return “login”;}
session.setAttribute(LOGGED_IN, true);
return “redirect:/“; //取输入的值 和真 返回首页 }

@RequestMapping(value = “/logout”, method = { RequestMethod.GET, RequestMethod.POST})//退出登录
public String logout(HttpSession session) {
session.removeAttribute(LOGGED_IN); //移除 删除属性 没有属性了 没有LOGGED_IN 前面的登录 判断就不成立了
return “redirect:/“; //返回 首页 退出
}

JdbcTemplate的实例中有一系列的方法如:queryForXXX,update,delete大大简化了JDBC操作。JDBCTemplate中的各个方法平均只需要5~6行代码就可以完成,而原本的JDBC需要使用10~14行代码,相较而言使用JDBCTemplate的效率更高,所以我认为JAVA开发人员必须熟悉JDBCTemplate。
下面是一些注解和专业词语的解释:
注解及其释义
@SpringBootApplication注解可以替代
@Configuration, @EnableAutoConfiguration, @ComponentScan这三个注解
@Component 用于将所标注的类加载到 Spring 环境中
@Configuration 用于取代 XML 来配置 Spring
@componentsan 泛指组件
@controller 控制器(注入服务)
@Autowired 它可以对类成员变量、方法及构造函数进行标注,完成自动装配的工作。 代替get set 方法 。
@RequestMapping是一个用来处理请求地址映射的注解。
@RequestParam 传参数。
专业词语及其用法
SpringApplication.run(MicroblogDemoApplication.class, args);
使用了SpringApplication帮助类,以Application这个类作为配置来启动Spring 运行上下文的功能。
MicroblogDemoApplication:java文件的名称
Class:文件后缀
Args:参数

model.addAttribute(“entries”, entries);
addAttribute()函数给List 添加一个属性 不用返回值。

new RowMapper<Entry>
//RowMapper可以将数据中的每一行封装成用户定义的类。如果是自定义的类型就需要重新包装。

public Entry mapRow(ResultSet rs, int i){}
//ResultSet(结果集)是数据中查询结果返回的一种对象,可以说结果集是一个存储查询结果的对象,但是结果集并不仅仅具有存储的功能,他同时还具有操纵数据的功能,可能完成对数据的更新等.

session.getAttribute(LOGGED_IN) != null
//session.getAttribute() 取括号里的值。

this.title = title;
this.title= title的作用 : 这里定义了一个名为title的变量 而自己的类里也定义了private string title 防止给错数据 。

0 条评论
发表评论…
0
何康勇

何康勇 公开分享 2016-07-09

总结

经过这几天紧张的学习,以及老师的告诫让我再一次的认识到了这个工作室,首先是我对这几天的学习的玩的态度,但是我也有完成我的任务,但是我的基础有点不号所以我就在孙经理那里做了一些模板,http://demo.iksns.com/themes88/
这个网址就是我的任务,我和钟明杨同学一起完成的任务,所以,我和钟明杨同学的分配则是我做视频,产品,动态,相册的网页,钟明杨则是做首页以及介绍方面的网页,下面得代码首先是我的视频的网页的代码:
<!doctype html>

<html lang="en">

<head>
<meta charset="UTF-8">
<title>视频</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/font-awesome.min.css"rel="stylesheet" >
<link href="css/style.css" rel="stylesheet">
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>

<body>
<div class="bac">
<div class="container">
<div class="nav col-md-8 col-md-offset-1">
<ul class="nava">
<li class="address"><i class="fa fa-map-marker"></i>深圳市黄阁坑华兴路天汇大厦</li>
<li class="mailbox"><i class="fa fa-envelope"></i>[email protected]</li>
<li class="Contact-number"><i class="fa fa-phone"></i>4001-833-123</li>
</ul>
</div>
<div class="col-md-md-2">
<ul class="navb">
<li><a href="#" class="facebook"><i class="fa fa-facebook "></i></a></li>
<li><a href="#" class="android"><i class="fa fa-android "></i></a></li>
<li><a href="#" class="plus"><i class="fa fa-google-plus "></i></a></li>
<li><a href="#" class="google"><i class="fa fa-google-plus "></i></a></li>
</ul>
</div>
</div>
</div>
<div class="baca">
<div class="container">
<div class="row">
<div class="col-md-2 col-md-offset-1 pht">
<img src="img/1.png" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-5 left">
<ul class="pull-left">
<li><a href="#">主页</a></li>
<li><a href="#">产品</a></li>
<li><a href="#">相册</a></li>
<li><a href="#">视频</a></li>
<li><a href="#">动态</a></li>
<li><a href="#">介绍</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="bacb">
<div class="container">
<div class="word col-md-3 col-md-offset-1">
<span class="inf"><strong>最新视频</strong></span>
全网最新最热门的视频
</div>
<div class="sign">
<a href="#">首页</a><span class="first">>视频</span>
</div>
</div>
</div>
<!-- 我是无敌的分割线 -->
<div class="container">
<div class="row">
<div class="col-md-1 col-md-offset-1" style="margin-top:30px;">
<button type="button" class="btn btn-info">全部</button>
</div>
<div class="btn-group btn-b" style="margin-top:30px;">
<button type="button" class="btn btn-info">其他分类</button>
<button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
<li><a href="#">热门</a></li>
<li><a href="#">最近</a></li>
<li><a href="#">一周之前</a></li>
<li><a href="#">一月之前</a></li>
</ul>
</div>
</div>
<div class="row">
<div class="col-md-2 col-md-offset-5" style="margin-top:60px;">
<button type="button" class="btn btn-info">《</button>
<button type="button" class="btn btn-info">》</button>
</div>
</div>
</div>
<!-- 我是靓丽的分割线 -->
<section class="bacd" style="margin-top:90px;">
<div class="container">
<div class="span1">
<h1><i class="fa fa-android vertical"></i>网信社交</h1>
</div>
<div class="row pull-top">
<div class="col-md-3">
<h4><strong>关于我们</strong></h4>
<div class="row">
<div class="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
</div>
<div class="row">
<div class="col-md-12">
网信社交平台是一个开放的商务社交网络,向全球个人与企业提供商务社交网络服务。<br><br>地址:深圳市黄阁坑华兴路天汇大厦电话: 400-1833-123传真: 0755-81234567
</div>
</div>
<div class="row">
<div class="col-md-12">
<ul class="icon">
<li><a href="#" class="one once"><i class="fa fa-facebook"></i></a></li>
<li><a href="#" class="two once"><i class="fa fa-android"></i></a></li>
<li><a href="#" class="three once"><i class="fa fa-google-plus"></i></a></li>
<li><a href="#" class="four once"><i class="fa fa-envelope"></i></a></li>
<li><a href="#" class="fire once"><i class="fa fa-phone"></i></a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-3">
<h4><strong>标签</strong></h4>
<div class="row">
<div class="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
<div class="row">
<div class="col-md-12 Label">
<span class="tag"><span>网站建设</span></span>
<span class="tag"><span>网信社交</span></span>
<span class="tag"><span>网页设计</span></span>
<span class="tag"><span>网信</span></span>
<span class="tag"><span>创新</span></span>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<h4><strong>热门动态</strong></h4>
<div class="row">
<div clas="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
</div>
</div>
<div class="col-md-3">
<h4><strong>热门相册</strong></h4>
<div class="row">
<div class="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
</div>
</div>
</div>
</div>
<section class="tail">
<div class="container ">
<div class="juzhong col-md-6">
Copyright © 2014 - 备案号: 粤ICP备09210383号 | 铱王星科技有限公司
</div>
<div class="icon2 col-md-5">
<ul class="nave">
<li><a href="#" class="tge"><i class="fa fa-check-circle"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-comments"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-diamond"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-microphone"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-star"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-university"></i></a></li>
</ul>
</div>
</div>
</section>
</section>
</body>
</html>
下面的就是我的相册的代码:
<!doctype html>

<html lang="en">

<head>
<meta charset="UTF-8">
<title>相册</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/font-awesome.min.css"rel="stylesheet" >
<link href="css/style.css" rel="stylesheet">
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>

<body>
<div class="bac">
<div class="container">
<div class="nav col-md-8 col-md-offset-1">
<ul class="nava">
<li class="address"><i class="fa fa-map-marker"></i>深圳市黄阁坑华兴路天汇大厦</li>
<li class="mailbox"><i class="fa fa-envelope"></i>[email protected]</li>
<li class="Contact-number"><i class="fa fa-phone"></i>4001-833-123</li>
</ul>
</div>
<div class="col-md-md-2">
<ul class="navb">
<li><a href="#" class="facebook"><i class="fa fa-facebook "></i></a></li>
<li><a href="#" class="android"><i class="fa fa-android "></i></a></li>
<li><a href="#" class="plus"><i class="fa fa-google-plus "></i></a></li>
<li><a href="#" class="google"><i class="fa fa-google-plus "></i></a></li>
</ul>
</div>
</div>
</div>
<div class="baca">
<div class="container">
<div class="row">
<div class="col-md-2 col-md-offset-1 pht">
<img src="img/1.png" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-5 left">
<ul class="pull-left">
<li><a href="#">主页</a></li>
<li><a href="#">产品</a></li>
<li><a href="#">相册</a></li>
<li><a href="#">视频</a></li>
<li><a href="#">动态</a></li>
<li><a href="#">介绍</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="bacb">
<div class="container">
<div class="word col-md-3 col-md-offset-1">
<span class="inf"><strong>最新相册</strong></span>
全网最新最热门的相册
</div>
<div class="sign">
<a href="#">首页</a><span class="first">>相册</span>
</div>
</div>
</div>
<!-- 上面的代码都是头部的所有代码 -->
<div class="container">
<div class="row">
<div class="btn-a col-md-1 col-md-offset-1">
<button type="button" class="btn btn-info">所有</button>
</div>
<div class="btn-group btn-b">
<button type="button" class="btn btn-info">其他分类</button>
<button type="button" class="btn btn-info dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
<span class="caret"></span>
<span class="sr-only">Toggle Dropdown</span>
</button>
<ul class="dropdown-menu">
<li><a href="#">热门</a></li>
<li><a href="#">最近</a></li>
<li><a href="#">一周之前</a></li>
<li><a href="#">一月之前</a></li>
</ul>
</div>
</div>
<div class="row top">
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
</div>
<div class="row top">
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
</div>
<div class="row top">
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-2 col-sm-3">
<img src="img/1.jpg" class="img-responsive" alt="Responsive image">
</div>
</div>
<div class="Page col-md-3 col-md-offset-5">
<button type="button" class="btn btn-info">《</button>
<button type="button" class="btn btn-info">1</button>
<button type="button" class="btn btn-info">2</button>
<button type="button" class="btn btn-info">3</button>
<button type="button" class="btn btn-info">》</button>
</div>
</div>
<!-- 我是一个非常漂亮的分割线 -->
<section class="bacd">
<div class="container">
<div class="span1">
<h1><i class="fa fa-android vertical"></i>网信社交</h1>
</div>
<div class="row pull-top">
<div class="col-md-3">
<h4><strong>关于我们</strong></h4>
<div class="row">
<div class="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
</div>
<div class="row">
<div class="col-md-12">
网信社交平台是一个开放的商务社交网络,向全球个人与企业提供商务社交网络服务。<br><br>地址:深圳市黄阁坑华兴路天汇大厦电话: 400-1833-123传真: 0755-81234567
</div>
</div>
<div class="row">
<div class="col-md-12">
<ul class="icon">
<li><a href="#" class="one once"><i class="fa fa-facebook"></i></a></li>
<li><a href="#" class="two once"><i class="fa fa-android"></i></a></li>
<li><a href="#" class="three once"><i class="fa fa-google-plus"></i></a></li>
<li><a href="#" class="four once"><i class="fa fa-envelope"></i></a></li>
<li><a href="#" class="fire once"><i class="fa fa-phone"></i></a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-3">
<h4><strong>标签</strong></h4>
<div class="row">
<div class="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
<div class="row">
<div class="col-md-12 Label">
<span class="tag"><span>网站建设</span></span>
<span class="tag"><span>网信社交</span></span>
<span class="tag"><span>网页设计</span></span>
<span class="tag"><span>网信</span></span>
<span class="tag"><span>创新</span></span>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<h4><strong>热门动态</strong></h4>
<div class="row">
<div clas="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
</div>
</div>
<div class="col-md-3">
<h4><strong>热门相册</strong></h4>
<div class="row">
<div class="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
</div>
</div>
</div>
</div>
<section class="tail">
<div class="container ">
<div class="juzhong col-md-6">
Copyright © 2014 - 备案号: 粤ICP备09210383号 | 铱王星科技有限公司
</div>
<div class="icon2 col-md-5">
<ul class="nave">
<li><a href="#" class="tge"><i class="fa fa-check-circle"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-comments"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-diamond"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-microphone"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-star"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-university"></i></a></li>
</ul>
</div>
</div>
</section>
<div class="lue-top"></div>
</section>
</body>
</html>
下面的就是我的产品的代码:<!doctype html>

<html lang="en">

<head>
<meta charset="UTF-8">
<title>Document</title>
<link href="css/bootstrap.min.css" rel="stylesheet">
<link href="css/font-awesome.min.css"rel="stylesheet" >
<link href="css/style.css" rel="stylesheet">
<script src="js/jquery.min.js"></script>
<script src="js/bootstrap.min.js"></script>
</head>
</head>

<body>
<div class="bac">
<div class="container">
<div class="nav col-md-8 col-md-offset-1">
<ul class="nava">
<li class="address"><i class="fa fa-map-marker"></i>深圳市黄阁坑华兴路天汇大厦</li>
<li class="mailbox"><i class="fa fa-envelope"></i>[email protected]</li>
<li class="Contact-number"><i class="fa fa-phone"></i>4001-833-123</li>
</ul>
</div>
<div class="col-md-md-2">
<ul class="navb">
<li><a href="#" class="facebook"><i class="fa fa-facebook "></i></a></li>
<li><a href="#" class="android"><i class="fa fa-android "></i></a></li>
<li><a href="#" class="plus"><i class="fa fa-google-plus "></i></a></li>
<li><a href="#" class="google"><i class="fa fa-google-plus "></i></a></li>
</ul>
</div>
</div>
</div>
<div class="baca">
<div class="container">
<div class="row">
<div class="col-md-2 col-md-offset-1 pht">
<img src="img/1.png" class="img-responsive" alt="Responsive image">
</div>
<div class="col-md-5 left">
<ul class="pull-left">
<li><a href="#">主页</a></li>
<li><a href="#">产品</a></li>
<li><a href="#">相册</a></li>
<li><a href="#">视频</a></li>
<li><a href="#">动态</a></li>
<li><a href="#">介绍</a></li>
</ul>
</div>
</div>
</div>
</div>
<div class="bacb">
<div class="container">
<div class="word col-md-3 col-md-offset-1">
<span class="inf"><strong>最新文字</strong></span>
全网最热销最火爆产品
</div>
<div class="sign">
<a href="#">首页</a><span class="first">>产品</span>
</div>
</div>
</div>
<div class="container">
<div class="row">
<div class="col-md-2 col-md-offset-1 bton">
<button type="button" class="btn btn-info ">《</button>
<button type="button" class="btn btn-info ">》</button>
</div>
<div class="col-md-3 col-md-offset-6 search">
<div class="input-group">
<input type="text" class="form-control" placeholder="Search" aria-describedby="basic-addon2">
<span class="input-group-addon" id="basic-addon2"><i class="fa fa-search"></i></span>
</div>
<div class="row">
<div class="col-md-4">
<h3>分享</h3>
</div>
<div class="col-md-8" style="background-color:#f9f9f9;height:5px;width:100%"></div>
</div>
<div class="row">
<div class="col-md-12 top" >
<button type="button" class="btn btn-danger"><i class="fa fa-info-circle"></i>Pin It 100</button>
<button type="button" class="btn btn-info"><i class="fa fa-android"></i>Teittrt 45</button>
</div>
</div>
<div class="row">
<div class="col-md-6">
<h3>关于我们</h3>
</div>
<div class="col-md-6" style="background-color:#f9f9f9;height:5px;width:100%;"></div>
</div>
<div class="row">
<div class="col-md-12 size">
网信社交平台是一个开放的商务社交网络,向全球个人与企业提供商务社交网络服务。<br><br>网信社交平台是一个开放的商务社交网络,向全球个人与企业提供商务社交网络服务。
</div>
</div>
<div class="row">
<div class="col-md-4">
<h3>分类</h3>
</div>
<div class="col-md-8" style="background-color:#f9f9f9;height:5px;width:100%;"></div>
</div>
<div class="row">
<div class="col-md-6">
<h3>热门分类</h3>
</div>
<div class="col-md-6" style="background-color:#f9f9f9;height:5px;width:100%;"></div>
</div>
<div class="row">
<div class="col-md-4">
<h3>标签</h3>
</div>
<div class="col-md-8" style="background-color:#f9f9f9;height:5px;width:100%;"></div>
</div>
<div class="row">
<div class="Label">
<span class="tag"><span>网站建设</span></span>
<span class="tag"><span>网信社交</span></span>
<span class="tag"><span>网页设计</span></span>
<span class="tag"><span>网信</span></span>
<span class="tag"><span>创新</span></span>
<span class="tag"><span>响应式</span></span>
<span class="tag"><span>海量模板</span></span>
<span class="tag"><span>五版合一</span></span>
<span class="tag"><span>专业设计</span></span>
<span class="tag"><span>方便快捷</span></span>
</div>
</div>
</div>
</div>
</div>
<section class="bacd">
<div class="container">
<div class="span1">
<h1><i class="fa fa-android vertical"></i>网信社交</h1>
</div>
<div class="row pull-top">
<div class="col-md-3">
<h4><strong>关于我们</strong></h4>
<div class="row">
<div class="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
</div>
<div class="row">
<div class="col-md-12">
网信社交平台是一个开放的商务社交网络,向全球个人与企业提供商务社交网络服务。<br><br>地址:深圳市黄阁坑华兴路天汇大厦电话: 400-1833-123传真: 0755-81234567
</div>
</div>
<div class="row">
<div class="col-md-12">
<ul class="icon">
<li><a href="#" class="one once"><i class="fa fa-facebook"></i></a></li>
<li><a href="#" class="two once"><i class="fa fa-android"></i></a></li>
<li><a href="#" class="three once"><i class="fa fa-google-plus"></i></a></li>
<li><a href="#" class="four once"><i class="fa fa-envelope"></i></a></li>
<li><a href="#" class="fire once"><i class="fa fa-phone"></i></a></li>
</ul>
</div>
</div>
</div>
<div class="col-md-3">
<h4><strong>标签</strong></h4>
<div class="row">
<div class="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
<div class="row">
<div class="col-md-12 Label">
<span class="tag"><span>网站建设</span></span>
<span class="tag"><span>网信社交</span></span>
<span class="tag"><span>网页设计</span></span>
<span class="tag"><span>网信</span></span>
<span class="tag"><span>创新</span></span>
</div>
</div>
</div>
</div>
<div class="col-md-3">
<h4><strong>热门动态</strong></h4>
<div class="row">
<div clas="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
</div>
</div>
<div class="col-md-3">
<h4><strong>热门相册</strong></h4>
<div class="row">
<div class="col-md-12">
<img src="img/2.png" class="img-responsive" alt="Responsive image">
</div>
</div>
</div>
</div>
</div>
<section class="tail">
<div class="container ">
<div class="juzhong col-md-6">
Copyright © 2014 - 备案号: 粤ICP备09210383号 | 铱王星科技有限公司
</div>
<div class="icon2 col-md-5">
<ul class="nave">
<li><a href="#" class="tge"><i class="fa fa-check-circle"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-comments"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-diamond"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-microphone"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-star"></i></a></li>
<li><a href="#" class="tge"><i class="fa fa-university"></i></a></li>
</ul>
</div>
</div>
</section>
<div class="lue-top"></div>
</section>
</body>
</html>
最后就是黄丽凡老师交代给我的任务我是做完得了,但是结果不尽如人意所以就做一些模板来巩固我的网页基础,最后我的网信的网页之所以没有拿出来的原因的就是我不小心吧我的一个电脑的账号给注销了导致我的网页没有交出来,账号的注销也就是在这几天。

0 条评论
发表评论…
0
邓亮

邓亮 公开分享 2016-07-09

Spring boot制作网页微博

1.思路:微博有什么功能——>发表文章———>“增删查改”
微博有用户———>登陆,登出系统
所以我们的微博要有用户功能和增删查改功能。
2.实现:
创建maven project,并配置pom.xml。
需要的jar包:

<dependencies>
<!-- MYSQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- Spring Boot JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
先建立一个model层,如下:
static class Entry {
public Integer id;
public String title;
public String text;

  1. public Entry() {
  2. }
  3. public Entry(Integer id,String title, String text) {
  4. this.id = id;
  5. this.title = title;
  6. this.text = text;
  7. }

之后获取get和set方法。

由于spring boot会默认的运行classpath上的schema.sql,所以我们只用在项目中建立sql文件,spring boot会在运行的时候在数据库中建立表单,sql文件如下:

rop table if exists entries;//表单名字entries,数据库为text
create table entries (
id integer primary key auto_increment,
title text not null,
text text not null
);

用户登录/登出功能:
解析:登陆页面传值进入程序方法进行验证,判断用户名和密码是否正确,正确则跳转页面至主页,错误则返回登陆页面。在主页登出,需要删除用户信息并且跳转页面至登录页面即可。

处理登陆验证请求及跳转:
private static final String LOGGED_IN = “logged_in”;//设置一个属性作为标志,如果登陆成功,则在session中放置一个LOGGED_IN的属性,并可以在页面上通过这个属性获取信息。

private boolean verify( String username, String password) { //验证登陆账号与密码,并将值传向下一个方法,进行下一步动作。
return “123”.equals(username) && “123”.equals(password);
}

  1. @RequestMapping(value = "/login", method = RequestMethod.POST) //处理登陆请求
  2. public String login(@RequestParam("username") String username, //传入页面上的用户名和密码进行验证,如果通过上面的方法验证则进入首页。若没有则回到登陆页面。
  3. @RequestParam("password") String password,
  4. HttpSession session) {
  5. if (session.getAttribute(LOGGED_IN) != null) {
  6. return "redirect:/"; }
  7. if (!verify(username, password)) {
  8. return "login";
  9. }
  10. session.setAttribute(LOGGED_IN, true);
  11. return "redirect:/"; //默认返回

}

功能优化:如果在登陆的时候仍然访问了/login,则会回到首页。实例如下
@RequestMapping(value = “/login”, method = RequestMethod.GET) //页面跳转至登陆页面
public String loginPage(HttpSession session) {
if (session.getAttribute(LOGGED_IN) != null) {
return “redirect:/“;
}
return “login”;
}

处理登出请求:
@RequestMapping(value = “/logout”, method = { RequestMethod.GET, RequestMethod.POST}) //处理登出请求,既可处理get请求也可以处理post请求。
public String logout(HttpSession session) {
session.removeAttribute(LOGGED_IN);//removeAttribute() 方法删除指定的属性。
return “redirect:/“;
}

增删查改功能之“增”:
解析:向数据库传入title值和text值,创建条目。
方法实例如下:
private JdbcTemplate jdbcTemplate; //JdbcTemplate是spring JDBC提供的访问数据库的模板类,通过他可以执行sql语句并将查询的结果集映射为java对象。
@RequestMapping(value = “”, method = RequestMethod.POST) //增加,向方法中传入title和text的值,通过sql语句对数据库进行增加操作,传值用post请求。
public String create( @RequestParam(“title”) String title,//@RequestParam可以获取表单中的信息,jdbcTemplate.update()方法执行sql语句“insert”。
@RequestParam(“text”) String text) {
this.jdbcTemplate.update(“insert into entries(title, text) values(?,?)”, title, text);

  1. return "redirect:/";//返回首页

}

增删查改功能之“删”:
解析:向数据库中传入一个id,然后执行sql语句“delete”,在主页中创建后,在其下方设置一个delete超链接,将其引向方法,这个方法获取这个条目的id,然后执行sql语句,注意:用get请求。
实例如下:
@RequestMapping(value = “/delete”, method = RequestMethod.GET) //删除功能,通过页面想数据库传一个id的值然后通过sql语句进行对数据库的操作“delete”。
public String delete(@RequestParam(“id”) Integer id) {
this.jdbcTemplate.update(“delete from entries where id=?”, id);
return “redirect:/“;
}

增删查改功能之“查”:
解析:可通过jdbcTemplate.query获取对象列表后,将其放入Spring WebMvc提供的Model中,以便在模板中将其渲染为HTML展示给用户。即为通过这个模板类可以将查询的对象在页面中显示给用户。所以我们先将数据库中的信息放在一个对象中,再通过这个对象在页面中显示。
实例如下:
@RequestMapping(value = “”, method = RequestMethod.GET) //从数据库中获取条目,从数数据库中的表Entry中获取信息。
public String index(Model model) {
List<Entry> entries = this.jdbcTemplate.query(“select id , title, text from entries”,
new RowMapper<Entry>() {
public Entry mapRow(ResultSet rs, int i) throws SQLException {
return new Entry(rs.getInt(“id”),rs.getString(“title”), rs.getString(“text”));
}
});
model.addAttribute(“entries”, entries);//model是contrller里面的Map结构。Map里面添加key=“entry”,value=“entry对象”的意思,最后把这个model返回一个jsp,在jsp页面上就能得到这个entry对象。
return “index”;
}

增删查改功能之“改”:
解析:更改信息需要跳转到另一个页面,所以我们需要一个跳转方法和一个修改方法。由于修改信息条目时只修改一个指定的条目,所以再跳转方法中要先获取这个条目的id,将其传向更改页面,再通过更改页面根据这个id通过更改方法运行sql语句,进行修改,并返回首页。
实例如下:
@RequestMapping(value = “/edit”, method = { RequestMethod.GET}) //传地址使用get
public String edit(Model model, @RequestParam(“id”) Integer id) {
System.out.println(id+”ddddddddd”);//检测是否向页面传值。
Entry entry = this.jdbcTemplate.queryForObject(“select id , title, text from entries where id=?”,
new RowMapper<Entry>() {
public Entry mapRow(ResultSet rs, int i) throws SQLException {
return new Entry(rs.getInt(“id”),rs.getString(“title”), rs.getString(“text”));
}
}, id); //传单个对象值语法:this.jdbcTemplate.queryForObject(sql, requiredType, args)sql语句+泛式变量+参数(用于单个对象传值)

  1. model.addAttribute("entry", entry); //model是contrller里面的Map结构。Map里面添加key=“entry”,value=“entry对象”的意思,最后把这个model返回一个jsp,在jsp页面上就能得到这个entry对象了!
  2. return "/update"; //跳往网页
  3. }
  4. @RequestMapping(value = "/update", method = RequestMethod.GET) //修改,从上一个方法获得id值,然后由页面传入title和text值再精油sql语句进行修改。
  5. public String update(@RequestParam("id") Integer id,
  6. @RequestParam("title") String title,
  7. @RequestParam("text") String text) {
  8. this.jdbcTemplate.update("update entries set title=?,text=? where id=?",title,text,id);//注意后面参数的顺序,要按照sql语句的顺序。
  9. return "redirect:/";//默认返回首页。
  10. }

页面可按自己的喜好制作,只需要在几个按钮和超链接中引向主要的几个方法即可。

制作过程中所遇到的错误:
1.原博客中做演示的代码中的model中没有id,后来加上id后运行报错,原因为找不到id。
然后不断的检查中,检查到搜索条目的方法中的sql语句没有加上id。加上后解决。
2.由于对spring boot的不熟悉,在建立增删查改方法时,将其他方法copy过来之后进行修改,之后报错:映射模糊。从新建立方法时发现原代码model中没有get和set方法,添加后再运行,问题解决。
3.Delete方法的传值,由于在页面中语法使用错误,导致delete方法无法实现,后在网上搜索该模板的语法用法,问题解决。现已将模板改为老师上课时的模板。
4.完成update方法时,运行后在页面中无法更改,但是方法无误,后发现sql语句后的参数的顺序和sql语句不同,调整顺序后功能正常运行,问题解决。

词义笔记:args 参数
Session对象存储特定用户会话所需的信息。
注解中的@RequestParam直接获取
@RequestMapping请求路径
@Controller标志这个类可以作为请求处理类,即为控制类
@SpringBootApplication等价默认为以属性使用 @Configuration,@EnableAutoConfiguration@ComponentScan这几个注解。

0 条评论
发表评论…
0
李美诗

李美诗 公开分享 2016-06-30

Web 框架第三周总结--Maven项目的认知和创建

一、我们先在网上了解关于Maven 模式的方法。

二、打开eclipse.exe,new->创建一个Maven项目

三、点击next,可以选择最后一个1.0

四、填写自己的包名

填完之后如下图:

五、在网上查找关于maven安装的java驱动包

六、把相关的Struts2的依赖包的代码粘贴在pom.xml文件中

七、在action包中建一个文件为IndexAction,选择相关的类型。


八、加上相关的代码

九、在struts.xml文件,显示index.html的代码

十、运行文件, 是成功的。

0 条评论
发表评论…
0
黄丽雯

黄丽雯 公开分享 2016-06-29

JAVA第八周总结

这节课主要讲list和json。
List
List 集合中的对象按照一定的顺序排放,里面的内容可以重复。
List是一个接口,不能实例化,需要实例化一个ArrayList或者LinkedList。
例:List myList = new ArrayList();

List接口实现的类:ArrayList(实现动态数组), Vector(实现动态数组) ,LinkedList(实现链表), Stack(实现堆栈)
public static void main(String[] args) {
//声明List 并实例化为ArrayList

List al = new ArrayList();
//使用add()方法添加元素

al.add(“a”);
al.add(“b”);
al.add(“c”);
al.add(“d”);
json
JSON有两种结构
json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构。
1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,…}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为 对象.key 获取属性值,这个属性值的类型可以是 数字、字符串、数组、对象几种。
2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 [“java”,”javascript”,”vb”,…],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是 数字、字符串、数组、对象几种。

在www项目的MessageSavaAction.java中就运用到了json格式

public String execute() throws Exception {
MessageDAO messagedao = new MessageDAO();
User user = (User)ActionContext.getContext().getSession().get(“user”);
if (null != user && StringUtils.isNotBlank(user.getAccount())) {
String ip = getRemoteHost(ServletActionContext.getRequest());
String savepath = ServletActionContext.getServletContext().getRealPath(“/upload”);//保存在upload的文件夹中
System.out.println(savepath);
Content c= new Content();
if(null != upload && upload.size() > 0){
List<String> images = new ArrayList<String>();
for(int i=0;i<upload.size();i++){
File destfile = new File(new File(savepath),uploadFileName.get(i));
if(!destfile.getParentFile().exists()){
destfile.getParentFile().mkdirs();
}
FileUtils.copyFile(upload.get(i), destfile);
images.add(“upload/“ + uploadFileName.get(i));
}
c.setImages(images);
}
c.setMessage(content);
String json = JSON.toJSONString(c);
messagedao.save(user.getId(), json, ip);
} else {
return “login”;
}
return SUCCESS;
}

0 条评论
发表评论…
0
黄丽雯

黄丽雯 公开分享 2016-06-29

JAVA第六周总结

  • 在html文件夹,新建index.html,添加表单:
    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <meta charset="UTF-8">
    5. <title>Insert title here</title>
    6. </head>
    7. <body>
    8. <div>
    9. <form action="message_save.action" method="post" enctype="multipart/form-data" name="form1">
    10. <ul>
    11. <li>
    12. <input type="text" name="content" id="content">
    13. <input type="submit" name="button" id="button" value="发送">
    14. </li>
    15. <li>
    16. <input type="file" name="upload" id="upload">
    17. </li>
    18. </ul>
    19. </form>
    20. </div>
    21. </body>
    22. </html>
  • 在action包,新建IndexAction,用来显示index.html:
  1. package com.demo.www.action;
  2. import java.util.List;
  3. import com.demo.www.dao.MessageDAO;
  4. import com.demo.www.model.Message;
  5. import com.demo.www.model.User;
  6. import com.opensymphony.xwork2.ActionContext;
  7. import com.opensymphony.xwork2.ActionSupport;
  8. public class IndexAction extends ActionSupport {
  9. private List<Message> list;
  10. public String execute() throws Exception {
  11. MessageDAO messagedao = new MessageDAO();
  12. list = messagedao.findAll();
  13. return SUCCESS;
  14. }
  15. public List<Message> getList() {
  16. return list;
  17. }
  18. public void setList(List<Message> list) {
  19. this.list = list;
  20. }
  21. }
  • 数据库中,新建message表,在model包新建Message.java模型:
  1. package com.demo.www.model;
  2. import java.sql.Timestamp;
  3. import com.alibaba.fastjson.JSON;
  4. public class Message {
  5. private Integer id;
  6. private Integer user;
  7. private String content;
  8. private String ip;
  9. private Timestamp pubtime;
  10. private Content msg;//辅助方法
  11. public Content getMsg() {
  12. try{
  13. msg = JSON.parseObject(content,Content.class);
  14. }catch(Exception e){
  15. }
  16. return msg;
  17. }
  18. public void setMsg(Content msg) {
  19. this.msg = msg;
  20. }
  21. public Integer getId() {
  22. return id;
  23. }
  24. public void setId(Integer id) {
  25. this.id = id;
  26. }
  27. public Integer getUser() {
  28. return user;
  29. }
  30. public void setUser(Integer user) {
  31. this.user = user;
  32. }
  33. public String getContent() {
  34. return content;
  35. }
  36. public void setContent(String content) {
  37. this.content = content;
  38. }
  39. public String getIp() {
  40. return ip;
  41. }
  42. public void setIp(String ip) {
  43. this.ip = ip;
  44. }
  45. public Timestamp getPubtime() {
  46. return pubtime;
  47. }
  48. public void setPubtime(Timestamp pubtime) {
  49. this.pubtime = pubtime;
  50. }
  51. }
  • 在dao包,新建MessageDAO,根据id查询所有的函数findAll:
  1. package com.demo.www.dao;
  2. import java.sql.PreparedStatement;
  3. import java.sql.ResultSet;
  4. import java.sql.SQLException;
  5. import java.util.ArrayList;
  6. import java.util.List;
  7. import com.demo.www.model.Message;
  8. public class MessageDAO extends AbstractBaseDAO {
  9. public List<Message> findAll() {
  10. List<Message> list = new ArrayList<Message>();
  11. try {
  12. PreparedStatement pstm = null;
  13. pstm = conn.prepareStatement("select * from message");
  14. ResultSet rs = pstm.executeQuery();
  15. while(rs.next()) {
  16. Message message = new Message();
  17. message.setId(rs.getInt("id"));
  18. message.setUser(rs.getInt("user"));
  19. message.setContent(rs.getString("content"));
  20. message.setIp(rs.getString("ip"));
  21. message.setPubtime(rs.getTimestamp("pubtime"));
  22. list.add(message);
  23. }
  24. } catch (SQLException e) {
  25. e.printStackTrace();// TODO 日志
  26. }
  27. return list;
  28. }
  29. }
  • 在index.html中,添加foreach语句,用来显示数据库中的内容:
  1. <div>
  2. <ul>
  3. #foreach( $message in $list )
  4. <li>$!{message.msg.message} <img src="$!{message.msg.image}" width="30" height="30"/></li>
  5. #end
  6. </ul>
  7. </div>
  • 接着在DAO中,添加保存函数save:
  1. public void save(Integer user, String content, String ip) {
  2. try {
  3. PreparedStatement pstm = null;
  4. pstm = conn.prepareStatement("insert into message(user,content,ip,pubtime) values(?,?,?,NOW())");
  5. pstm.setInt(1, user);
  6. pstm.setString(2, content);
  7. pstm.setString(3, ip);
  8. pstm.executeUpdate();
  9. } catch (SQLException e) {
  10. e.printStackTrace();// TODO 日志
  11. }
  12. }
  • 在action包,新建MessageSaveAction,用来调用MessageDAO中的save,将文本框的内容,发送到数据库:
  1. package com.demo.www.action;
  2. import java.io.File;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import org.apache.commons.io.FileUtils;
  6. import org.apache.commons.lang3.StringUtils;
  7. import org.apache.struts2.ServletActionContext;
  8. import com.alibaba.fastjson.JSON;
  9. import com.demo.www.dao.MessageDAO;
  10. import com.demo.www.model.Content;
  11. import com.demo.www.model.User;
  12. import com.opensymphony.xwork2.ActionContext;
  13. import com.opensymphony.xwork2.ActionSupport;
  14. public class MessageSaveAction extends ActionSupport {
  15. private String content;
  16. private List<File> upload;
  17. private List<String> uploadFileName;
  18. private List<String> uploadContentType;
  19. public String execute() throws Exception {
  20. MessageDAO messagedao = new MessageDAO();
  21. User user = (User)ActionContext.getContext().getSession().get("user");
  22. if (null != user && StringUtils.isNotBlank(user.getAccount())) {
  23. String ip = getRemoteHost(ServletActionContext.getRequest());
  24. String savepath = ServletActionContext.getServletContext().getRealPath("/upload");
  25. System.out.println(savepath);
  26. Content c = new Content();
  27. if (null != upload && upload.size() > 0) {
  28. List<String> images = new ArrayList<String>();
  29. for (int i=0; i<upload.size(); i++) {
  30. File destfile = new File(new File(savepath), uploadFileName.get(i));
  31. if (!destfile.getParentFile().exists()) {
  32. destfile.getParentFile().mkdirs();
  33. }
  34. FileUtils.copyFile(upload.get(i), destfile);
  35. images.add("upload/" + uploadFileName.get(i));
  36. }
  37. c.setImages(images);
  38. }
  39. c.setMessage(content);
  40. String json = JSON.toJSONString(c);
  41. messagedao.save(user.getId(), json, ip);
  42. } else {
  43. return "login";
  44. }
  45. return SUCCESS;
  46. }
  47. public String getRemoteHost(javax.servlet.http.HttpServletRequest request){
  48. String ip = request.getHeader("x-forwarded-for");
  49. if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
  50. ip = request.getHeader("Proxy-Client-IP");
  51. }
  52. if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
  53. ip = request.getHeader("WL-Proxy-Client-IP");
  54. }
  55. if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)){
  56. ip = request.getRemoteAddr();
  57. }
  58. return ip.equals("0:0:0:0:0:0:0:1")?"127.0.0.1":ip;
  59. }
  60. public String getContent() {
  61. return content;
  62. }
  63. public void setContent(String content) {
  64. this.content = content;
  65. }
  66. public List<File> getUpload() {
  67. return upload;
  68. }
  69. public void setUpload(List<File> upload) {
  70. this.upload = upload;
  71. }
  72. public List<String> getUploadFileName() {
  73. return uploadFileName;
  74. }
  75. public void setUploadFileName(List<String> uploadFileName) {
  76. this.uploadFileName = uploadFileName;
  77. }
  78. public List<String> getUploadContentType() {
  79. return uploadContentType;
  80. }
  81. public void setUploadContentType(List<String> uploadContentType) {
  82. this.uploadContentType = uploadContentType;
  83. }
  84. }
  • 配置struts:
  1. <action name="index" class="com.demo.www.action.IndexAction">
  2. <result type="velocity">/WEB-INF/html/index.html</result>
  3. </action>
  4. <action name="message_save" class="com.demo.www.action.MessageSaveAction">
  5. <result name="success" type="redirect">/index.action</result>
  6. <result type="redirect">/login.action</result>
  7. </action>

0 条评论
发表评论…
0
郑展汉

郑展汉 公开分享 2016-06-28

PHP 第十六周总结

本学期学习学习PHP课程,学到了PHP MVC设计模式和smarty框架,利用smarty制作了一个个人小项目,该项目是一个销售商品的购物网站,包含了登录,注册,查找,删除产品,修改产品,注销等功能。 在制作该网站的过程中有很多小细节,一个简简单单的小功能也有着小细节,我想能够做好这些小细节并对其优化的程序员才是优秀的程序员,在其中也遇到了各种各样的问题,我们也都通过思考与互相交流将其解决,但也由于技术和时间原因项目虽然基本功能都有,但没有太多有特色的功能。但总的来说本学期还是收获良多。

0 条评论
发表评论…
0
何镔

何镔 公开分享 2016-06-28

第十七周学习笔记

这周整理了一下整个学期的笔记以及所学过的东西。
{网页定时跳转:}
举例: <htnl> <head> <meat http-equiv="refresh" content="20;url=你要输入想跳转的网址"> ←跳转代码 <title>网页的定时跳转</title> </head> <body> 20秒后自动跳转 </body> </html>
{网页的背景景色:} 举例:

<htnl> <head> <title>网页的定时跳转</title> </head> <body> <body bgcolor="#FF6347"> ←背景代码 </body> </html>

{背景图片代码:}

<htnl> <head> <title>网页的定时跳转</title> </head> <body> <body background="images/120.jpg"> ←背景图片代码 </body> </html> {所有文字颜色为统一颜色:}

<htnl> <head> <title>网页的定时跳转</title> </head> <body text="#9966CC"> ←这里设置代码 设置了所有文字的颜色为统一颜色<br/> <br/> 连头也不回的时间,那叫人生-伟 </body> </html>
{文字和其它在网页中显示的位置 边距:}

<htnl> <head> <title>边距的值以像素为单位</title> </head> <body topmargin="100" leftmargin="100"> <p>设置页面的上边距</p> <p>设置页面的左边距</p> </body> </html>
{注释标记:}

<htnl> <head> <title>边距的值以像素为单位</title> </head> <!--居中显示 --> ←标记代码 </body> </html>
{标题字:}

<h1>一级标题</h1> ←最大号 <h2>二级标题</h2> <h3>三级标题</h3> <h4>四级标题</h4> <h5>五级标题</h5> <h6>六级标题</h6> ←最小号 字号{语法:<font size="文字字号">…….</font> 列: <font size="99">晚安宝贝</font> <font size="-1">晚安宝贝</font>
{标题字对齐 居中:}
属性值:left - 左对齐 属性值:center - 居中对齐 属性值:right - 右对齐 语法:<align="对齐方式"> 列:代码居中实现方式:<h1> align=”center”这里是标题文字</h1>
{字体显示样式:}
语法:<font face="字体样式">…..</font> 列:<p><font face="华文彩云">有缘路上来相见</font></p> <!--P代表空格一个段落 -->
{给文字加上颜色:}
语法:<font color="字体颜色">……</font> 列:<font size="+3" color="#3333CC">温柔的说晚安</font>
{粗体和斜体:}
语法:<b>加粗的字体</b> <strong>加粗的字体</strong> 语法:<i>斜体文字</i> <em>斜体文字</em> <cite>斜体文字</cite>
{下划线标记:}
语法:<u>下划线内容</u> 用法和粗体及斜体类似!
{段落:}
语法:<p>…..</p> 效果:用来空格的!
{换行标记:}
语法:<br> 说明:一个<br>标记代表一个换行,连续的多个标记可以实现多次换行.
{插入水平线:}
语法:<hr> 演示:<p align="center">无月的中秋</p>
{水平线宽度:} 语法: <hr width="宽度"> 用法同上!
{水平线高度:}
语法: <hr size="高度">
{水平线颜色:}
语法:<hr color="颜色">
{代表一个空格:}
语法:&nbsp 一个&nbsp代表一个空格的意思
{图像:}
Img元素的属性定义:src 图像的源文件 alt 提示文字 width,height 宽度和高度 border 边框align 排列

0 条评论
发表评论…
0
许桂华

许桂华 公开分享 2016-06-28

java第十七周期末总结

本学期期末总结

本学期学了java,根据所学内容我完成了我的项目,主要有增删查改、验证码和登录的功能,下面是总结这学期创建的项目:
一、回顾整个学期学习内容
显示网页和跳转
struct
action
jdbc增删查改
提前把分页程序做好
网站创建
产品的增删查改和显示

二、注意事项
1、设置为1.8

2、action显示页面 source


3、把html放在web下比较安全。

4、控制台:要看懂控制台的信息,知道是哪里报错了。

5、地址栏要相同

6、鼠标移上去按Ctrl键会自动打开文件。 Class放要执行的文件。说明地址没错。

7、一定要有这个,会跳过这个程序,执行别的。

8、数据库为了在首页显示四条信息。

9、这段代码用来连接数据库,可以共享它:

  1. package com.demo.xmtest.dao;
  2. import java.sql.Connection;
  3. import java.sql.DriverManager;
  4. import java.sql.SQLException;
  5. //父类通常是抽象的。
  6. //父类通常是不完整的。
  7. //没有子类父类无意义。
  8. public abstract class AbstractBaseDAO {
  9. protected Connection conn = null;
  10. public AbstractBaseDAO() {
  11. try {
  12. Class.forName("org.mariadb.jdbc.Driver");
  13. } catch(ClassNotFoundException e) {
  14. System.out.println("找不到驱动");
  15. }
  16. String url = "jdbc:mariadb://127.0.0.1:3306/www";
  17. String dbuser = "root";
  18. String dbpass = "123456";
  19. try {
  20. conn = DriverManager.getConnection(url, dbuser, dbpass);
  21. } catch (SQLException e) {
  22. e.printStackTrace();// TODO 日志
  23. }
  24. }
  25. }

10、新建一个类,类的命名开头要大写。

11、选择共享哪个类

12、把信息包装到一个盒子里,所以需要模型。

13、在模型里新建一个News盒子,数据库有多少属性就写多少个。

  1. package com.demo.xmtest.model;
  2. import java.io.Serializable;
  3. public class User implements Serializable {
  4. private static final long serialVersionUID = -8674879782766903776L;
  5. private Integer id;
  6. private String account;
  7. private String passwd;
  8. private String name;
  9. public Integer getId() {
  10. return id;
  11. }
  12. public void setId(Integer id) {
  13. this.id = id;
  14. }
  15. public String getAccount() {
  16. return account;
  17. }
  18. public void setAccount(String account) {
  19. this.account = account;
  20. }
  21. public String getPasswd() {
  22. return passwd;
  23. }
  24. public void setPasswd(String passwd) {
  25. this.passwd = passwd;
  26. }
  27. public String getName() {
  28. return name;
  29. }
  30. public void setName(String name) {
  31. this.name = name;
  32. }
  33. }

14、模型的数据和数据库一样。

15、把News盒子放到list里。

16、新建一个小盒子news,这里list是大盒子,所以要把小盒子全部放到大盒子里。

17、新建一个dao,只取4条信息。

18、从数据库中取出4条信息。

19、要显示到网页上,要把list盒子提前。为了不出错,要给它初始化,所以new一个盒子list。

20、Get是传出去,set是传进来。

21、取一个名字,写什么都可以。一般定义一个好记一点的名字。

22、大括号是分隔符。

23、在大括号前加符号!,表示如果它没有值,那么就不显示这个标题,只显示空白。

24、如果数据库没有值,没加!,那么页面会直接显示那句话。

三、项目截图

心得体会:
本学期学了创建Maven项目,拦截器,验证码等。通过这次的项目,我对创建项目和配置文件都有了更深的了解,也学会了许多相关知识。在课上遇到不懂的问题,在老师的耐心指导下,我把问题解决了,项目出现的问题都解决了。虽然这次项目做的还不够好,但是我的个人能力是有提高的,对项目的创建更加熟悉,项目功能也完善了不少。

0 条评论
发表评论…
0
蔡炎华

蔡炎华 公开分享 2016-06-28

PHP第十二周总结

完成项目的删除功能
一、查找ID
二、当ID存在时,调用DAO里的删除方法,删除后调回首页
代码如下

  1. <?php
  2. session_start();
  3. require_once('C_dataDAO.php');
  4. class C_data_delectAction {
  5. public function C_data_delectAction() {
  6. if ($_GET['id'] > 0) {
  7. $C_dataDAO = new C_dataDAO();
  8. $C_data = $C_dataDAO->delete($_GET['id']);
  9. }
  10. header("Location:C_data.php");
  11. }
  12. }
  13. ?>

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

高频电路制作与调试

课程是根据学校实施“工作过程导向的项目课程”的要求及本系电子、通信专业教学计划,而开发的一门项目课改课程。课程的内容按照项目课程的要求,选择了企业的一个真实产品——“收音机”,将此项目分解为三个任务——“元器件检验与装配、线路板调试与检验、整机装配与检验”。

项目介绍:
《整机装配与检验》课程在实施过程中主要是围绕以上三个任务来开展教学的。在任务一《元器件检验与装配》中,按照工作过程对所装配的元器件完成经过领料、检验、装配和质检等环节。并以小组合作的形式完成此项任务,任务完成后从实际操作、职业素养、理论知识三方面进行总结、考核与评价。

● 任务二《线路板调试与检验》中,对装配好的机板进行性能指标的调试与检验。结合上述工作过程,适时讲解无线通信以及无线接收机相关的理论知识。学习使用专门仪器对收音机进行调试,针对调试中出现的问题加以解决。该任务也是以小组合作的形式完成此项任务,任务完成后从实际操作、职业素养、理论知识三方面进行总结、考核与评价。
● 任务三《整机装配与检验》,在完成整机机板的调试后,最终完成收音机整机的装配,并对整机的性能指标进行检验与评价该任务也是以小组合作的形式完成此项任务,任务完成后从实际操作、职业素养、理论知识三方面进行总结、考核与评价
● 通过这三个任务的实施,学生不仅能学会收音机整机装配、调试与检验;同时学习并掌握了无线通信以及无线接收机的有关理论知识;在完成此项目的过程中,训练、培养了学生的职业素养,以及团体合作意识。

学生: 温金水、张志彬、林浩扬
班级: 15智能电子J4-2
指导老师:梁卫文

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

LED小蛮腰

小蛮腰的造型用LED搭载而成,塔高25cm。是送礼,店面装饰,手工DIY的首选作品。利用16*16点阵原理实现,塔身由256颗3mm雾蓝LED搭建,塔尖用了9颗自闪LED搭建,控制电路的MCU采用STC89C52,每个IO口外接一个1k限流电阻接到S8550的基极,通过控制IO口输出低电平来控制三极管导通。从而实现各种花样变化。
作者: 何嘉运、杨威
指导老师:孙奕凯

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

智能台灯

智能台灯的造型是参考蘑菇形状制作的,蘑菇头用的是亚克力材质,核心是基于STC89C52RC开发的,可以触摸蘑菇头进行点亮,告别过去的开关式台灯。

介绍:
一、灯灭状态下轻触蘑菇头点亮台灯,台灯点亮后长触可以对台灯的亮度进行调整, 每一次长触台灯将降低亮度,当达到最小亮度后不再进行降低,再次长触亮度将变暗,反向变化,极限后不再变化。

二、坏境亮度过低时,可以自动开启红外检测,当有人接近,台灯自动点亮,人走后一定时间自动关闭,可以节约用电。

三、具有蓝牙功能,可以通过手机蓝牙对台灯进行开关,定时关 灯等基本功能控制。

这款智能台灯功能多,高智能,它不仅仅是盏普通的台灯,更是一种温馨!

小组成员:钟圣、陈选平、罗俊
指导老师:郭惠婷、肖明耀

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

Web前端开发 - 企业网站

《Web前端开发》课程项目——静态网站设计开发(班级网站、企业网站)

企业网站根据教师提供真实企业资料完成网站改版设计。项目设计要求每个学生根据本课程项目设计要求独立完成。

通过本课程项目设计,不仅使学生能深入浅出地掌握XHTML网站布局的基础和技能

作者:09电子商务G5班 邱瑞强 指导教师:杜黎强

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

PHP网站建设-久米西点网站开发

应用Smarty模板+PDO开发久米西点网站

服务器Apache 2.2.8及以上:
MySQL图形化管理软件phpMyAdmin-2.22.3及以上

PHP软件PHP5.2.6及以上:
PDO数据库抽象层

数据库MySQL 5.0.51及以上:
Smarty模板

项目名称:久米西点网站开发
作者:庄智瀚 林卓锋
指导老师:张欣悦

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

智能建站系统-PHP版

本项目软件是一个实现个人或企业快速创建网站的工具使用本项目软件 构建网站不需要任何互联网的专业知识,就可以在短时间内创造出自己的网站

可以将文档、视 频、图片等与好友、团队或整个网络分享用户可以使用本项目可以创建各种类型的网站,比如 博客 论坛、音乐网站企业网站、新闻网站、电子商务网站等等
同时提供了各种模块用于展 示文章、照片、商品视频、活动等,简单的管理发布在网站的任何文件商 品、视频。不像传统的网站发布消息时,要在多出进行重复繁杂的工作

作者:赖宇威
指导老师:周兵

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

Javascript程序设计-坦克大战JS

坦克大战游戏基本操作:
这个游戏是当初最基本的原型模仿用原生js做出来的基本功能都拥有开始页面是1p和2p可以单人闯关和双人闯关wsad和方向键都可以上下左右控制1,2p空格和回车分别都是发炮,没关都有一定数量的坦克打完即可到下一关
指导老师:朱艳萍

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

无线通信网络配置与设备维护

让学生了解现代移动通信网络的有关知识,掌握移动通信网络管理与维护的有关知识和技巧。

课程报告作为本门课的个人成果汇报,体现了学生对课程内容的理解和相关知识的拓展。学生挑选感兴趣的题目,结合学到的知识,查询相关资料撰写报告。

报告课题包括但不限于无线通信相关概念、发展背景、关键技术、未来发展预测,通信行业现状,知名厂商代表产品、市场份额和发展等。

作者:曾嘉悦
指导老师:向璐璐

0 条评论
发表评论…
0
陈锐鸿

陈锐鸿 公开分享 2016-07-10

Spring Boot 学习笔记

2016.7.4-2016.7.8
Spring boot
任务一:
将内置数据库引入外部数据库:
源代码上的数据库是内置的,如果要查询很麻烦。所以我们将数据库连接到phpmyadmin 程序是写在application.properties文件中 spring.datasource.url=jdbc:mariadb://127.0.0.1:3306/test
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=org.mariadb.jdbc.Driver
需要注意的是应为需要引入org.mariadb.jdbc.Driver包。所以需要在pom.xml文件里插入这句话 org.mariadb.jdbc mariadb-java-client 1.3.6
这样数据就能传到数据库里了
任务二: 为程序添加多删除、修改功能
删除:
第一步:写程序
添加一个删除方法
@RequestMapping(value = “/delete”, method =RequestMethod.GET)
public String delete(@RequestParam(“id”) Integer id)
{
this.jdbcTemplate.update(“delete from entries where id=?”,id);
return “redirect:/“;
}

@RequestMapping(value = “/delete”, method =RequestMethod.GET)value可以理解为@RequestMapping为方法标识不同的名字
method是数据的传输方式
this.jdbcTemplate.update(sql语句) return “redirect:/“; 刷新页面
第二步:修改网页
既然是删除就应该找到该行数据的id 需要注意的是这是thymeleaf的网页写法,th:href会替换前面的href ,@{/delete}是我们刚写的程序 (id=${entry.id})是id 完成删除功能
修改 和删除差不多
需要理解的是跳转网页的程序
@RequestMapping(value = “/edit”, method = { RequestMethod.GET})
public String edit(Model model, @RequestParam(“id”) Integer id) {
Entry entry = this.jdbcTemplate.queryForObject(“select title, text ,id from entries where id=?”, new RowMapper ()
{
public Entry mapRow(ResultSet rs, int i) throws SQLException {
return new Entry(rs.getString(“title”), rs.getString(“text”),rs.getInt(“id”)); } }, id);
model.addAttribute(“entry”, entry);
return “/update”;
}
最后的return “/update”是跳转到update.html页面

难点:
1、如何用a标记跳转网页
2、如何用a标记调用方法并传值

0 条评论
发表评论…
0
吕健

吕健 公开分享 2016-07-10

Spring Boot任务总结

这个任务接来比较简单,但后来要连接数据库进行增删查改是比较难的尤其是改要非常注意。
一,首先要配置pom.xml:

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  3. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  4. <modelVersion>4.0.0</modelVersion>
  5. <groupId>com.tianmaying</groupId>
  6. <artifactId>microblog-demo</artifactId>
  7. <version>0.0.1-SNAPSHOT</version>
  8. <packaging>jar</packaging>
  9. <name>Microblog Demo</name>
  10. <description>Demo project for a microblog based on Spring Boot</description>
  11. <parent>
  12. <groupId>org.springframework.boot</groupId>
  13. <artifactId>spring-boot-starter-parent</artifactId>
  14. <version>1.2.5.RELEASE</version>
  15. <relativePath/>
  16. <!-- lookup parent from repository -->
  17. </parent>
  18. <properties>
  19. <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  20. <java.version>1.8</java.version>
  21. </properties>
  22. <dependencies>
  23. <!-- MYSQL -->
  24. <dependency>
  25. <groupId>mysql</groupId>
  26. <artifactId>mysql-connector-java</artifactId>
  27. </dependency>
  28. <!-- Spring Boot JDBC -->
  29. <dependency>
  30. <groupId>org.springframework.boot</groupId>
  31. <artifactId>spring-boot-starter-jdbc</artifactId>
  32. </dependency>
  33. <dependency>
  34. <groupId>org.springframework.boot</groupId>
  35. <artifactId>spring-boot-starter-jdbc</artifactId>
  36. </dependency>
  37. <dependency>
  38. <groupId>org.springframework.boot</groupId>
  39. <artifactId>spring-boot-starter-thymeleaf</artifactId>
  40. </dependency>
  41. <dependency>
  42. <groupId>org.springframework.boot</groupId>
  43. <artifactId>spring-boot-starter-web</artifactId>
  44. </dependency>
  45. <dependency>
  46. <groupId>com.h2database</groupId>
  47. <artifactId>h2</artifactId>
  48. <scope>runtime</scope>
  49. </dependency>
  50. <dependency>
  51. <groupId>org.springframework.boot</groupId>
  52. <artifactId>spring-boot-starter-test</artifactId>
  53. <scope>test</scope>
  54. </dependency>
  55. </dependencies>
  56. <build>
  57. <plugins>
  58. <plugin>
  59. <groupId>org.springframework.boot</groupId>
  60. <artifactId>spring-boot-maven-plugin</artifactId>
  61. </plugin>
  62. </plugins>
  63. </build>
  64. </project>

接着是建立一个数据库:

  1. drop table if exists entries;
  2. create table entries (
  3. id integer primary key auto_increment,
  4. title text not null,
  5. `text` text not null
  6. );

连接数据库

  1. application.properties
  2. spring.datasource.url=jdbc:mysql://localhost:3306/test
  3. spring.datasource.username=root
  4. spring.datasource.password=root
  5. spring.datasource.driver-class-name=com.mysql.jdbc.Driver
  6. entries
  7. drop table if exists entries;
  8. create table entries (
  9. id integer primary key auto_increment,
  10. title text not null,
  11. text text not null
  12. );

下面是功能的编写:

  1. package demo.microblog;
  2. import org.springframework.beans.factory.annotation.Autowired;
  3. import org.springframework.boot.SpringApplication;
  4. import org.springframework.boot.autoconfigure.SpringBootApplication;
  5. import org.springframework.jdbc.core.JdbcTemplate;
  6. import org.springframework.jdbc.core.RowMapper;
  7. import org.springframework.stereotype.Controller;
  8. import org.springframework.ui.Model;
  9. import org.springframework.web.bind.annotation.RequestMapping;
  10. import org.springframework.web.bind.annotation.RequestMethod;
  11. import org.springframework.web.bind.annotation.RequestParam;
  12. import javax.servlet.http.HttpSession; //导入必要的包
  13. import java.sql.ResultSet;
  14. import java.sql.SQLException;
  15. import java.util.List; //导入数据库
  16. @SpringBootApplication
  17. @Controller //该注解的作用为定义控制器类
  18. public class MicroblogDemoApplication {
  19. private static final String LOGGED_IN = "logged_in";
  20. @Autowired //自动导入依赖的bean
  21. private JdbcTemplate jdbcTemplate;
  22. public static void main(String[] args) {
  23. SpringApplication.run(MicroblogDemoApplication.class, args);
  24. }
  25. @RequestMapping(value = "", method = RequestMethod.GET) //从数据库中用get以获取值
  26. public String index(Model model) {
  27. List<Entry> entries = this.jdbcTemplate.query("select id , title, text from entries", //查询sql语句
  28. new RowMapper<Entry>() {
  29. public Entry mapRow(ResultSet rs, int i) throws SQLException {
  30. return new Entry(rs.getInt("id"),rs.getString("title"), rs.getString("text"));
  31. }
  32. }); //查询功能
  33. model.addAttribute("entries", entries);
  34. return "index";
  35. }
  36. @RequestMapping(value = "", method = RequestMethod.POST) //以一个表的形式传值
  37. public String create(@RequestParam("title") String title,
  38. @RequestParam("text") String text) {
  39. this.jdbcTemplate.update("insert into entries(title, text) values(?,?)", title, text);
  40. return "redirect:/";
  41. } //增加功能
  42. @RequestMapping(value = "/login", method = RequestMethod.GET) //用get方法获取值
  43. public String loginPage(HttpSession session) {
  44. if (session.getAttribute(LOGGED_IN) != null) { //利用session对象令网页显示信息
  45. return "redirect:/";
  46. }
  47. return "login";
  48. }
  49. private boolean verify( String username, String password) { //设定账号为1,密码为1
  50. return "1".equals(username) && "1".equals(password);
  51. }
  52. @RequestMapping(value = "/login", method = RequestMethod.POST) //用post方法向数据库传入账号与密码的值
  53. public String login(@RequestParam("username") String username,
  54. @RequestParam("password") String password,
  55. HttpSession session) {
  56. if (session.getAttribute(LOGGED_IN) != null) { //判断账号和密码是否为空
  57. return "redirect:/";
  58. }
  59. if (!verify(username, password)) { //判断是不是正确的账号密码
  60. return "login";
  61. }
  62. session.setAttribute(LOGGED_IN, true); //正确就会跳到主页
  63. return "redirect:/";
  64. }
  65. @RequestMapping(value = "/logout", method = { RequestMethod.GET, RequestMethod.POST}) //处理登出请求
  66. public String logout(HttpSession session) {
  67. session.removeAttribute(LOGGED_IN);
  68. return "redirect:/";
  69. }
  70. @RequestMapping(value = "/delete", method = RequestMethod.GET) //用get方法获取id然后进行删除
  71. public String delete(@RequestParam("id") int id) {
  72. this.jdbcTemplate.update("delete from entries where id=?", id); //删除的sql语句
  73. return "redirect:/";
  74. }
  75. @RequestMapping(value = "/edit", method = { RequestMethod.GET}) //传地址使用get
  76. public String edit(Model model, @RequestParam("id") Integer id) {
  77. System.out.println(id+"ddddddddd"); //检测是否向页面传值。
  78. Entry entry = this.jdbcTemplate.queryForObject("select id , title, text from entries where id=?",
  79. new RowMapper<Entry>() {
  80. public Entry mapRow(ResultSet rs, int i) throws SQLException {
  81. return new Entry(rs.getInt("id"),rs.getString("title"), rs.getString("text"));
  82. }
  83. }, id); //传单个对象值的语法为:this.jdbcTemplate.queryForObject(sql, requiredType, args)sql语句+泛式变量+参数(用于单个对象传值)
  84. model.addAttribute("entry", entry);
  85. return "/update"; //删除功能
  86. }
  87. @RequestMapping(value = "/update", method = RequestMethod.GET) //用get方法从数据库中获取值并实现修改
  88. public String update(@RequestParam("id") Integer id,
  89. @RequestParam("title") String title,
  90. @RequestParam("text") String text) {
  91. this.jdbcTemplate.update("update entries set title=?,text=? where id=?",title,text,id); //修改的sql语句
  92. return "redirect:/"; //修改功能
  93. }
  94. static class Entry {
  95. public Integer id;
  96. public String title;
  97. public String text;
  98. public Entry() {
  99. }
  100. public Entry(Integer id,String title, String text) { //设置id,title,text值使这三个字段可以进行操作
  101. this.id = id;
  102. this.title = title;
  103. this.text = text;
  104. }
  105. public Integer getId() {
  106. return id;
  107. }
  108. public void setId(Integer id) {
  109. this.id = id;
  110. }
  111. public String getTitle() {
  112. return title;
  113. }
  114. public void setTitle(String title) {
  115. this.title = title;
  116. }
  117. public String getText() {
  118. return text;
  119. }
  120. public void setText(String text) {
  121. this.text = text;
  122. }
  123. }
  124. }

0 条评论
发表评论…
0
邱阳

邱阳 公开分享 2016-07-09

Spring Boot 学习笔记

在学习Spring boot 的过程中,,一开始按照源码的过程做时候比较顺利,但到了对程序进行添加修改与删除操作的时候,就遇到了很大的困难,由于本身的基础不扎实,加上没有找到同类型的文件进行参考,自己的很多弊端就显露了,由其特别是关于网页的的路径与跳转写法进行很久研究,并且最终还是在老师的帮助下才解决,最主要的还是自己对文章信息的提取与总结能力严重不足,搜索能力又弱,但最终还是在大家齐心协力下完成了任务,还是感到很开心的。关于自己对内容的理解都写在了注释中。

MicroblogDemoApplication.java
package demo.microblog;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import javax.servlet.http.HttpSession;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;

@SpringBootApplication /相当于@EnableAutoConfiguration@ComponentScan@Configuration的合集。
@EnableAutoConfiguration作用:Spring Boot会自动根据你jar包的依赖来自动配置项目。例如当你
项目下面有HSQLDB的依赖时,Spring Boot会创建默认的内存数据库的数据源DataSource如果你自己创
建了DataSource,Spring Boot就不会创建默认的DataSource。如果你不想让Spring Boot自动创建,
你可以配置注解的exclude属性,例如:
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}

@ComponentScan
表示将该类自动发现(扫描)并注册为Bean,可以自动收集所有的Spring组件,包括@Configuration类。我们经常使用@ComponentScan注解搜索beans,并结合@Autowired注解导入。
@Configuration
相当于传统的xml配置文件,如果有些第三方库需要用到xml文件,建议仍然通过@Configuration类作为项目的配置主类——可以使用@ImportResource注解加载xml配置文件。
*/

@Controller //定义控制器类,在 项目中由控制器负责将用户发来的URL请求转发到对应的服务接口(service层)
public class MicroblogDemoApplication {

  1. private static final String LOGGED_IN = "logged_in";//设置属性,登录页面将获取信息。
  2. @Autowired//自动导入依赖的bean
  3. private JdbcTemplate jdbcTemplate; //数据库操作的模板类
  4. public static void main(String[] args) {
  5. SpringApplication.run(MicroblogDemoApplication.class, args);
  6. }
  7. //提供路由信息,负责URL到Controller中的具体函数的映射。
  8. @RequestMapping(value = "", method = RequestMethod.GET) //从数据库中获取条目,从数据库中的表Entry中获取信息,并暂时存入一个对象中。
  9. public String index(Model model) {
  10. List<Entry> entries = this.jdbcTemplate.query("select id , title, text from entries",
  11. new RowMapper<Entry>() {
  12. public Entry mapRow(ResultSet rs, int i) throws SQLException {
  13. return new Entry(rs.getInt("id"),rs.getString("title"), rs.getString("text"));
  14. }
  15. });
  16. model.addAttribute("entries", entries); //model是contrller里面的Map结构。Map里面添加key=“entry”,value=
  17. return "index"; //entry对象的意思,最后把这个model返回一个jsp,在jsp页面上就能得
  18. //到这个entry对象。
  19. }
  20. //增
  21. @RequestMapping(value = "", method = RequestMethod.POST)
  22. public String create(@RequestParam("title") String title,
  23. @RequestParam("text") String text) {
  24. this.jdbcTemplate.update("insert into entries(title, text) values(?,?)", title, text);
  25. return "redirect:/";
  26. }
  27. //跳转至登录界面
  28. @RequestMapping(value = "/login", method = RequestMethod.GET)
  29. public String loginPage(HttpSession session) {
  30. if (session.getAttribute(LOGGED_IN) != null) {
  31. return "redirect:/";
  32. }
  33. return "login";
  34. }
  35. private boolean verify( String username, String password) { //判断
  36. return "123".equals(username) && "123".equals(password);
  37. }
  38. //处理登录请求
  39. @RequestMapping(value = "/login", method = RequestMethod.POST)
  40. public String login(@RequestParam("username") String username,
  41. @RequestParam("password") String password,
  42. HttpSession session) {
  43. if (session.getAttribute(LOGGED_IN) != null) {
  44. return "redirect:/";
  45. }
  46. if (!verify(username, password)) {
  47. return "login";
  48. }
  49. session.setAttribute(LOGGED_IN, true);
  50. return "redirect:/";
  51. }
  52. //处理登出请求
  53. @RequestMapping(value = "/logout", method = { RequestMethod.GET, RequestMethod.POST})
  54. public String logout(HttpSession session) {
  55. session.removeAttribute(LOGGED_IN);
  56. return "redirect:/";
  57. }
  58. //删
  59. @RequestMapping(value = "/delete", method = RequestMethod.GET)
  60. public String delete(@RequestParam("id") int id) {
  61. this.jdbcTemplate.update("delete from entries where id=?", id);
  62. return "redirect:/";
  63. }
  64. //获取id跳转

@RequestMapping(value = “/edit”, method = { RequestMethod.GET})
public String edit(Model model, @RequestParam(“id”) Integer id) {
System.out.println(“id=”+id);//检测是否向页面传值。
Entry entry = this.jdbcTemplate.queryForObject(“select id , title, text from entries where id=?”,
new RowMapper<Entry>() {//RowMapper第一个参数表示获取到的结果集、第二个表示结果集中获取到的结果个数,通常用于查询语句
public Entry mapRow(ResultSet rs, int i) throws SQLException {
return new Entry(rs.getInt(“id”),rs.getString(“title”), rs.getString(“text”));
}
}, id); //传单个对象值语法:this.jdbcTemplate.queryForObject(sql, requiredType,args)sql语句+泛式变量+参数(用于单个对象传值)
model.addAttribute(“entry”, entry); //model是contrller里面的Map结构。Map里面添加key=“entry”,value=“entry对象”的意思,最后把这个model返回一个jsp,在jsp页面上就能得到这个entry对象了!
return “/update”;
}
//修改
@RequestMapping(value = “/update”, method = RequestMethod.GET) //修改,从上一个方法获得id值,然后由页面传入title和text值再sql语句进行修改。
public String update(@RequestParam(“id”) Integer id,
@RequestParam(“title”) String title,
@RequestParam(“text”) String text) {
this.jdbcTemplate.update(“update entries set title=?,text=? where id=?”,title,text,id);

  1. return "redirect:/";

} /batchUpdate适合于批量增、删、改操作;
update(…):使用于增、删、改操作;
execute():执行一个独立的sql语句,包括ddl语句;
queryForInt :查询出一个整数值
/

  1. static class Entry {
  2. public Integer id;
  3. public String title;
  4. public String text;
  5. public Entry() {
  6. }
  7. public Entry(Integer id,String title, String text) {
  8. this.id = id;
  9. this.title = title;
  10. this.text = text;
  11. }
  12. public Integer getId() { //获取及更改的model方法。
  13. return id;
  14. }
  15. public void setId(Integer id) {
  16. this.id = id;
  17. }
  18. public String getTitle() {
  19. return title;
  20. }
  21. public void setTitle(String title) {
  22. this.title = title;
  23. }
  24. public String getText() {
  25. return text;
  26. }
  27. public void setText(String text) {
  28. this.text = text;
  29. }
  30. }
  31. }
  32. -------------------------------------------------
  33. 其他的jdbcTemplate用法
  34. //最全的参数查询
  35. public List<User> queryForList3(User user) {
  36. return (List<User>) jdbcTemplate.queryForList("select * from tb_test1 where username = ?",
  37. new Object[]{user.getUsername()},
  38. new int[]{java.sql.Types.VARCHAR},
  39. User.class);
  40. }
  41. //批量操作 适合于增、删、改操作
  42. public int[] batchUpdate(final List users) {
  43. int[] updateCounts = jdbcTemplate.batchUpdate(
  44. "update tb_test1 set username = ?, password = ? where id = ?",
  45. new BatchPreparedStatementSetter() {
  46. @Override
  47. public void setValues(PreparedStatement ps, int i) throws SQLException {
  48. ps.setString(1, ((User)users.get(i)).getUsername());
  49. ps.setString(2, ((User)users.get(i)).getPassword());
  50. ps.setLong(3, ((User)users.get(i)).getId());
  51. }
  52. @Override
  53. public int getBatchSize() {
  54. return users.size();
  55. }
  56. }
  57. );
  58. return updateCounts;
  59. }
  60. //调用存储过程
  61. public void callProcedure(int id){
  62. this.jdbcTemplate.update("call SUPPORT.REFRESH_USERS_SUMMARY(?)", new Object[]{Long.valueOf(id)});

连接数据库
application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/test
spring.datasource.username=root
spring.datasource.password=root

spring.datasource.driver-class-name=com.mysql.jdbc.Driver

entries表
drop table if exists entries;
create table entries (
id integer primary key auto_increment,
title text not null,
text text not null
);

maven配置文件
<?xml version=”1.0” encoding=”UTF-8”?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>

<groupId>com.tianmaying</groupId>
<artifactId>microblog-demo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>

<name>Microblog Demo</name>
<description>Demo project for a microblog based on Spring Boot</description>

<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.2.5.RELEASE</version>
<relativePath></relativePath>
<!-- lookup parent from repository -->
</parent>

<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version>
</properties>


<dependencies>
<!-- MYSQL -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!-- Spring Boot JDBC -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>


</project>

0 条评论
发表评论…
0
曾志军

曾志军 公开分享 2016-07-09

Spring Boot 学习笔记

刚开始接触学习Spring Boot的时候,给我的感觉是比较难的,连最基本的环境都会搭建失败,后来经过反复的练习搭建环境和查阅网上的一些资料,才较为初步的搭建完成。周老师给的教程都是很清楚的,但是我对代码的理解能力和学习能力还是有待提高。
学习笔记与总结:
学习的困难:
1.对Spring Boot认识不是很到位,导致对代码的陌生,无从下手。
2.官网上的英文看不懂,中文手册的内容感觉没有原版清晰,需提高英文水平。
遇到的问题:
1.a标记传值
<a href="#" th:href="@{/delete(id=${entry.id})}">删除</a>
由于语法有点不同,所以用的时候就要使用官方的语法知识。th:href 会替换前一个href的链接,@{/delete}会使用程序里面的delete。
@RequestMapping(value = “/delete”, method =RequestMethod.GET)
public String delete(@RequestParam(“id”) Integer id) {
this.jdbcTemplate.update(“delete from entries where id=?”,id);
return “redirect:/“;
}
id=${entry.id} 这个是把id值传进来。
如果把url地址的id获取失败,就会导致错误。

2.页面跳转
当时做的时候做了两天都没有做出来,后来和同学们进行交流才完成页面的跳转。首先是要先做一个查询,先把他们查询出来获取值跳转到指定的页面(update.html),在update这个页面上引用了modify这个方法,然后用redirect返回,实现修改功能。


学习笔记:
1.@RequestMapping( @RequestMapping(value=”/index”,method=”RequestMethod.POST”)
)
是一个用来处理请求地址映射的注解,可用于类或者方法中。主要属性有6个:value,method,headers,consumes,products和params。这次的学习中,只用到了value和method,value是用来请求指定地址,而method是用来请求method类型,如POST,GET等。
2.@Controller
Spring MVC 中的控制层,用于接受和处理用户请求。
3.@SpringBootApplication
@Configuration一样,可以解决配置问题。
4.@RequestParam
参数绑定,有两个属性:value和required,value是指定id的值,required是指示参数是否绑定。
5.<html xmlns:th="http://www.thymeleaf.org">
当使用html指定网址访问,就可以直接用th来进行调用,参数也可以使用<th:text="${message.id}" ></th>进行调用
总结:学习要多问,问清楚问明白了才能理解其中的代码,多思考和动手,尝试不一样的方法来编辑功能。

Index delete modify

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-07-01

期末总结

一转眼这周是第十八周,也是最后的一周。一个学期又过了真的好快啊!首先说说我这个学期都做了什么学到了什么。
这学期做了两套模板,网信平台上面的静态页现在做了有21个页面加上练习的,还有谷歌风格的页面做了6个。学到了很多收获的也很多。加上在最后几个星期里我们做的那个画册,虽然时间很短 但是我们每个人还是坚持的把各自的部分给做完了 甚至最后还加班做了很晚,但是到最后把书给印刷出来到展示给所有人看的时候 那时候才发现这一切都是值得的。我也没想到做出来的效果比想象中的好很多,也让我从中学到了很多的东西,看到了与之前我们所见过的画册有所不同的特点,相信下一次再做这个画册会比这次做的更加的好。这次做的这个画册让我感触最深的就是团队的合作十分重要,一个人的力量很小
不可能完成这么多的东西,但是多个人的力量就会变得很强大。就像是人多力量大,柴多火焰高。我们大家分好工 互帮互助 这才是一个真正发挥团队的好团队,所以通过这次我体会到团队合作的重要性。
现在说说我这学期学到了什么,通过做了一套赵氏家族的模板 我比较注重细节方面 无论是字体的大小 间距等问题包括要考虑到上传服务器之后的样子 我都做得很仔细。虽然花了一周的时间在做包括修改,但是慢工出细活,效率不是很高但是质量还可以。再者就是这学期学习了新的东西 周老师这边的网信平台。其实第一次做的时候就觉得很难,后面慢慢的练习做多了就熟练了一些。后来又学习了Material design这个让我感觉更加难了,因为之前的还没有太熟练现在又学习了Material design,我觉得这个是最难的 尽快做了一些练习但还是会觉得很难,到现在那个分列还是有点懵。接着就是学Material admin,这个的话跟bootstrap差不多 但对于我来说也有难点。后面不断的练习做出一点东西的时候就觉得只要练习做多了就不难了。所以我觉Material design最难,要利用好暑假的时间多去学习这个。还有就是暑假先把下学期要学习的东西也要先过一下,为下学期打好基础。这就是我这学期学到的东西,朝着这个目标前进 相信以后收获的会更多。

0 条评论
发表评论…
0
黄丽雯

黄丽雯 公开分享 2016-06-29

JAVA第九周总结

如何让发布的信息显示在网页上。
1、首先修改html网页

  1. #foreach( $message in $list )
  2. $!{message.msg.message}
  3. #foreach($imagess sin $message.msg.images)
  4. src = "$!{imagess}" width = "100" height = "100" />
  5. #end
  6. #end

数组是一个集合,从message表中取出。对应的字段名跟数据库中一致。
另外在变量名称前加“!”与不加 网页显示不一样的。
在变量名称前加“!”。在没有值的时候显示 $!{message.msg.message}

有值会显示值,如下图。

如果不加”!”,在没有值的时候,网页是空白的,也没有${message.msg.message}

0 条评论
发表评论…
0
黄丽雯

黄丽雯 公开分享 2016-06-29

JAVA第七周总结

制作网页项目
1、 新建Maven项目
2、 选择最后一项,1.0
3、 将Maven项目取名为project,Version改为1.0.0:
4、 将webapp文件夹下的index.jsp删除:
5、 在main文件夹下,新建java文件夹
6、 右键属性更改属性就会出现com.project.action、com.project.model、com.project.dao的包
7、 在webapp文件夹下,新建html文件夹
8、 在pom.xml中添加以下代码,添加配置文件:

<!-- struts2依赖包 -->

<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.14</version>
</dependency>

<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>

<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity-tools</artifactId>
<version>2.0</version>
</dependency>

<dependency>
<groupId>org.mariadb.jdbc</groupId>
<artifactId>mariadb-java-client</artifactId>
<version>1.3.6</version>
</dependency>

<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.8</version>
</dependency>
10、web.xml也要增加代码

0 条评论
发表评论…
0
黄丽雯

黄丽雯 公开分享 2016-06-29

JAVA第五周总结

  • 在html文件夹,新建register.html,添加表单,用来注册帐号:
    1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    2. <html xmlns="http://www.w3.org/1999/xhtml">
    3. <head>
    4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    5. <title>无标题文档</title>
    6. </head>
    7. <body>
    8. <div>
    9. <form id="form1" name="form1" method="post" action="user_register.action">
    10. <ul>
    11. <li>新帐号:
    12. <input type="text" name="account" id="account" />
    13. </li>
    14. <li>密码:
    15. <input type="password" name="passwd" id="passwd" />
    16. </li>
    17. <li>确认密码:
    18. <input type="password" name="cpasswd" id="cpasswd" />
    19. </li>
    20. <li>名称:
    21. <input type="text" name="name" id="name" />
    22. </li>
    23. <li>
    24. <input type="submit" name="button" id="button" value="确认注册" />
    25. </li>
    26. </ul>
    27. </form>
    28. </div>
    29. </body>
    30. </html>
  • 在action包,新建RegisterAction.java,主要是用来显示register.html:
    1. package com.demo.www.action;
    2. import com.opensymphony.xwork2.ActionSupport;
    3. public class RegisterAction extends ActionSupport {
    4. public String execute() throws Exception {
    5. return SUCCESS;
    6. }
    7. }
  • UserDAO中添加保存函数save:
    ```java
    public void save(String account, String passwd, String name) {
    try {
    PreparedStatement pstm = null;
    pstm = conn.prepareStatement(“insert into user(account,passwd,name) values(?,?,?)”);
    if (!StringUtils.isNotBlank(account)) {
    throw new RuntimeException(“account is not null”);
    }
    pstm.setString(1, account);
    pstm.setString(2, passwd);
    pstm.setString(3, name);
    pstm.executeUpdate();
    } catch (SQLException e) {
    e.printStackTrace();// TODO 日志
    }
    }
    4、 在action包,新建UserRegisterAction,用来调用UserDAO中的save函数:

package com.demo.www.action;
import com.demo.www.dao.UserDAO;
import com.opensymphony.xwork2.ActionSupport;
public class UserRegisterAction extends ActionSupport {
private String account;
private String passwd;
private String cpasswd;
private String name;
public String execute() throws Exception {
UserDAO userdao = new UserDAO();
userdao.save(account, passwd, name);
return SUCCESS;
}
public String getAccount() {
return account;
}
public void setAccount(String account) {
this.account = account;
}
public String getPasswd() {
return passwd;
}
public void setPasswd(String passwd) {
this.passwd = passwd;
}
public String getCpasswd() {
return cpasswd;
}
public void setCpasswd(String cpasswd) {
this.cpasswd = cpasswd;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}

  1. struts.xml中配置:
  2. ```java
  3. <action name="register" class="com.demo.www.action.RegisterAction">
  4. <result type="velocity">/WEB-INF/html/register.html</result>
  5. </action>
  6. <action name="user_register" class="com.demo.www.action.UserRegisterAction">
  7. <result type="redirect">/index.action</result>
  8. </action>

0 条评论
发表评论…
0
郑展汉

郑展汉 公开分享 2016-06-28

JAVA 第十六周总结

本学期学习学习WEB框架技术开发课程,学到了JAVA MVC设计模式和struct2框架,利用struct制作了一个个人小项目,该项目是一个销售商品的购物网站,包含了登录,注册,查找,删除产品,修改产品,注销等功能。 在制作该网站的过程中也遇到了各种各样的问题,我们也都通过思考与互相交流将其解决,但也由于技术和时间原因项目虽然基本功能都有,但没有太多有特色的功能。但总的来说本学期还是收获良多。

0 条评论
发表评论…
0
蔡炎华

蔡炎华 公开分享 2016-06-28

PHP第十三周总结

本周继续完善项目
完成项目的发布功能
一、先添加一个index.php和indexAction.php文件,让html可以以php的形式在网站显示

  1. <?php
  2. require_once("action/IndexAction.php");
  3. new IndexAction();
  4. ?>
  5. indexAction.php
  6. <?php
  7. session_start();
  8. require_once('action/BaseAuthAction.php');
  9. require_once('libs/Smarty.class.php');
  10. require_once('dao/Gl_DAO.php');
  11. class IndexAction extends BaseAuthAction{
  12. public function IndexAction() {
  13. parent::__construct();
  14. $smarty = new Smarty();
  15. $smarty->display('template/index.html');
  16. }
  17. }
  18. ?>
  19. 二、在发布页面中添加一个表单获取要发布的值,代码如下:
  20. <form method="post" enctype="multipart/form-data" name="form1"id="form1" action="InsertSave.php">
  21. <div class="left">
  22. <span><label>标题</label></span>
  23. <span><input name="title" id="title" type="text" class="input"></span>
  24. </div>
  25. <div class="left_bottom">
  26. <span><label>时间</label></span>
  27. <span><input name="time" id="time" type="text" class="input" ></span>
  28. </div>
  29. <div class="left_bottom2">
  30. <span>图片</span>
  31. <span><input type="file" name="image" id="image" class="input" /></span>
  32. </div>
  33. <div class="right">
  34. <span><label>内容</label></span>
  35. <span><textarea name="content" id="content" class="textarea">

三、将获取的值提交到insert.php文件中,保存到数据库

  1. <?php
  2. require_once("action/InsertAction.php");
  3. new InsertAction();
  4. ?>
  5. InsertAction.php
  6. <?php
  7. require_once('libs/Smarty.class.php');
  8. class InsertAction {
  9. public function InsertAction(){
  10. $smarty = new Smarty();
  11. $smarty->display('template/index.html');
  12. }
  13. }
  14. ?>
  15. InsertSave.php
  16. <?php
  17. require_once("action/InsertSaveAction.php");
  18. new InsertSaveAction();
  19. echo "<script language=javascript>alert('发布成功!');window.location.href='index.php';</script>";
  20. ?>
  21. InsertSaveAction.php
  22. <?php
  23. require_once('libs/Smarty.class.php');
  24. require_once('dao/Gl_DAO.php');
  25. class InsertSaveAction {
  26. public function InsertSaveAction(){
  27. $savepath = "./img/";
  28. if (!is_dir($savepath)) {
  29. mkdir($savepath);
  30. }
  31. if ($_FILES['image']['tmp_name'] != "") {
  32. $extname = pathinfo("./img/".$_FILES['image']['name'],PATHINFO_EXTENSION);
  33. $filename = $this->makeFilename($extname);
  34. move_uploaded_file($_FILES['image']['tmp_name'], "./img/".$filename);
  35. }
  36. $img = "./img/".$filename;
  37. $insertdao = new Gl_DAO();
  38. $insertdao->save($_POST['title'],$_POST['time'],$_POST['content'],$img);
  39. }
  40. public function makeFilename($extname) {
  41. $time = explode(" ",microtime());
  42. $time = $time[1].($time[0]*1000);
  43. $time2 = explode(".",$time);
  44. $time = $time2[0];
  45. return date("Y-m-d")."-".$time.".".$extname;
  46. }
  47. }
  48. ?>

五、在DAO文件中增加添加语句

  1. public function save($title, $time, $content,$image) {
  2. $stmt = $this->pdo->prepare("insert into news(title,time,content,image) values(:title,:time,:content,:image)");
  3. $stmt->bindParam(':title', $title);
  4. $stmt->bindParam(':time', $time);
  5. $stmt->bindParam(':content', $content);
  6. $stmt->bindParam(':image', $image);
  7. $stmt->execute();
  8. return $this->pdo->lastInsertId();
  9. }

```

0 条评论
发表评论…
0
许桂华

许桂华 公开分享 2016-06-28

java第十六周课上笔记

递归函数

一、递归函数跳出
这两行是递归。递归要有跳出,否则会出现死循环或死机。
涉及数据库,就要避免用递归。

二、页面上不能写递归
1、页面上不能写递归,只能按顺序输出。把要显示的信息按先后顺序排好,然后输出。
先查出所有的第一级分类,再从第一级的分类查出它的子分类。

2、把List<Category> l 放到for循环外面,那么添加一条,就不会把原来的数据覆盖。

三、数据封装
1、给你一个盒子来封装这些信息。

2、从外面把盒子里的数据传进来:

3、先创建一个盒子,
然后查询子分类

4、所有根分类取出:

四、调试
1、设断点,F6调试。
60行判断是否有下一个子分类,有的话跳出到for语句,没有的话跳过,最后没有了就返回。

2、62加得太晚了:

3、加入分类。第一根分类加完就跳出。

4、避免了网页上的递归

5、页面上只需要一个for循环,其它递归的都删掉。

6、直接显示pathjson这个字段的值


0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

签到墙

签到完成的用户微信头像或照片留言会出现在网页大屏幕上。

签到墙使用流程:

1.想要在签到墙留下足迹首先用手机微信扫一扫二维码。

2.微信授权登陆后进入页面,可拍照上传或相册选取一张照片,并输入签到名字或留言,限4字以内(未上传照片将显示微信头像)。

3.上传照片,输入完后提交显示签到成功。

4.完成后,你的签到将会显示在签到墙上。

指导老师:楚王辉

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

灿蓝广州塔

灿蓝广州塔高六十厘米,塔身和塔尖采用和真正广州塔一比一千的比例搭建,整塔由蓝色LED,塑料底板,塑料柱子,漆包线焊接而成。塔上蓝色LED由底下电路板的STM32芯片控制,具有很高的欣赏性。

作者:李涛 何嘉运 程明廉
指导老师:孙奕凯

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

微场景互动

微场景互动,可帮助国内公司解决公司活动一系列繁琐的问题。只需要手机扫一扫“二维码”进入公众号,进入活动介绍,不需要为到场的人一个一个介绍或者人齐了才介绍浪费时间,立即就可以了解活动流程为活动做准备,活动者不仅可场互动,还而且与现场活动者进行沟通认识。
目前在国内公司每一年都有举行好几次员工互动活动包括年会,每次都要花大量的人力物力还有时间来主持现场,既缩短游戏活动时间又浪费经费。但现在不同,据了解移动互联网时代,终端成为移动互联网发展的重点之一。围绕移动互联网发展的需求,移动互联网时代终端的发展呈现出3个明显的发展趋势:一是紧紧围绕用户需求,为用户提供全方位的服务和体验,趋向终端与服务一体化;二是实现终端多样化;三是代表着3G竞合时代终端融合的必然趋势。

指导老师:楚王辉

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

拾慧工作室

网店装修
网店装修神奇“神笔”,它既可以通过装修模板让产品详情页实现无代码编辑,又可以实现电脑PC端和手机无线端详情页同时可视化编辑。模板的美观性,要求能吸引顾客,并让顾客有继续浏览的欲望;逻辑性是为了能够有条不絮地介绍产品,让顾客得到想要的信息;通用性指的是模板中的图片文字易更换修改,是店家是否使用该模板最重要的因素。模板的设计最重要还是取决于细节。

微信公众号推广
微信公众号推广运营以学院学生群体为主要对象,以了解学生生活、贴近学生群体为主要目标,通过日常推送文章,以及校园资讯的更新,分析文章阅读量和转发量,了解学生的需求和感兴趣的内容,了解学生日常生活以便及时向老师反馈,从而拉进师生距离。

淘宝店铺运营
Ritering睿投独有的六大定向技术,从时间、地域、频次、环境、人群及媒介等多维度进行定向设定,贯穿媒介购买到投放管理到最终的效果优化的全流程,全面提升营销效率和营销效果。

作者:张宜彬

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

Web前端开发 - 班级网站

《Web前端开发》课程项目——静态网站设计开发(班级网站、企业网站)

当你想要的效果出现问题的时候,更快速地找到错误。这个是我有意识的把“架构”和“内容”分离

灵活使用类选择,我个人的做法是所有的id选择器都是用于布局的,类选择器都是用于呈现效果的,这样做的好处就是,

作者:09电子商务G5班 邱瑞强
指导教师:杜黎强

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

网站VI设计-宣传单、海报 促销广告页

《网站VI设计》这门课主要讲授利用CorelDraw软件进行视觉识别设CorelDraw是著名的矢量图形绘制软件所以本学期都要求学生的作品为矢量风格

作者:13互联网G5班学生
指导老师:李远

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

C语言程序设计-学生管理系统

主要函数之间的调用关系和各自功能
主要函数的函数原型

功能说明:
1.录入学生信息
2.查看学生信息
3.学生成绩排序
4.查询学生信息
5.删除学生信息
6.修改学生信息
7.增加学生信息
8.保存学生信息
9.退出学生系统

作者:15互联网G5-1班 张科
指导老师:朱艳萍

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

Ajax优化用户网站体验-推箱子游戏

让玩家找到童年的味道,也让简单的小游戏增加了许多趣味性、观赏性

泡泡堂之推箱子:让玩家找到童年的味道也让简单的小游戏增加了许多趣味性观赏性

趣味推箱子:本款游戏采用的HTML+CSS+JS的技术开发

史上最简单的推箱子:找到最合适的路线将箱子推过去游戏难度逐层增加让

作者:14互联网G5-2班 郑锦宏
指导老师:朱艳萍

0 条评论
发表评论…
0
洪春骅

洪春骅 公开分享 2016-06-27

www.1473.cn 云端操作系统

搭建企业云盘企业既时通讯企业便签OA办公系统等办公应用有效整合帮助企业团队实现随时随地协同办公

云操作系统:

云操作系统结合多种技术的结合制作 云存储聊天对话音乐、兴趣社交 购物办公等有效整合实现了互联网数据互通操作系统给用户提供了更多便捷

让每个用户都能让互联网和生活中的实物结合在一起成为大家的日常所需
让互联网凝聚的力量更加强大

技术方面通过javascript、HTML(4-5)CSS(2.0-3.0) 、flish、ASP.net
nodej ssqlserver2008mysql等多种技术的结合制作云存储

作者:徐嘉伟
指导老师:楚王辉

0 条评论
发表评论…
0