新闻发布系统

下面就让我们来说一说基于jsp的新闻发布系统,其中使用的技术有JavaBean、fillter、数据库等,能够实现新闻的发布功能,在发布之后能够进行对每一条新闻的删除、修改、或者继续增加新的文章,最后还能够进行查询功能,其中引用了百度编辑器,能够进行图文并茂的编辑,极大地方便用户的使用。
:完整项目下载地址:新闻发布系统(下面的部分代码和下载地址的有所区别,但是只是优化而已,出问题可随时问我)
一、效果演示
首先让我们来看一看实现的效果:
下面是登陆的首界面:

图1 首界面
管理员登录页面:

图2 管理员登录界面
下面是管理员登陆之后的界面,可以进行添加新闻、删除新闻、查询新闻:

图3 管理员管理界面
下面是添加新闻界面,能够进行新闻的添加:

图4 添加新闻界面
下面是所添加的新闻:

图5 添加后的新闻
下面是修改新闻界面:

图6 修改新闻界面
下面是修改后的界面

图7 修改后的界面
下面是删除新闻后的界面:

图8 删除新闻后的界面
对于新闻的查找,与其他类似,在这里我们使用的是利用新闻编号进行查询所需的信息,然后在新的页面上进行显示
二、具体实现过程
 1、环境:编程环境为NetBeans8.0和Oracle数据库
 2、数据库后台的设计
    在新闻管理系统中,我们需要数据库后台管理,其具体步骤如下所示:
根据所需的业务进行建表,可参见如下所示建立数据库
 3、编写步骤:
(1)首先建立以个项目,在此命名为Demo_08_NewsRealese,项目布局结构如下图所示,根据如下布局对项目进行布局设计,方便后面的编程,项目中web-inf为项目配置文件夹,images文件夹用于储存项目中使用的图片文件,ueditor为百度富文本编辑器文件夹,源包文件夹为Java类文件夹:


图9 项目布局结构图
接着,我们进行创建数据库连接层,即DAO和VO,分别存于包com.lut.beans和dao,类命名分别命名为NewsRealese、NewsRealeseDao,对于类NewsRealese而言,主要是实现字符串的包装,其内容与数据库里边的内容一一对应,其代码分别如下所示:
package com.lut.beans;
public class NewsRealese {
private String newsId;
private String classId;
private String kindId;
private String myOther;
private String headTitle;
private String content;
private String connectRealtive;
private String author;
private String editor;
private String newsFrom;
private String top;
private String newsTime;
private String hits;
private String state;
private String tag;public String getNewsId() {return newsId;}public void setNewsId(String newsId) {this.newsId = newsId;}public String getClassId() {return classId;}public void setClassId(String classId) {this.classId = classId;}public String getKindId() {return kindId;}public void setKindId(String kindId) {this.kindId = kindId;}public String getMyOther() {return myOther;}public void setMyOther(String myOther) {this.myOther = myOther;}public String getHeadTitle() {return headTitle;}public void setHeadTitle(String headTitle) {this.headTitle = headTitle;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public String getConnectRealtive() {return connectRealtive;}public void setConnectRealtive(String connectRealtive) {this.connectRealtive = connectRealtive;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public String getEditor() {return editor;}public void setEditor(String editor) {this.editor = editor;}public String getNewsFrom() {return newsFrom;}public void setNewsFrom(String newsFrom) {this.newsFrom = newsFrom;}public String getTop() {return top;}public void setTop(String top) {this.top = top;}public String getNewsTime() {return newsTime;}public void setNewsTime(String newsTime) {this.newsTime = newsTime;}public String getHits() {return hits;}public void setHits(String hits) {this.hits = hits;}public String getState() {return state;}public void setState(String state) {this.state = state;}public String getTag() {return tag;}public void setTag(String tag) {this.tag = tag;}    
}
下面是类DAO类,命名为NewsRealeseDao.java,对于DAO类,主要用于实现数据库的连接问题,进行数据库的链接,在连接过程中需要用到各种有关数据库的技术,在这里我们使用的是Oracle数据库,其获取链接的方式为如下代码,其中第一行为注册驱动,第二行为数据库地址(orcl为Oracle数据库中的SID,在安装Oracle数据库时需要记住),第三行为具体的连接,及使用URL找到数据库位置,然后使用密码wjk139登录到Scott账户
            //1、注册驱动 Class.forName("oracle.jdbc.driver.OracleDriver");//2、url地址String url = "jdbc:oracle:thin:@localhost:1521:orcl";//3、获取连接conn = DriverManager.getConnection(url, "scott", "wjk139");
其他的操作分别为增删改查的具体代码,分别对应Servlet中或jsp中需要实例化的代码,下面就是具体的DAO类代码:
package dao;
import com.lut.beans.NewsRealese;
import static java.lang.System.out;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
public class NewsRealeseDao {public ArrayList queryAllNews() throws Exception {Connection conn = null;ArrayList newsRealese = new ArrayList();try {//获取连接  Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@localhost:1521:orcl";conn = DriverManager.getConnection(url, "scott", "wjk139");//运行SQL语句 String sql = "select * from newmessage";//获取Statement stat = conn.createStatement();ResultSet rs = stat.executeQuery(sql);while (rs.next()) {   //实例化VONewsRealese news = new NewsRealese();news.setNewsId(rs.getString("newsid"));news.setClassId(rs.getString("CLASSID"));news.setKindId(rs.getString("KINDID"));news.setMyOther(rs.getString("MYOTHER"));news.setHeadTitle(rs.getString("HEADTITLE"));news.setContent(rs.getString("CONTENT"));news.setConnectRealtive(rs.getString("CONNECTREALTIVE"));news.setAuthor(rs.getString("AUTHOR"));news.setEditor(rs.getString("EDITOR"));news.setNewsFrom(rs.getString("NEWSFROM"));news.setTop(rs.getString("TOP"));news.setNewsTime(rs.getString("NEWSTIME"));news.setHits(rs.getString("HITS"));news.setState(rs.getString("STATE"));news.setTag(rs.getString("TAG"));newsRealese.add(news);}rs.close();stat.close();} catch (Exception e1) {e1.printStackTrace();} finally {try {//关闭连接if (conn != null) {conn.close();conn = null;}} catch (Exception ex) {}return newsRealese;}}//查询一个消息public ArrayList queryOneNews(int newsid) throws Exception {Connection conn = null;ArrayList newsRealese = new ArrayList();int temp_id = newsid;try {//获取连接  Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@localhost:1521:orcl";conn = DriverManager.getConnection(url, "scott", "wjk139");//运行SQL语句 Statement stat = conn.createStatement();String sql = "select * from newmessage where newsid=?";//获取newsid,使用?代替字符串,是一种预编译的提交方式PreparedStatement ps = conn.prepareStatement(sql);ps.setInt(1, Integer.valueOf(newsid));ResultSet rs = ps.executeQuery();// 之前已经给了sql字符串,所以executeQuery是无参的。              while (rs.next()) {   //实例化VONewsRealese news = new NewsRealese();news.setNewsId(rs.getString("newsid"));news.setClassId(rs.getString("CLASSID"));news.setKindId(rs.getString("KINDID"));news.setMyOther(rs.getString("MYOTHER"));news.setHeadTitle(rs.getString("HEADTITLE"));news.setContent(rs.getString("CONTENT"));news.setConnectRealtive(rs.getString("CONNECTREALTIVE"));news.setAuthor(rs.getString("AUTHOR"));news.setEditor(rs.getString("EDITOR"));news.setNewsFrom(rs.getString("NEWSFROM"));news.setTop(rs.getString("TOP"));news.setNewsTime(rs.getString("NEWSTIME"));news.setHits(rs.getString("HITS"));news.setState(rs.getString("STATE"));news.setTag(rs.getString("TAG"));newsRealese.add(news);}rs.close();stat.close();} catch (Exception e1) {e1.printStackTrace();} finally {try {//关闭连接if (conn != null) {conn.close();conn = null;}} catch (Exception ex) {}return newsRealese;}}//删除数据public String deleteOneNews(int newsid) throws Exception {Connection conn = null;ArrayList newsRealese = new ArrayList();int temp_id = newsid;try {//获取连接  Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@localhost:1521:orcl";conn = DriverManager.getConnection(url, "scott", "wjk139");//运行SQL语句 Statement stat = conn.createStatement();String sql = "DELETE FROM  newmessage WHERE newsid =?";//获取newsid,使用?代替字符串,是一种预编译的提交方式PreparedStatement ps = conn.prepareStatement(sql);ps.setInt(1, Integer.valueOf(newsid));ResultSet rs = ps.executeQuery();// 之前已经给了sql字符串,所以executeQuery是无参的。              rs.close();stat.close();} catch (Exception e1) {e1.printStackTrace();} finally {try {//关闭连接if (conn != null) {conn.close();conn = null;}} catch (Exception ex) {}return newsRealese.toString();}}//插入数据public String insertOneNews(ArrayList addnews_list) throws Exception {Connection conn = null;/* for(int i=0,j=1;i<addnews_list.size();i++,j++){System.out.println("j:"+j+"值:"+addnews_list.get(i).toString());}*/try {//获取连接  Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@localhost:1521:orcl";conn = DriverManager.getConnection(url, "scott", "wjk139");//运行SQL语句 Statement stat = conn.createStatement();String sql = "insert into newmessage(newsId,classId,kindId,myOther,headTitle,content,connectRealtive,author,editor,newsFrom"+ ",top,newsTime,hits,state,tag) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";PreparedStatement ps = conn.prepareStatement(sql);ps.setInt(1, Integer.valueOf(addnews_list.get(0).toString()));ps.setInt(2, Integer.valueOf(addnews_list.get(1).toString()));ps.setInt(3, Integer.valueOf(addnews_list.get(2).toString()));ps.setInt(4, Integer.valueOf(addnews_list.get(3).toString()));ps.setString(5, addnews_list.get(4).toString());ps.setString(6, addnews_list.get(5).toString());ps.setString(7, addnews_list.get(6).toString());ps.setString(8, addnews_list.get(7).toString());ps.setString(9, addnews_list.get(8).toString());ps.setString(10, addnews_list.get(9).toString());ps.setInt(11, Integer.valueOf(addnews_list.get(10).toString()));ps.setString(12, addnews_list.get(11).toString());ps.setString(13, addnews_list.get(12).toString());ps.setString(14, addnews_list.get(13).toString());ps.setString(15, addnews_list.get(14).toString());for (int i = 0, j = 1; i < addnews_list.size(); i++, j++) {System.out.println("j:" + j + "值:" + addnews_list.get(i).toString());}int i = ps.executeUpdate();conn.commit();System.out.println("成功添加" + i + "行");stat.close();conn.close();return i + "conn:" + conn;} catch (Exception e1) {e1.printStackTrace();} finally {try {//关闭连接if (conn != null) {conn.close();conn = null;}} catch (Exception ex) {}}return conn.toString();}//更新数据public String updateOneNews(ArrayList addnews_list) throws Exception {Connection conn = null;/* for(int i=0,j=1;i<addnews_list.size();i++,j++){System.out.println("j:"+j+"值:"+addnews_list.get(i).toString());}*/try {//获取连接  Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@localhost:1521:orcl";conn = DriverManager.getConnection(url, "scott", "wjk139");//不安全//运行SQL语句 Statement stat = conn.createStatement();String sql = "UPDATE newmessage set classId=?,kindId=?,myOther=?,headTitle=?,content=?,"+ "connectRealtive=?,author=?,editor=?,newsFrom=?,top=?,newsTime=?,hits=?,state=?,tag=? where newsid=?";  PreparedStatement ps = conn.prepareStatement(sql);ps.setInt(1, Integer.valueOf(addnews_list.get(1).toString()));ps.setInt(2, Integer.valueOf(addnews_list.get(2).toString()));ps.setInt(3, Integer.valueOf(addnews_list.get(3).toString()));ps.setString(4, addnews_list.get(4).toString());ps.setString(5, addnews_list.get(5).toString());ps.setString(6, addnews_list.get(6).toString());ps.setString(7, addnews_list.get(7).toString());ps.setString(8, addnews_list.get(8).toString());ps.setString(9, addnews_list.get(9).toString());ps.setInt(10, Integer.valueOf(addnews_list.get(10).toString()));ps.setString(11, addnews_list.get(11).toString());ps.setString(12, addnews_list.get(12).toString());ps.setString(13, addnews_list.get(13).toString());ps.setString(14, addnews_list.get(14).toString());ps.setInt(15, Integer.valueOf(addnews_list.get(0).toString()));for (int i = 0, j = 1; i < addnews_list.size(); i++, j++) {System.out.println("j:" + j + "值:" + addnews_list.get(i).toString());}int i = ps.executeUpdate();conn.commit();System.out.println("成功更新" + i + "行");stat.close();conn.close();return i + "conn:" + conn;} catch (Exception e1) {e1.printStackTrace();} finally {try {//关闭连接if (conn != null) {conn.close();conn = null;}} catch (Exception ex) {}}return conn.toString();}public String ischecked(String user, String pass) throws Exception {Connection conn = null;//获取连接  Class.forName("oracle.jdbc.driver.OracleDriver");String url = "jdbc:oracle:thin:@localhost:1521:orcl";try {conn = DriverManager.getConnection(url,user, pass);//不安全//建立连接return conn.toString();} catch (SQLException e) {e.printStackTrace();}finally {if (conn != null){try {conn.close();} catch (SQLException e){e.printStackTrace();}}}return null;} 
}
(2)首页展示页面的编写,命名为index.html,由于可能有网络的延迟,我们使用渐进的方式跳转(渐进方式跳转:window.location.href="newRealese_brief.jsp",从index.html页面跳转到NewRealese_brief.jsp页面,其实这里的跳转功能使用的是JavaScript中的window对象进行跳转的),代码如下所示:
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><link type="text/css"  rel="stylesheet"  href="newsRealese.css"/>  <title>新闻发布系统--最前沿的时尚信息、最有看点的社会聚焦、最富得浪漫的殿堂</title></head><body id="body">正在跳转...,请等待...<script language="javascript" type="text/javascript">window.location.href="newRealese_brief.jsp"; </script></body>
</html>
在缓冲时,会进行跳转,跳转后的页面为newRealese_brief.jsp,其代码如下所示:进入新闻展示页面之后,我们能够对新闻进行搜素,还能够查看详细内容。
<%@page contentType="text/html" import="java.util.*,java.sql.*,com.lut.beans.NewsRealese,dao.NewsRealeseDao" pageEncoding="UTF-8" language="java"%>
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>新闻发布系统--最前沿的时尚信息、最有看点的社会聚焦、最富得浪漫的殿堂</title><link type="text/css"  rel="stylesheet"  href="newsRealese.css"/>  </head><body id="body"><a href="adminLogin.jsp" style="table-layout: right">管理员登录</a><h1 id="p">最新资讯</h1><br><%@include file="a_queryNews.jsp"  %><table  border="0" style="width:100%; height:100%" align="center"><tr><td style="width: 10%"> </td><td><%NewsRealeseDao newsRealeseDao = new NewsRealeseDao();ArrayList newsRealese = newsRealeseDao.queryAllNews();%> <%for (int i = 0; i < newsRealese.size(); i++) {NewsRealese newRealese = (NewsRealese) newsRealese.get(i);%>   <center><table  border="0" width="100%" id="table"><tr><td width="128"><p>此处假设无图片</p><p>此处假设无等级信息</p></td><td ><table  border="0" width="100%"><tr><td width="11%" >原创或转载:</td><td colspan="3"><%=newRealese.getMyOther()%> </td><td width="10%" >新闻标题:</td><td width="44%" ><%=newRealese.getHeadTitle()%> </td></tr><tr>                  <td colspan="6">新闻内容:</td> </table><table width="100%" border="0"> <tr><td><a  target="_blank" href="newRealese_detail.jsp?newsid=<%=newRealese.getNewsId()%>"/><table width="100%" border="0" align="center"><tr><td> <%=newRealese.getContent()%>					     </td> </tr></table>             </td> </tr>  </table><table border="0" width="100%">      <tr><td width="51" height="30">作者:</td><td width="203"><%=newRealese.getAuthor()%> </td><td width="97">新闻发布时间:</td><td width="167"><%=newRealese.getNewsTime()%> </td><td width="99">新闻点击次数:</td><td width="191"><%=newRealese.getHits()%> </td></tr>         </table></td></tr><tr><td height="21" colspan="2"><hr></td></tr></table></center><%}%></td><td> </td></tr><tr><td> </td><td> </td><td> </td></tr>
</table>
</body>
</html>
(3)详细新闻页面的设计,命名为newRealese_detail.jsp其代码如下所示:再详细新闻页面上,我们能够进行数据的详细情况的了解,在观看完详细信息之后,我们能够进行点击返回按钮进行返回操作
<%@page contentType="text/html" import="java.util.*,java.sql.*" pageEncoding="UTF-8" language="java"%>
<%@page import="com.lut.beans.NewsRealese" %>
<%@page import="dao.NewsRealeseDao" %>
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link type="text/css"  rel="stylesheet"  href="newsRealese.css"/>  <title>新闻发布系统--最前沿的时尚信息、最有看点的社会聚焦、最值得浪漫的殿堂</title></head><body id="body"><h1>最新资讯</h1><br><%String newsid=request.getParameter("newsid");int newsid_int=Integer.parseInt(newsid);          NewsRealeseDao newsRealeseDao=new NewsRealeseDao();ArrayList newsRealese=newsRealeseDao.queryOneNews(newsid_int);%>          <table  border="1"><tr ><td >新闻编号</td><td>所属新闻栏目编号</td><td>所属新闻分类编号</td><td>原创或转载</td><td>新闻标题</td><td>新闻内容</td><td>相关文章</td><td>作者</td><td>编辑</td><td>出处</td><td>是否置顶</td><td>新闻发布时间</td><td>新闻点击次数</td><td>新闻状态</td><td>新闻标记</td>                                                                                                                                   </tr><%for(int i=0;i<newsRealese.size();i++){NewsRealese newRealese=(NewsRealese)newsRealese.get(i);       %><tr><td><%=newRealese.getNewsId()  %> </td><td><%=newRealese.getClassId()  %> </td><td><%=newRealese.getKindId()  %> </td><td><%=newRealese.getMyOther()  %> </td><td><%=newRealese.getHeadTitle()%> </td><td><%=newRealese.getContent()  %> </td><td><%=newRealese.getConnectRealtive()%></td><td><%=newRealese.getAuthor()  %> </td><td><%=newRealese.getEditor()  %> </td><td><%=newRealese.getNewsFrom()  %> </td><td><%=newRealese.getTop()  %> </td><td><%=newRealese.getNewsTime()  %> </td><td><%=newRealese.getHits()  %> </td><td><%=newRealese.getState()  %> </td><td><%=newRealese.getTag()  %> </td></tr>        </table>
<table width="100%" border="0" cellspacing="0" cellpadding="4"><tr><td width="100%" style="text-align: center; vertical-align: top"><table width="90%" border="0" cellpadding="0" cellspacing="0"><tr><td><table width="100%" border="0" cellspacing="1" cellpadding="4" ><tr><th width="26%" class="TitleColor" style="text-align: right; vertical-align: top" scope="row">新闻标题:  </th><td width="74%" style="vertical-align: top" class="TitleColor" ><p align="left"><%=newRealese.getHeadTitle()%><p></td></tr><tr><th scope="row" class="TitleColor" style="text-align: right; vertical-align: top">作者:</th><td style="vertical-align: top"><p align="left"><%=newRealese.getAuthor()  %>    <p>           </td></tr><tr><th scope="row" class="TitleColor" style="text-align: right; vertical-align: top">新闻发布时间: </th><td style="vertical-align: top" class="TitleColor"><p align="left"><%=newRealese.getNewsTime()  %><p></td></tr><tr><th scope="row" class="TitleColor" style="text-align: right; vertical-align: top">新闻点击次数:  </th><td style="vertical-align: top" class="TitleColor"><p align="left"><%=newRealese.getHits()  %><p></td></tr><tr><td colspan="2" class="StoryContentColor"><p align="center"><%=newRealese.getContent()  %><p></td></tr></table> </td></tr></table><p> </p>     <table><tr><td ><a href="newRealese_brief.jsp">返回</a></td><td><a href="#">发表评论</a></td></tr>      </table>   </td></tr>
</table>
<table width="100%" border="0" cellspacing="0" cellpadding="4"><tr style="text-align: right"><td><a href="#">点赞</a> <a href="#">举报</a> <a href="#">投稿,联系作者</a></td></tr>
</table><%}%>
</body>
</html>
(4)管理员登录界面,命名为adminLogin.jsp页面,使用连接数据库的方式进行登录,在这里我们的管理员名称为Scott,密码为wjk139,管理员登录界面的实现代码如下所示
<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"  />
<title>新闻发布系统--最前沿的时尚信息、最有看点的社会聚焦、最值得浪漫的殿堂</title>
<link type="text/css"  rel="stylesheet"  href="newsRealese.css"/>  
</head><body id="body"><form method="post" action="checkLogin"><table   border="0" align="center" id="table_vertical" ><caption>管理员登录 </caption><tr><td width="40">Admin</td><td width="183"><input type="text" name="user"></td></tr><tr><td height="25">Pass</td><td><input type="password" name="pass"></td></tr></table> <table align="center"><tr><td><input type="submit" value="Login"><input type="reset" value="Reset"></td></tr>  </table>
</form>
</body>
</html>
在登录的过程中,我们需要进行判断,命名为checkLogin.java,,通过此类进行判断登录是否成功,若成功,则跳转到管理界面,若失败,则停留在当前界面,其代码如下所示:
package servlet;
import com.lut.beans.NewsRealese;
import dao.NewsRealeseDao;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class checkLogin extends HttpServlet {protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");String user=request.getParameter("user");String pass=request.getParameter("pass");NewsRealeseDao newsRealeseDao=new NewsRealeseDao();try {    String newsRealese=newsRealeseDao.ischecked(user,pass);if(newsRealese!=null){response.sendRedirect("adminManager.jsp");}else{response.sendRedirect("adminLogin.jsp");}        } catch (Exception ex) {Logger.getLogger(checkLogin.class.getName()).log(Level.SEVERE, null, ex);}}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {processRequest(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {processRequest(request, response);}@Overridepublic String getServletInfo() {return "Short description"+"public String getServletInfo() ";}
}
(5)管理员登陆之后的界面,命名为adminManager.jsp页面,在管理员界面能够进行删除修改增加和查询操作,其代码如下所示:
<%-- Document   : adminManagerCreated on : 2016-5-18, 17:10:01Author     : Administrator
--%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.lut.beans.NewsRealese"%>
<%@page import="dao.NewsRealeseDao"%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>管理员界面||adminManager.jsp</title><link type="text/css"  rel="stylesheet"  href="newsRealese.css"/>  </head><body id="body" style=" text-orientation: vertical-right"><h1 id="p">新闻管理</h1><br><table border="1" style="width:100%; height:100%"><tr><td width="10%" style="text-align:top"><table  border="0" style="width: 100%;height: 100%" ><tr><td><div align="center">新闻信息显示 </div></td></tr><tr><td><img src="./images/dog.jpg" width="100%" height="90%"></td></tr><tr><td><img src="./images/minus.gif" ></td></tr></table></td><td width="50%"><table border="0"><tr><td><%  NewsRealeseDao newsRealeseDao = new NewsRealeseDao();ArrayList newsRealese = newsRealeseDao.queryAllNews();%> <%for (int i = 0; i < newsRealese.size(); i++) {NewsRealese newRealese = (NewsRealese) newsRealese.get(i);%>  <table  border="0" width="100%" id="table"><tr><td width="128"><p>此处假设无图片</p><p>此处假设无等级信息</p>            </td><td ><table  border="0" width="100%"><tr><td  >原创或转载:</td><td ><%=newRealese.getMyOther()%> </td><td >新闻标题:</td><td ><%=newRealese.getHeadTitle()%> </td></tr><tr>                  <td colspan="6">新闻内容:</td> </table><table width="100%" border="0"> <tr><td><a  target="_blank" href="newRealese_detail.jsp?newsid=<%=newRealese.getNewsId()%>"/><table width="100%" border="0" align="center"><tr><td> <%=newRealese.getContent()%>						     </td> </tr></table>		          </td> </tr>  </table><table border="0" width="100%">      <tr><td width="51" height="30">作者:</td><td width="203"><%=newRealese.getAuthor()%> </td><td width="97">新闻发布时间:</td><td width="167"><%=newRealese.getNewsTime()%> </td><td width="99">新闻点击次数:</td><td width="191"><%=newRealese.getHits()%> </td></tr>         </table></td></tr>          <tr><td height="21" colspan="2"><input type="button" name="delete" value="删除"  align="middle" οnclick="javascrtpt:window.location.href = 'DeleteOneNews?newsid=<%=newRealese.getNewsId()%>'"> <input type="button" name="delete" value="修改"  align="middle"  οnclick="javascrtpt:window.location.href = 'a_updateNews.jsp?newsid=<%=newRealese.getNewsId()%>'"><hr>			</td></tr></table><%}%></td></tr></table></td><td width="5%" style=" text-orientation: vertical-right"><%@include file="a_queryNews.jsp"  %></td></tr><tr><td align="center"><a href="a_addNews.jsp" target="_blank">添加新闻</a></td><td align="center">二</td><td align="center">三</td></tr></table></body>
</html>
(6)增加新闻页面,命名为a_addNews.jsp,能够进行新闻的增加,在添加完信息之后,我们点击发布之后就可以成功添加信息,其代码如下所示,增加新闻时需要对新闻进行编辑,对于长篇幅新闻内容且含有图片的新闻内容的编写,在这儿我们使用功能强大的百度编辑器,首先从官网下载:百度编辑器下载,下载之后解压(我使用的版本是ueditor1_4_3_2-utf8-jsp),如下图所示结构,我们也能够在这里查看百度编辑器的配置:百度编辑器的配置

图10 百度富文本编辑器文件夹结构图
然后只需将整个文件夹拷贝到项目下即可,在使用时引入和修改路径,在jsp页面里边我已经配置好引用,只需修改路径即可,修改路径时只需将editor_config.js中查找URL变量配置编辑器在你项目中的路径。其中./ueditor为项目中的文件夹
var URL= window.UEDITOR_HOME_URL||"./ueditor/";
这样就配置好了编辑器,下面就是增加新闻的jsp页面,在添加完新闻之后,只需点击发布即可进行新闻的发布操作,代码如下所示:
<%@page contentType="text/html" import="java.util.*,java.sql.*" pageEncoding="UTF-8" language="java"%>
<%@page import="com.lut.beans.NewsRealese" %>
<%@page import="dao.NewsRealeseDao" %>
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>添加新闻- 新闻发布系统--最前沿的时尚信息、最有看点的社会聚焦、最富得浪漫的殿tang</title><!-- 配置文件 --><script type="text/javascript" src="./ueditor/ueditor.config.js"></script><!-- 编辑器源码文件 --><script type="text/javascript" src="./ueditor/ueditor.all.js"></script><link rel="stylesheet" type="text/css" href="./udeditor/themes/default/css" /><link type="text/css"  rel="stylesheet"  href="newsRealese.css"/></head><body id="body"><form action="InsertOneNews" method="post"><table  border="0" id="table"><tr><td width="5%">left</td><td width="90%">    <table  border="1" id="table"><tr ><td >新闻编号</td> <td><input type="text" name="newsid"></td><td>所属新闻栏目编号</td> <td><input type="text" name="classid"></td></tr><tr><td>所属新闻分类编号</td> <td><input type="text" name="kindid"></td><td>原创或转载</td> <td><input type="text" name="myother"></td></tr><tr><td>新闻标题</td> <td><input type="text" name="headtitle"></td><td>相关文章</td> <td><input type="text" name="connectrealtive"></td></tr><tr><td>作者</td> <td><input type="text" name="author"></td><td>编辑</td> <td><input type="text" name="editor"></td></tr><tr><td>出处</td> <td><input type="text" name="newsfrom"></td><td>是否置顶</td> <td><input type="text" name="top"></td></tr><tr><td>新闻发布时间</td> <td><input type="text" name="newstime"></td><td>新闻点击次数</td> <td><input type="text" name="hits"></td></tr><tr><td>新闻状态</td> <td><input type="text" name="state"></td><td>新闻标记</td> <td><input type="text" name="tag"></td>                                                                      </tr><tr></table></td><td width="5%">right</td></tr><tr><td> </td><td><div align="center" style="width:80%">  <textarea id="newsEditor" name="content" style="height: 80%"></textarea>  <br/>  <input type="submit" value="发 布">  <script type="text/javascript">UE.getEditor('newsEditor');// var content = UE.getPlainTxt();//content就是编辑器的带格式的内容//focus时自动清空初始化时的内容</script>  </div></td><td> </td></tr></table>   </form></body>
</html>
在增加新闻时,需要对Servlet进行配置,如下图所示所示为配置文件的结构:

插入数据Servlet结构图
下面是InserOneNews.java代码,能够进行对数据的插入功能
package servlet;
import dao.NewsRealeseDao;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class InsertOneNews extends HttpServlet {protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");try (PrintWriter out = response.getWriter()) {ArrayList addnews_list = new ArrayList();NewsRealeseDao newsRealeseDao = new NewsRealeseDao();addnews_list.add(0, request.getParameter("newsid"));addnews_list.add(1, request.getParameter("classid"));addnews_list.add(2, request.getParameter("kindid"));addnews_list.add(3, request.getParameter("myother"));addnews_list.add(4, request.getParameter("headtitle"));addnews_list.add(5, request.getParameter("content"));addnews_list.add(6, request.getParameter("connectrealtive"));addnews_list.add(7, request.getParameter("author"));addnews_list.add(8, request.getParameter("editor"));addnews_list.add(9, request.getParameter("newsfrom"));addnews_list.add(10, request.getParameter("top"));addnews_list.add(11, request.getParameter("newstime"));addnews_list.add(12, request.getParameter("hits"));addnews_list.add(13, request.getParameter("state"));addnews_list.add(14,request.getParameter("tag"));try {String newsRealese = newsRealeseDao.insertOneNews(addnews_list);System.out.println("String:"+newsRealese);if (newsRealese!= null) {response.sendRedirect("adminManager.jsp");} else {response.sendRedirect("a_addNews.jsp");}} catch (Exception ex) {Logger.getLogger(checkLogin.class.getName()).log(Level.SEVERE, null, ex);}}}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {processRequest(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {processRequest(request, response);}@Overridepublic String getServletInfo() {return "Short description";}
}
至此,我们完整的实现了插入工作
(7)现在完成删除操作,在Servlet包中建立如下所示代码,命名为DeleteOneNews.java:
package servlet;
import dao.NewsRealeseDao;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class DeleteOneNews extends HttpServlet {protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");try (PrintWriter out = response.getWriter()) {String str_id=request.getParameter("newsid");int newsid_int=Integer.valueOf(str_id);NewsRealeseDao newsRealeseDao=new NewsRealeseDao();try {String newsRealese = newsRealeseDao.deleteOneNews(newsid_int);System.out.println("String:"+newsRealese);if (newsRealese!= null) {response.sendRedirect("adminManager.jsp");} else {response.sendRedirect("a_addNews.jsp");}} catch (Exception ex) {Logger.getLogger(checkLogin.class.getName()).log(Level.SEVERE, null, ex);}}}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {processRequest(request, response);}/*** Handles the HTTP <code>POST</code> method.** @param request servlet request* @param response servlet response* @throws ServletException if a servlet-specific error occurs* @throws IOException if an I/O error occurs*/@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {processRequest(request, response);}/*** Returns a short description of the servlet.** @return a String containing servlet description*/@Overridepublic String getServletInfo() {return "Short description";}
}
(8)实现查询操作,命名为a_queryNews.jsp,其代码如下所示:
<%-- Document   : a_queryNewsCreated on : 2016-5-18, 17:08:40Author     : Administrator
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>查询页面</title></head><body><table  style="width:100%;height:100%" border="0"><tr><td><form action="QueryOneNews"  method="post" target="_blank" >请输入新闻编号:<input type="text" name="query"><input type="submit" value="查询" ><br></form><hr></td></tr><tr><td> </td></tr></table></body>
</html>
对于查询这件事,有成功,有失败,在这儿我们进行失败后文件的设置,代码如下所示,命名为a_queryNewsfailed.jsp,使用超级连接的方式,连接到主页面
<%-- Document   : a_queryNeesfailedCreated on : 2016-6-6, 8:43:35Author     : Administrator
--%>
<%@page contentType="text/html" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>查询失败</title></head><body><h1>没有找到你要查找的内容,但是你可以进入</h1><a href="index.html">主页进行查看</a></body>
</html>
实现了以上显示层的操作之后,下面就是控制层的实现,命名为QueryOneNews.java,其代码如下所示:
package servlet;
import dao.NewsRealeseDao;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class QueryOneNews extends HttpServlet {protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");try (PrintWriter out = response.getWriter()) {String str_id=request.getParameter("query");int newsid_int=Integer.valueOf(str_id);NewsRealeseDao newsRealeseDao=new NewsRealeseDao();try {ArrayList newsRealese = newsRealeseDao.queryOneNews(newsid_int);char [] s1=newsRealese.toString().toCharArray();System.out.println("String+newsRealese:"+newsRealese);System.out.println("String+newsRealese:"+s1[0]+" -------"+s1[1]);if(s1[0]=='['&&s1[1]==']'){response.sendRedirect("a_queryNewsfailed.jsp");} else{response.sendRedirect("newRealese_detail.jsp?newsid="+str_id); }    } catch (Exception ex) {Logger.getLogger(checkLogin.class.getName()).log(Level.SEVERE, null, ex);}}}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {processRequest(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {processRequest(request, response);}@Overridepublic String getServletInfo() {return "Short description";}
}
(9)下面实现更新数据的操作,命名为a_updateNews.jsp,其代码如下所示:
<%@page contentType="text/html" import="java.util.*,java.sql.*" pageEncoding="UTF-8" language="java"%>
<%@page import="com.lut.beans.NewsRealese" %>
<%@page import="dao.NewsRealeseDao" %>
<!DOCTYPE html>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>更改新闻-</title><!-- 配置文件 --><script type="text/javascript" src="./ueditor/ueditor.config.js"></script><!-- 编辑器源码文件 --><script type="text/javascript" src="./ueditor/ueditor.all.js"></script><link rel="stylesheet" type="text/css" href="./udeditor/themes/default/css" /><link type="text/css"  rel="stylesheet"  href="newsRealese.css"/></head><body id="body"><%NewsRealeseDao newsRealeseDao=new NewsRealeseDao();String newsid_s=request.getParameter("newsid");int news_int=Integer.valueOf(newsid_s);ArrayList news_list=newsRealeseDao.queryOneNews(news_int);%><%for(int i=0;i<news_list.size();i++){NewsRealese newRealese=(NewsRealese)news_list.get(i);       %><form action="UpdateOneNews" method="post"><table  border="0" id="table" style="width:95%"><tr><td width="5%">left</td><td width="90%">    <table  border="1" id="table" style="width:100%"><tr >       <tr><td >新闻编号</td> <td><input  type="text"  width="100%" name="newsid" value="<%=newRealese.getNewsId()  %>"></td><td>所属新闻栏目编号</td> <td><input type="text" width="100%" name="classid" value="<%=newRealese.getClassId()  %>"></td></tr><tr><td>所属新闻分类编号</td> <td><input type="text" width="100%" name="kindid" value="<%=newRealese.getKindId()  %>"></td><td>原创或转载</td> <td><input type="text" width="100%" name="myother" value="<%=newRealese.getMyOther()  %>"></td></tr><tr><td>新闻标题</td> <td><input type="text" width="100%" name="headtitle" value="<%=newRealese.getHeadTitle()%>"></td><td>相关文章</td> <td><input type="text" width="100%" name="connectrealtive"  value="<%=newRealese.getConnectRealtive()%>"></td></tr><tr><td>作者</td> <td><input type="text" width="100%" name="author"  value="<%=newRealese.getAuthor()  %>"></td><td>编辑</td> <td><input type="text" width="100%" name="editor"  value="<%=newRealese.getEditor()  %>"></td></tr><tr><td>出处</td> <td><input type="text" width="100%" name="newsfrom"  value="<%=newRealese.getNewsFrom()  %>"></td><td>是否置顶</td> <td><input type="text" width="100%" name="top"  value="<%=newRealese.getTop()  %>"></td></tr><tr><td>新闻发布时间</td> <td><input type="text" width="100%" name="newstime"  value="<%=newRealese.getNewsTime()  %> "></td><td>新闻点击次数</td> <td><input type="text" width="100%" name="hits"  value="<%=newRealese.getHits()  %>"></td></tr><tr><td>新闻状态</td> <td><input type="text" name="state" width="100%"  value="<%=newRealese.getState()  %>"></td><td>新闻标记</td> <td><input type="text" width="100%" name="tag"  value="<%=newRealese.getTag()  %>"></td>                                                                      </tr><tr></table></td><td width="5%">right</td></tr><tr><td> </td><td><div align="center" style="width:80%">  <textarea id="newsEditor" name="content" style="height: 80%"><%=newRealese.getContent()  %></textarea>  <br/>  <input type="submit" value="发 布">  <script type="text/javascript">  UE.getEditor('newsEditor');  var content=UE.getPlainTxt();//s就是编辑器的带格式的内容</script>  </div>	</td><td> </td></tr>
</table>   </form><%}%>
</body>
</html>
在Servlet中进行如下代码所示配置:
package servlet;
import dao.NewsRealeseDao;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class UpdateOneNews extends HttpServlet {protected void processRequest(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {response.setContentType("text/html;charset=UTF-8");try (PrintWriter out = response.getWriter()) {ArrayList addnews_list = new ArrayList();NewsRealeseDao newsRealeseDao = new NewsRealeseDao();addnews_list.add(0, request.getParameter("newsid"));addnews_list.add(1, request.getParameter("classid"));addnews_list.add(2, request.getParameter("kindid"));addnews_list.add(3, request.getParameter("myother"));addnews_list.add(4, request.getParameter("headtitle"));addnews_list.add(5, request.getParameter("content"));addnews_list.add(6, request.getParameter("connectrealtive"));addnews_list.add(7, request.getParameter("author"));addnews_list.add(8, request.getParameter("editor"));addnews_list.add(9, request.getParameter("newsfrom"));addnews_list.add(10, request.getParameter("top"));addnews_list.add(11, request.getParameter("newstime"));addnews_list.add(12, request.getParameter("hits"));addnews_list.add(13, request.getParameter("state"));addnews_list.add(14,request.getParameter("tag"));try {String newsRealese = newsRealeseDao.updateOneNews(addnews_list);System.out.println("String:"+newsRealese);if (newsRealese!= null) {response.sendRedirect("adminManager.jsp");} else {response.sendRedirect("a_addNews.jsp");}} catch (Exception ex) {Logger.getLogger(checkLogin.class.getName()).log(Level.SEVERE, null, ex);}}}@Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {processRequest(request, response);}@Overrideprotected void doPost(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException {processRequest(request, response);}@Overridepublic String getServletInfo() {return "Short description";}
}
到这儿,我们已经实现了对增删改查功能的实现,当然,基本的新闻发布功能已经实现




查看全文
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

相关文章

  1. 浅谈mysql数据库备份

    在平时的开发工作中是非常重视备份数据库的。一般企业都会隔一小段时间就全盘备份一次,甚至每天都增量备份,一周全备一次。因为企业数据实在是太重要了。大家工作再细致,网络安全再完备,也难免会出现硬件错误或者黑客攻击,甚至人为出错的情况都会有。如果没有做好备份,一…...

    2024/4/6 23:47:12
  2. Kotlin系统入门与进阶(一)

    Kotlin中文文档:http://www.kotlindoc.cn/GettingStarted/Basic-Syntax.html https://www.kotlincn.net/docs/reference/basic-types.html一、什么是Kotlin?Kotlin就是一门可以运行在Java虚拟机、Android、浏览器上的静态语言,他与Java 100%兼容,如果对Java熟悉,可以发现…...

    2024/4/4 21:59:34
  3. 无限级分类新闻管理数据表设计

    无限分类新闻管理数据表设计说明:本人于ITEYE创建于2013年,现转移到CSDN...

    2024/4/16 23:23:24
  4. Kotlin 今后工作靠他灵

    靠他灵 Java 类型数据赋值 小的可以赋值给大的,大的不可以赋值给小的。 kotlin 类型数据赋值 严格,不同类型数据相互赋值需要类型转换,转换使用to方法,比如:toInt kotlin 可变量和不可变量 var 声明的是可变量 val 声明的是不可变量 知识点: 1.kotlin没有Java中的extends…...

    2024/4/16 23:22:00
  5. mysql数据库备份和还原常用的命令

    备份MySQL数据库的命令 mysqldump -hhostname -uusername -ppassword databasename > backupfile.sql 备份MySQL数据库为带删除表的格式 备份MySQL数据库为带删除表的格式,能够让该备份覆盖已有数据库而不需要手动删除原有数据库。 mysqldump -–add-drop-table -uusername…...

    2024/4/16 23:21:18
  6. Fiddler大解析!抱歉,抓包抓得好真的可以为所欲为

    转载自:https://www.52pojie.cn/thread-854434-1-1.html 说起抓包,很多人以为就是用个工具,简简单单地抓一下就可以了。 昨天在面试一个安卓逆向,直接告诉我【抓包没有技术含量】。 在这里,我必须发一个教程,解析一下抓包神器——Fiddler。 Fiddler仅仅是一个抓包工具?不…...

    2024/4/16 23:20:42
  7. 图书管理系统(ssm框架)

    1.前端 layui2.spring springmvc mybatis mybatis逆向工程项目目录jsp引入路径<link rel="stylesheet" href="../../layui/css/layui.css" media="all"><script src="../../layui/layui.js" charset="utf-8">&…...

    2024/4/16 23:21:54
  8. vue实战之vue后台管理系统(一)

    本文主要介绍了项目的来源 几个主要的代码部分的分析(main.js、routes.js、App.vue) 在网上很少找到关于一个较完全的vue项目的开发文档(即如何一步步的搭建一个vue项目)项目来源 这个项目是我自己从Git上面找到的一个项目,并不是我整的,毕竟我只是一个菜鸡,但是,这个只…...

    2024/4/16 23:20:54
  9. Kotlin基础之属性

    参考文档 Kotlin中文文档 http://www.kotlindoc.cn/ClassesAndObjects/Classes-and-Inheritance.html 简书 https://www.jianshu.com/p/011f3fbefd012. 属性java中在包下面有类、接口等,而Kotlin中在包下面是可以直接有属性的,并且所有非抽象都强制要求初始化,没有初始化的属…...

    2024/4/16 23:21:42
  10. MySql WorkBench数据库备份与恢复

    1.写在前面在使用mysql过程中我一般把mysql workbench和navicat for mysql结合着用,发现使用navicat备份数据没那么简单,workbench比较方便,但还是碰到坑.2.步骤很明显可以看出来 一个是导出 一个是导入。 选择导出后,选择一个数据库(记住名字 后面用的着),选择表,和位置…...

    2024/4/16 23:22:06
  11. 拖库 洗库 撞库

    间接转载地址: http://blog.csdn.net/daliaojie/article/details/42171177一,背景:用户数据泄露一直是如今互联网世界的一个焦点,从最近的京东撞库抹黑事件,到之前的CSDN,如家用户数据的泄露,服务商和黑客之间在用户数据这个舞台上一直在进行着旷日持久的攻防战。对于大…...

    2024/4/16 23:21:12
  12. 认识电烙铁

    参考:https://baijiahao.baidu.com/s?id=1645898136820875798&wfr=spider&for=pchttps://zhidao.baidu.com/question/937343107456888772.html一、电烙铁的分类内热外热式和内热式两种1.1、内热式电烙铁的组成内热式的发热芯在里面(烙铁头套在发热体的外部),在外面…...

    2024/4/19 7:28:52
  13. ASP.NET两个关联的表的增删查改

    两个关联的表的增删查改 主要用了参数 SqlParameter,事务执行多条sql 表Users ID int Name varchar 表UsersDetail ID int UserId int (对应表Users的ID) Phone varchar Address varchar ----------------------------------------------------…...

    2024/4/19 4:38:00
  14. 信息系统项目管理师考试考点知识点详解(纯干货)

    一、项目成本概念在项目中,成本是指活动或组成部分的货币价值或价格,包括为实施和完成该活动或组成部分或创造该组成部分所需要的资源的货币价值。项目成本管理概念项目成本管理是项目管理的一个重要组成部分,它是指在项目的实施过程中,为了保证完成项目所花费的实际成本不…...

    2024/4/18 12:50:40
  15. 基于.net的新闻发布系统的设计与实现

    摘要:随着网络技术的发展和Internet应用的普及,互联网已成为人们获取信息的一个重要途径。而越来越多的企业和单位拥有了自己的新闻发布系统。本文主要运用ASP.NET技术框架基于C#语言制作的一个动态网站,数据库采用SQL Server。实现网站新闻的动态管理,使得对信息的管理更加…...

    2024/4/16 23:21:54
  16. SqlServer 备份集中的数据库备份与现有的数据库不同。

    标题: Microsoft SQL Server Management Studio ------------------------------还原 对于 服务器“XXXXX”失败。 (Microsoft.SqlServer.SmoExtended)有关帮助信息,请单击: http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&ProdVer=10.50.1600.1+((KJ_RT…...

    2024/4/23 18:13:11
  17. 快商通智能客服云平台、金融反欺诈方案获中科院互联网周刊金i奖

    6月26日-6月28日,中国科学院《互联网周刊》联合中国社会科学院信息化研究中心、eNet研究院、德本咨询共同发布“2020创新型国家发展论坛金i奖”。快商通凭借创新能力与技术原创能力,荣获“2020年创新型人工智能客服平台”与“2020年创新型金融反欺诈解决方案”两大奖项。 11年…...

    2024/4/16 23:22:06
  18. 推荐一款国内最好的个人知识管理、笔记软件,学习工作最好帮手

    推荐一款国内最好的个人知识管理、笔记软件,学习工作最好帮手 推荐使用Wiz,它是一款基于云存储的笔记软件,很快很好用,使用我的邀请注册可获VIP体验: http://www.wiz.cn/i/47b7bcd6 为知Wiz被誉为国内最好的个人知识管理、笔记软件 值得保存的网页、随手的灵感笔记、重要文…...

    2024/4/16 23:21:54
  19. kotlin官方文档中文翻译(三) 类和对象

    类和继承类Kotlin 中使用关键字 class 声明类class Invoice { }类声明由类名、类头(指定其类型参数、主 构造函数等)和由大括号包围的类体构成。类头和类体都是可选的; 如果一个类没有类体,可以省略花括号。class Empty构造函数在 Kotlin 中的一个类可以有一个主构造函数和…...

    2024/4/16 23:23:06
  20. SQL Server数据库备份有两种方式

    SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文件ldf的方式。下面将主要讨论一下后者的备份与恢复。本文假定您能熟练使用SQL Server Enterprise Manager(SQL Server企业管理器)和SQL Server Quw…...

    2024/4/16 23:22:00

最新文章

  1. 【JAVA】阿里技术官耗时三个月整理的Java核心知识点

    在裁员风波的席卷之下&#xff0c;IT行业弥漫着浓厚的焦虑和不安。面对如此动荡的环境&#xff0c;一个共识日益凸显&#xff1a;提升个人价值至关重要。 这不仅仅是指薪资上的数字增长&#xff0c;更重要的是在职场中、在专业领域、在技术上不断取得突破&#xff0c;并塑造自…...

    2024/4/26 17:14:44
  2. 梯度消失和梯度爆炸的一些处理方法

    在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言&#xff0c;在此感激不尽。 权重和梯度的更新公式如下&#xff1a; w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...

    2024/3/20 10:50:27
  3. ChatGPT 初学者指南

    原文&#xff1a;ChatGPT for Beginners 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 介绍 如果您一直关注新闻和趋势&#xff0c;您可能已经在某个地方读到或听到过&#xff0c;Sam Altman 的生成式人工智能平台 ChatGPT 已经将人工智能推向了一个新的高度 - 许多…...

    2024/4/23 6:13:11
  4. 权限提升-Linux系统权限提升篇VulnhubRbash绕过DockerLXD容器History泄漏shell交互

    知识点 1、普通用户到Linux-泄漏-History 2、普通用户到Linux-限制-Rbash绕过 3、普通用户到Linux-容器-LXD&Docker 4.Linux系统提权-web/普通用户-docker逃逸&提权&shell交互 章节点&#xff1a; 1、Web权限提升及转移 2、系统权限提升及转移 3、宿主权限提升及…...

    2024/4/26 12:45:26
  5. 【外汇早评】美通胀数据走低,美元调整

    原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...

    2024/4/25 11:51:20
  6. 【原油贵金属周评】原油多头拥挤,价格调整

    原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...

    2024/4/25 18:39:24
  7. 【外汇周评】靓丽非农不及疲软通胀影响

    原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...

    2024/4/25 18:38:39
  8. 【原油贵金属早评】库存继续增加,油价收跌

    原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...

    2024/4/25 18:39:23
  9. 【外汇早评】日本央行会议纪要不改日元强势

    原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...

    2024/4/25 18:39:22
  10. 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响

    原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...

    2024/4/25 18:39:22
  11. 【外汇早评】美欲与伊朗重谈协议

    原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...

    2024/4/25 18:39:20
  12. 【原油贵金属早评】波动率飙升,市场情绪动荡

    原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...

    2024/4/25 16:48:44
  13. 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试

    原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...

    2024/4/26 16:00:35
  14. 【原油贵金属早评】市场情绪继续恶化,黄金上破

    原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...

    2024/4/25 18:39:16
  15. 【外汇早评】美伊僵持,风险情绪继续升温

    原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...

    2024/4/25 18:39:16
  16. 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势

    原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...

    2024/4/25 0:00:17
  17. 氧生福地 玩美北湖(上)——为时光守候两千年

    原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...

    2024/4/25 4:19:21
  18. 氧生福地 玩美北湖(中)——永春梯田里的美与鲜

    原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...

    2024/4/25 18:39:14
  19. 氧生福地 玩美北湖(下)——奔跑吧骚年!

    原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...

    2024/4/25 18:39:12
  20. 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!

    原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...

    2024/4/25 2:10:52
  21. 「发现」铁皮石斛仙草之神奇功效用于医用面膜

    原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...

    2024/4/25 18:39:00
  22. 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者

    原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...

    2024/4/25 13:19:01
  23. 广州械字号面膜生产厂家OEM/ODM4项须知!

    原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...

    2024/4/25 18:38:58
  24. 械字号医用眼膜缓解用眼过度到底有无作用?

    原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...

    2024/4/25 18:38:57
  25. 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...

    解析如下&#xff1a;1、长按电脑电源键直至关机&#xff0c;然后再按一次电源健重启电脑&#xff0c;按F8健进入安全模式2、安全模式下进入Windows系统桌面后&#xff0c;按住“winR”打开运行窗口&#xff0c;输入“services.msc”打开服务设置3、在服务界面&#xff0c;选中…...

    2022/11/19 21:17:18
  26. 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。

    %读入6幅图像&#xff08;每一幅图像的大小是564*564&#xff09; f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...

    2022/11/19 21:17:16
  27. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...

    win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面&#xff0c;在等待界面中我们需要等待操作结束才能关机&#xff0c;虽然这比较麻烦&#xff0c;但是对系统进行配置和升级…...

    2022/11/19 21:17:15
  28. 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...

    有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows&#xff0c;请勿关闭计算机”的提示&#xff0c;要过很久才能进入系统&#xff0c;有的用户甚至几个小时也无法进入&#xff0c;下面就教大家这个问题的解决方法。第一种方法&#xff1a;我们首先在左下角的“开始…...

    2022/11/19 21:17:14
  29. win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...

    置信有很多用户都跟小编一样遇到过这样的问题&#xff0c;电脑时发现开机屏幕显现“正在配置Windows Update&#xff0c;请勿关机”(如下图所示)&#xff0c;而且还需求等大约5分钟才干进入系统。这是怎样回事呢&#xff1f;一切都是正常操作的&#xff0c;为什么开时机呈现“正…...

    2022/11/19 21:17:13
  30. 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...

    Win7系统开机启动时总是出现“配置Windows请勿关机”的提示&#xff0c;没过几秒后电脑自动重启&#xff0c;每次开机都这样无法进入系统&#xff0c;此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一&#xff1a;开机按下F8&#xff0c;在出现的Windows高级启动选…...

    2022/11/19 21:17:12
  31. 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...

    有不少windows10系统用户反映说碰到这样一个情况&#xff0c;就是电脑提示正在准备windows请勿关闭计算机&#xff0c;碰到这样的问题该怎么解决呢&#xff0c;现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法&#xff1a;1、2、依次…...

    2022/11/19 21:17:11
  32. 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...

    今天和大家分享一下win7系统重装了Win7旗舰版系统后&#xff0c;每次关机的时候桌面上都会显示一个“配置Windows Update的界面&#xff0c;提示请勿关闭计算机”&#xff0c;每次停留好几分钟才能正常关机&#xff0c;导致什么情况引起的呢&#xff1f;出现配置Windows Update…...

    2022/11/19 21:17:10
  33. 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...

    只能是等着&#xff0c;别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚&#xff0c;只能是考虑备份数据后重装系统了。解决来方案一&#xff1a;管理员运行cmd&#xff1a;net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...

    2022/11/19 21:17:09
  34. 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?

    原标题&#xff1a;电脑提示“配置Windows Update请勿关闭计算机”怎么办&#xff1f;win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢&#xff1f;一般的方…...

    2022/11/19 21:17:08
  35. 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...

    关机提示 windows7 正在配置windows 请勿关闭计算机 &#xff0c;然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;关机提示 windows7 正在配…...

    2022/11/19 21:17:05
  36. 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...

    钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...

    2022/11/19 21:17:05
  37. 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...

    前几天班里有位学生电脑(windows 7系统)出问题了&#xff0c;具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面&#xff0c;长时间没反应&#xff0c;无法进入系统。这个问题原来帮其他同学也解决过&#xff0c;网上搜了不少资料&#x…...

    2022/11/19 21:17:04
  38. 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...

    本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法&#xff0c;并在最后教给你1种保护系统安全的好方法&#xff0c;一起来看看&#xff01;电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中&#xff0c;添加了1个新功能在“磁…...

    2022/11/19 21:17:03
  39. 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...

    许多用户在长期不使用电脑的时候&#xff0c;开启电脑发现电脑显示&#xff1a;配置windows更新失败&#xff0c;正在还原更改&#xff0c;请勿关闭计算机。。.这要怎么办呢&#xff1f;下面小编就带着大家一起看看吧&#xff01;如果能够正常进入系统&#xff0c;建议您暂时移…...

    2022/11/19 21:17:02
  40. 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...

    配置windows update失败 还原更改 请勿关闭计算机&#xff0c;电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容&#xff0c;让我们赶快一起来看一下吧&#xff01;配置windows update失败 还原更改 请勿关闭计算机&#x…...

    2022/11/19 21:17:01
  41. 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...

    不知道大家有没有遇到过这样的一个问题&#xff0c;就是我们的win7系统在关机的时候&#xff0c;总是喜欢显示“准备配置windows&#xff0c;请勿关机”这样的一个页面&#xff0c;没有什么大碍&#xff0c;但是如果一直等着的话就要两个小时甚至更久都关不了机&#xff0c;非常…...

    2022/11/19 21:17:00
  42. 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...

    当电脑出现正在准备配置windows请勿关闭计算机时&#xff0c;一般是您正对windows进行升级&#xff0c;但是这个要是长时间没有反应&#xff0c;我们不能再傻等下去了。可能是电脑出了别的问题了&#xff0c;来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...

    2022/11/19 21:16:59
  43. 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...

    我们使用电脑的过程中有时会遇到这种情况&#xff0c;当我们打开电脑之后&#xff0c;发现一直停留在一个界面&#xff1a;“配置Windows Update失败&#xff0c;还原更改请勿关闭计算机”&#xff0c;等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢&#xff0…...

    2022/11/19 21:16:58
  44. 如何在iPhone上关闭“请勿打扰”

    Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...

    2022/11/19 21:16:57