JIANGzihao0222

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
统计
 

昨天刚进行了期中考试,考的和19级期中差不多,以下是我的代码和一些体会,顺便写一下思路(没人讲,自己看太难受了)

首先,基本思路都一样,就是增删改查,第一步要做的就是建一个网络界面,就是jsp界面,里面有四个功能,增加修改删除查询,jsp中找到跳转的方法就行。

以下是Screen.jsp代码

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>主页</title>
</head>
<body>
<div align="center">
<form name="form" method="post" action="add.jsp">
<input type="submit" value="发布活动信息">
</form>
<form name="form" method="post" action="searchmax.jsp">
<input type="submit" value="查询活动信息"">
</form>
<form name="form" method="post" action="liulan.jsp">
<input type="submit" value="浏览活动信息"">
</form>
</div>
</body>
</ht>

注释:

居中:

<div align="center">

</div>

跳转:

<form name="form" method="post" action="searchmax.jsp">
<input type="submit" value="查询活动信息"">
</form>

只需要修改action="searchmax.jsp"中的双引号中就可以,跳转到哪一个jsp就输入那一个jsp。<input type="submit" value="查询活动信息"">,双引号中写你的按钮名称,写什么显示什么。

截屏:(因为建民老师要求先查再删再改,所以我删除修改跳转界面在查询后)

 

然后你点哪一个按钮就跳转到哪一个按钮的jsp界面中,点击发布活动信息,就是添加,跳转到add.jsp中,以下为add.jsp代码,

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加</title>
</head>
<body>

//注释:jsp中注释不是这个,如果复制就把这个去掉,这样写主要是为了好看,以下的代码是我一开始不理解的一点,其实这就是Java代码,<%  这里面是java代码%>,就是通过这一个代码,来实现后面添加成功,修改成功,删除成功以及失败的提示。第一次进入这个界面,没有值对message赋值,所以if条件不满足,运行下面jsp代码创建,之后运行完成后,会在返回message到jsp界面,此时message有值,进行if中的语句,进行完就直接结束。下面的语句就是这个功能,知道怎么用就可以,具体原理不知道//
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){

%>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %>

//以下是我第二个迷惑的点,下面第一句就是就是将你在屏幕上的输入的东西传到servlet中,对method进行赋值,这个是add,进入servlet,if语句进行字符串判断来进入到Servlet的add方法。(这里补一下所有写这个功能的思路,贯穿全题我觉得,首先,进入screen界面,点击进入add界面(以add为例),进入servlet中,通过servlet进入对应servcie的add方法,在通过service进入Dao中的service方法,进行对数据库操作,后返回一个值到service中,返回到servlet中,返回到jsp中,这里if就可以运行了//
<form name="form" action="Servlet?method=add" method="post" onsubmit="return check()">
<table align="center" border="1" width="500">
<tr>
<td>1.活动主题: </td>
<td>
<label>
<input type="text" name="zhuti" />
</label>
</td>
</tr>
<tr>
<td>2.活动目的: </td>
<td>
<label>
<input type="text" name="mudi" />
</label>
</td>
</tr>
<tr>
<td>3.活动类型: </td>
<td>
<label>
<input type="radio" name="leixing" value="社团竞赛" > 社团竞赛
<input type="radio" name="leixing" value="野外采风" >野外采风
<input type="radio" name="leixing" value="校内集会" > 校内集会
<input type="radio" name="leixing" value="社团纳新" >社团纳新
</label>
</td>
</tr>
<tr>
<td>4.活动时间: </td>
<td>
<label>
<input type="text" name="shijian" />
</label>
</td>
</tr>
<tr>
<td>5.活动地点: </td>
<td>
<label>
<input type="text" name="didian" />
</label>
</td>
</tr>
<tr>
<td>6.活动对象: </td>
<td>
<label>
<input type="checkbox" name="duixiang1" value="社团人员" />社团人员
<input type="checkbox" name="duixiang2" value="全体学生" />全体学生
</label>
</td>
</tr>
<tr>
<td>7.活动内容: </td>
<td>
<label>
<input type="text" name="neirong" />
</label>
</td>
</tr>
<tr>
<td>8.活动安排: </td>
<td>
<label>
<input type="text" name="anpai" />
</label>
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="提交" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</body>
</html>

//以上为jsp的基本画表语句。

以下为截屏:

 

以下为修改和删除,查询jsp代码

修改update.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>修改界面</title>
</head>
<body>
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){

%>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %>
<form name="form1" action="Servlet?method=update" method="post" onsubmit="return check()">
<table align="center" border="1" width="500">
<tr>
<td>1.活动主题: </td>
<td>
<label>
<input type="text" name="zhuti" />
</label>
</td>
</tr>
<tr>
<td>2.活动目的: </td>
<td>
<label>
<input type="text" name="mudi" />
</label>
</td>
</tr>
<tr>
<td>3.活动类型: </td>
<td>
<label>
<input type="radio" name="leixing" value="社团竞赛" > 社团竞赛
<input type="radio" name="leixing" value="野外采风" >野外采风
<input type="radio" name="leixing" value="校内集会" > 校内集会
<input type="radio" name="leixing" value="社团纳新" >社团纳新
</label>
</td>
</tr>
<tr>
<td>4.活动时间: </td>
<td>
<label>
<input type="text" name="shijian" />
</label>
</td>
</tr>
<tr>
<td>5.活动地点: </td>
<td>
<label>
<input type="text" name="didian" />
</label>
</td>
</tr>
<tr>
<td>6.活动对象: </td>
<td>
<label>
<input type="checkbox" name="duixiang1" value="社团人员" />社团人员
<input type="checkbox" name="duixiang2" value="全体学生" />全体学生
</label>
</td>
</tr>
<tr>
<td>7.活动内容: </td>
<td>
<label>
<input type="text" name="neirong" />
</label>
</td>
</tr>
<tr>
<td>8.活动安排: </td>
<td>
<label>
<input type="text" name="anpai" />
</label>
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="修改" />
<input type="reset" value="重置" />
</td>
</tr>
</table>

</body>
</html>

截屏:

 

这是最后返回的,就是一开始<%%>的功能,add.jsp没有实现因为有老师安排跳转到浏览界面,修改和删除就直接返回到自己的jsp中了

 

删除 delete和修改类似,就直接给代码了,后面还有很多,就直接跳过了

delete.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>删除界面</title>
</head>
<body>
<div align="center">
<form name="form" method="post" action="Screen.jsp">
<input type="submit" value="返回主页">
</form>
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){

%>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %>
<form action="Servlet?method=delete" method="post" onsubmit="return check()">
请重新输入删除的主题
<input type="text" name="zhuti" />
<input type="submit" value="删除" />
</body>
</html>

 查询界面:

这是我的查询界面,老师安排的的四个按钮中随便输入几个都可以查找,若是一对一的查找,就更加简单,可以看19级学长的代码(其实在这里没区别,就是最后的Dao包中有点区别)。

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>查询</title>
</head>
<body>
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){

%>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %>
<form name="form" action="Servlet?method=search" method="post" onsubmit="return check()">
<table align="center" border="1" width="500">
<tr>
<td>1.活动主题: </td>
<td>
<label>
<input type="text" name="zhuti" />
</label>
</td>
</tr>
<tr>
<td>2.活动时间: </td>
<td>
<label>
<input type="text" name="shijian" />
</label>
</td>
</tr>
<tr>
<td>3.活动类型: </td>
<td>
<label>
<input type="text" name="leixing" />
</label>
</td>
</tr>
<tr>
<td>4.活动对象: </td>
<td>
<label>
<input type="text" name="duixiang" />
</label>
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="查询" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</body>
</html>

截图:

 

ok,基本功能的界面都完成了。其实,一开始不应该先写这个,我这样写因为很直观,方便理解吧。

一个这样的题要有若干的jsp和Dao包,Bean包,Util包,servlet,service包。和我之前写的一样,流程就是jsp->servlet->service->Dao->service->servlet->jsp这条线,我是这样理解的,Bean包和Util包来提供环境。

Bean包,数据库中元素的getset.

代码如下:

package Bean;

public class Bean1 {
private String zhuti;
private String mudi;
private String leixing;
private String shijian;
private String didian;
private String duixiang;
private String neirong;
private String anpai;
public String getZhuti() {
return zhuti;
}
public void setZhuti(String zhuti) {
this.zhuti = zhuti;
}
public String getMudi() {
return mudi;
}
public void setMudi(String mudi) {
this.mudi = mudi;
}
public String getLeixing() {
return leixing;
}
public void setLeixing(String leixing) {
this.leixing = leixing;
}
public String getShijian() {
return shijian;
}
public void setShijian(String shijian) {
this.shijian = shijian;
}
public String getDidian() {
return didian;
}
public void setDidian(String didian) {
this.didian = didian;
}
public String getDuixiang() {
return duixiang;
}
public void setDuixiang(String duixiang) {
this.duixiang = duixiang;
}
public String getNeirong() {
return neirong;
}
public void setNeirong(String neirong) {
this.neirong = neirong;
}
public String getAnpai() {
return anpai;
}
public void setAnpai(String anpai) {
this.anpai = anpai;
}
public Bean1(String zhuti,String mudi,String leixing,String shijian,String didian,String duixiang,String neirong,String anpai)
{
this.zhuti = zhuti;
this.mudi = mudi;
this.leixing = leixing;
this.shijian = shijian;
this.didian = didian;
this.duixiang = duixiang;
this.neirong = neirong;
this.anpai = anpai;
}

}

(这个很好理解)

Util包:为了减少代码的复用,是减少连接数据库的一些代码,来辅助Dao包。

以下为代码:

package Util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Util1 {

static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/shetuan?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";

//这里数据库要改成自己的(shetuan),包括下面的密码
static final String USER = "root";
static final String PASS = "123456";
public static Connection getConn () {   //连接数据库
Connection conn = null;
try {
Class.forName(JDBC_DRIVER);
System.out.println("连接数据库...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
//statement
public static void close (Statement state, Connection conn) {  

if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close (ResultSet rs, Statement state, Connection conn) {  //关闭
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

}

下面是servlet的包(重点,桥梁作用)

package servlet;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Bean.Bean1;
import service.Service;

/**
* Servlet implementation class Servlet
*/
@WebServlet("/Servlet")
public class Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
Service service = new Service();

//方便调用Service里面的方法,因为里面的方法我没定义为static,也灭试过。
/**
* @see HttpServlet#HttpServlet()
*/
public Servlet() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/

//以下就是传入的method来进行比较,进入具体的servlet的私有方法(这也是为什么要用servlet而不直接用jsp来实现,私有方法安全)
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
req.setCharacterEncoding("utf-8");
String method = req.getParameter("method");
if ("add".equals(method)) {
add(req, resp);//进入servlet的私有方法,看下面
}
else if ("search".equals(method)) {
search(req, resp);//同上,具体看代码
}
else if ("delete".equals(method)) {
delete(req, resp);
}
else if ("update".equals(method)) {
update(req, resp);
}
}
private void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
String zhuti = req.getParameter("zhuti");
String mudi = req.getParameter("mudi");
String leixing = req.getParameter("leixing");
String shijian = req.getParameter("shijian");
String didian = req.getParameter("didian");
String duixiang1 = req.getParameter("duixiang1");
String duixiang2 = req.getParameter("duixiang2");
String neirong = req.getParameter("neirong");
String anpai = req.getParameter("anpai");
String duixiang=null;
if(duixiang1==null&&duixiang2!=null)
{
duixiang=duixiang2;
}
if(duixiang1!=null&&duixiang2!=null)
{
duixiang=duixiang1+duixiang2;
}
if(duixiang1!=null&&duixiang2==null)
{
duixiang=duixiang1;
}
Bean1 bean=new Bean1(zhuti,mudi,leixing,shijian,didian,duixiang,neirong,anpai);
int a=service.update(bean);
if(a==1) {
req.setAttribute("message", "修改成功");
req.getRequestDispatcher("update.jsp").forward(req,resp);
}
if(a==0) {
req.setAttribute("message", "修改失败,请重新录入");
req.getRequestDispatcher("update.jsp").forward(req,resp);
}

}

private void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
String zhuti = req.getParameter("zhuti");
int i =service.delete(zhuti);
if(i>0) {
req.setAttribute("message", "删除成功!");
req.getRequestDispatcher("delete.jsp").forward(req,resp);
} else {
req.setAttribute("message", "删除失败!");
req.getRequestDispatcher("delete.jsp").forward(req,resp);
}



}

//和其他一样,但以为我的service方法就要四个String变量,传入了四个String变量

private void search(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
String zhuti = req.getParameter("zhuti");
String shijian = req.getParameter("shijian");
String leixing = req.getParameter("leixing");
String duixiang = req.getParameter("duixiang");
Bean1 bean =service.search(zhuti,shijian,leixing,duixiang);
System.out.println(bean);
if(bean == null) {
req.setAttribute("message", "查无此人!");
req.getRequestDispatcher("search.jsp").forward(req,resp);

//没查到返回圆界面
} else {
req.setAttribute("bean", bean);
req.getRequestDispatcher("search1.jsp").forward(req,resp);

//查到进入另一个定义的界面来对外输出
}

}

//来到这里,

private void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");//必写,防止乱码,
String zhuti = req.getParameter("zhuti");//接受jsp界面中name为zhuti的值,赋值给我设的变量主题zhuti
String mudi = req.getParameter("mudi");//同上
String leixing = req.getParameter("leixing");
String shijian = req.getParameter("shijian");
String didian = req.getParameter("didian");
String duixiang1 = req.getParameter("duixiang1");
String duixiang2 = req.getParameter("duixiang2");
String neirong = req.getParameter("neirong");
String anpai = req.getParameter("anpai");
String duixiang=null;//我这样写因为这是复选框
if(duixiang1==null&&duixiang2!=null)
{
duixiang=duixiang2;
}
if(duixiang1!=null&&duixiang2!=null)
{
duixiang=duixiang1+duixiang2;
}
if(duixiang1!=null&&duixiang2==null)
{
duixiang=duixiang1;
}
Bean1 bean=new Bean1(zhuti,mudi,leixing,shijian,didian,duixiang,neirong,anpai);//对bean进行初始化,不要忘了在Bean中完善对应的初始化方法

int a=service.add(bean);//进入service方法
if(a==1) {
req.setAttribute("message", "添加成功");//这就是最后返回jsp中的message。
req.getRequestDispatcher("liulan.jsp").forward(req,resp);
}
if(a==0) {
req.setAttribute("message", "添加失败,请重新录入");
req.getRequestDispatcher("add.jsp").forward(req,resp);
}
if(a==2) {
req.setAttribute("message", "主题过长");
req.getRequestDispatcher("add.jsp").forward(req,resp);
}
if(a==3) {
req.setAttribute("message", "目的过长");
req.getRequestDispatcher("add.jsp").forward(req,resp);
}
if(a==4) {
req.setAttribute("message", "内容过长");
req.getRequestDispatcher("add.jsp").forward(req,resp);
}
if(a==5) {
req.setAttribute("message", "安排过长");
req.getRequestDispatcher("add.jsp").forward(req,resp);
}

}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/

//这个不用管,进入这个方法,会跳转到doget方法中,就是上面写来进行method方法判断的那个方法。
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

以下为service包,根据需要来实现具体返回值等等:

package service;
import Bean.Bean1;
import Dao.Dao1;
public class Service {
public int add(Bean1 bean)
{
String a=bean.getZhuti();
String b=bean.getMudi();
String c=bean.getNeirong();
String d=bean.getAnpai();
if(a.length()>20) return 2;
if(a.length()>50) return 3;
if(a.length()>500) return 4;
if(a.length()>500) return 5;
if(Dao1.add(bean)>0)
return 1;
else {
return 0;
}
}
public Bean1 search(String zhuti,String shijian,String leixing,String duixiang)
{
return Dao1.Search(zhuti,shijian,leixing,duixiang);
}
public int delete(String zhuti) {
if(Dao1.delete(zhuti)>0)
{
return 1;
}
return 0;
}
public int update(Bean1 bean) {
if(Dao1.update(bean)>0)
return 1;
else {
return 0;
}
}
}

以下为Dao包

package Dao;

import Bean.Bean1;
import Util.Util1;
import java.sql.*;
public class Dao1 {
//添加
public static int add(Bean1 bean)
{
String sql = "insert into huodong(zhuti,mudi,leixing,shijian,didian,duixiang,neirong,anpai) values('" +bean.getZhuti() + "','" + bean.getMudi() + "','" + bean.getLeixing() + "','" + bean.getShijian() + "','" + bean.getDidian()+ "','" + bean.getDuixiang()+ "','" + bean.getNeirong()+ "','" +bean.getAnpai()+"')";
Connection conn = Util1.getConn();
Statement state = null;
int count=0;
try {
state = conn.createStatement();
count = state.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭连接
Util1.close(state, conn);
}
return count;
}
public static Bean1 Search(String zhuti1,String shijian1,String leixing1,String duixiang1)
{
String sql = "select * from huodong where ";
if (zhuti1 != "") {
sql += "zhuti like '%" + zhuti1 + "%'";
}
else if (shijian1 != "") {
sql += "shijian like '%" + shijian1 + "%'";
}
else if (leixing1 != "") {
sql += "leixing like '%" + leixing1 + "%'";
}
else if (duixiang1 != "") {
sql += "duixiang like '%" + duixiang1 + "%'";
}
else
{
}
Connection conn = Util1.getConn();
Statement state = null;
ResultSet rs = null;
Bean1 tbean=null;
try {
state = conn.createStatement();
rs = state.executeQuery(sql);
while (rs.next()) {
String zhuti = rs.getString("zhuti");
String mudi = rs.getString("mudi");
String leixing = rs.getString("leixing");
String shijian = rs.getString("shijian");
String didian = rs.getString("didian");
String duixiang = rs.getString("duixiang");
String neirong = rs.getString("neirong");
String anpai = rs.getString("anpai");
tbean=new Bean1(zhuti,mudi,leixing,shijian,didian,duixiang,neirong,anpai);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
Util1.close(rs, state, conn);
}
return tbean;
}


public static int delete (String t) {
int count=0;
String sql = "delete from `huodong` where zhuti='" + t + "'";
System.out.println(sql);
Connection conn = Util1.getConn();
Statement state = null;
try {
state = conn.createStatement();
count = state.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
} finally {
Util1.close(state, conn);
}
return count;
}
public static int update(Bean1 bean) {
// TODO Auto-generated method stub
String sql = "update huodong set mudi='" + bean.getMudi() + "', leixing='" + bean.getLeixing() +"', shijian='" + bean.getShijian() +"', didian='" + bean.getDidian() +"', duixiang='" + bean.getDuixiang() +"', neirong='" + bean.getNeirong() + "', anpai='" + bean.getAnpai()
+ "' where zhuti='" + bean.getZhuti() + "'";
Connection conn = Util1.getConn();
Statement state = null;
int count=0;
try {
state = conn.createStatement();
count = state.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭连接
Util1.close(state, conn);
}
return count;
}

}

以上为service和dao包中的代码,太晚了,就这样,service中提供Dao包的桥梁,Dao来进行数据库操作。

结束了,然后其实浏览我没有写,因为我浏览的servelet还么实现,我就直接用jsp写了,这是代码,直接在这里面进行java代码编写<%%>中的

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="Bean.Bean1" %>
<%@ page import="Dao.Dao1" %>
<%@ page import="Util.Util1" %>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>社团活动浏览</title>
</head>
<body>
<div align="center">
<form name="form" method="post" action="Screen.jsp">
<input type="submit" value="返回主页">
</form>
<table align="center" border="1" width="500">
<tr>
<th>活动主题</th>
<th>活动目的</th>
<th>活动类型</th>
<th>活动时间</th>
<th>活动地点</th>
<th>对象</th>
<th>活动内容</th>
<th>活动安排</th>
</tr>
<%
String sql = "SELECT * FROM `huodong`";
Connection conn = Util1.getConn();
Statement state = null;
ResultSet rs = null;
Bean1 tbean=null;
try {
state = conn.createStatement();
rs = state.executeQuery(sql);
while (rs.next()) {
String zhuti = rs.getString("zhuti");
String mudi = rs.getString("mudi");
String leixing = rs.getString("leixing");
String shijian = rs.getString("shijian");
String didian = rs.getString("didian");
String duixiang = rs.getString("duixiang");
String neirong = rs.getString("neirong");
String anpai = rs.getString("anpai");
out.println("<tr>"+"<td>"+zhuti+"</td>");
out.println("<td>"+mudi+"</td>");
out.println("<td>"+leixing+"</td>");
out.println("<td>"+shijian+"</td>");
out.println("<td>"+didian+"</td>");
out.println("<td>"+duixiang+"</td>");
out.println("<td>"+neirong+"</td>");
out.println("<td>"+anpai+"</td>"+"</tr>");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
Util1.close(rs, state, conn);
}
%>

</body>
</html>

完了,表达能力不好,别怪。

以下为完整没注释的代码:

Bean:

package Bean;

public class Bean1 {
private String zhuti;
private String mudi;
private String leixing;
private String shijian;
private String didian;
private String duixiang;
private String neirong;
private String anpai;
public String getZhuti() {
return zhuti;
}
public void setZhuti(String zhuti) {
this.zhuti = zhuti;
}
public String getMudi() {
return mudi;
}
public void setMudi(String mudi) {
this.mudi = mudi;
}
public String getLeixing() {
return leixing;
}
public void setLeixing(String leixing) {
this.leixing = leixing;
}
public String getShijian() {
return shijian;
}
public void setShijian(String shijian) {
this.shijian = shijian;
}
public String getDidian() {
return didian;
}
public void setDidian(String didian) {
this.didian = didian;
}
public String getDuixiang() {
return duixiang;
}
public void setDuixiang(String duixiang) {
this.duixiang = duixiang;
}
public String getNeirong() {
return neirong;
}
public void setNeirong(String neirong) {
this.neirong = neirong;
}
public String getAnpai() {
return anpai;
}
public void setAnpai(String anpai) {
this.anpai = anpai;
}
public Bean1(String zhuti,String mudi,String leixing,String shijian,String didian,String duixiang,String neirong,String anpai)
{
this.zhuti = zhuti;
this.mudi = mudi;
this.leixing = leixing;
this.shijian = shijian;
this.didian = didian;
this.duixiang = duixiang;
this.neirong = neirong;
this.anpai = anpai;
}

}

Dao:

package Dao;

import Bean.Bean1;
import Util.Util1;
import java.sql.*;
public class Dao1 {
//添加
public static int add(Bean1 bean)
{
String sql = "insert into huodong(zhuti,mudi,leixing,shijian,didian,duixiang,neirong,anpai) values('" +bean.getZhuti() + "','" + bean.getMudi() + "','" + bean.getLeixing() + "','" + bean.getShijian() + "','" + bean.getDidian()+ "','" + bean.getDuixiang()+ "','" + bean.getNeirong()+ "','" +bean.getAnpai()+"')";
Connection conn = Util1.getConn();
Statement state = null;
int count=0;
try {
state = conn.createStatement();
count = state.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭连接
Util1.close(state, conn);
}
return count;
}

public static Bean1 Search(String zhuti1,String shijian1,String leixing1,String duixiang1)
{
String sql = "select * from huodong where ";
if (zhuti1 != "") {
sql += "zhuti like '%" + zhuti1 + "%'";
}
else if (shijian1 != "") {
sql += "shijian like '%" + shijian1 + "%'";
}
else if (leixing1 != "") {
sql += "leixing like '%" + leixing1 + "%'";
}
else if (duixiang1 != "") {
sql += "duixiang like '%" + duixiang1 + "%'";
}
else
{
}
Connection conn = Util1.getConn();
Statement state = null;
ResultSet rs = null;
Bean1 tbean=null;
try {
state = conn.createStatement();
rs = state.executeQuery(sql);
while (rs.next()) {
String zhuti = rs.getString("zhuti");
String mudi = rs.getString("mudi");
String leixing = rs.getString("leixing");
String shijian = rs.getString("shijian");
String didian = rs.getString("didian");
String duixiang = rs.getString("duixiang");
String neirong = rs.getString("neirong");
String anpai = rs.getString("anpai");
tbean=new Bean1(zhuti,mudi,leixing,shijian,didian,duixiang,neirong,anpai);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
Util1.close(rs, state, conn);
}
return tbean;
}
public static int delete (String t) {
int count=0;
String sql = "delete from `huodong` where zhuti='" + t + "'";
System.out.println(sql);
Connection conn = Util1.getConn();
Statement state = null;
try {
state = conn.createStatement();
count = state.executeUpdate(sql);
} catch (SQLException e) {
e.printStackTrace();
} finally {
Util1.close(state, conn);
}
return count;
}
public static int update(Bean1 bean) {
// TODO Auto-generated method stub
String sql = "update huodong set mudi='" + bean.getMudi() + "', leixing='" + bean.getLeixing() +"', shijian='" + bean.getShijian() +"', didian='" + bean.getDidian() +"', duixiang='" + bean.getDuixiang() +"', neirong='" + bean.getNeirong() + "', anpai='" + bean.getAnpai()
+ "' where zhuti='" + bean.getZhuti() + "'";
Connection conn = Util1.getConn();
Statement state = null;
int count=0;
try {
state = conn.createStatement();
count = state.executeUpdate(sql);
} catch (Exception e) {
e.printStackTrace();
} finally {
//关闭连接
Util1.close(state, conn);
}
return count;
}

}

Util包:

package Util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Util1 {

static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";
static final String DB_URL = "jdbc:mysql://localhost:3306/shetuan?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC";
static final String USER = "root";
static final String PASS = "123456";
public static Connection getConn () {
Connection conn = null;
try {
Class.forName(JDBC_DRIVER);
System.out.println("连接数据库...");
conn = DriverManager.getConnection(DB_URL,USER,PASS);
} catch (Exception e) {
e.printStackTrace();
}
return conn;
}
//statement
public static void close (Statement state, Connection conn) {

if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
public static void close (ResultSet rs, Statement state, Connection conn) {
if (rs != null) {
try {
rs.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if (state != null) {
try {
state.close();
} catch (SQLException e) {
e.printStackTrace();
}
}

if (conn != null) {
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}

}

servlet包:

package servlet;

import java.io.IOException;
import java.io.UnsupportedEncodingException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import Bean.Bean1;
import service.Service;

/**
* Servlet implementation class Servlet
*/
@WebServlet("/Servlet")
public class Servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
Service service = new Service();
/**
* @see HttpServlet#HttpServlet()
*/
public Servlet() {
super();
// TODO Auto-generated constructor stub
}

/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
*/
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
req.setCharacterEncoding("utf-8");
String method = req.getParameter("method");
if ("add".equals(method)) {
add(req, resp);
}
else if ("search".equals(method)) {
search(req, resp);
}
else if ("delete".equals(method)) {
delete(req, resp);
}
else if ("update".equals(method)) {
update(req, resp);
}
}
private void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
String zhuti = req.getParameter("zhuti");
String mudi = req.getParameter("mudi");
String leixing = req.getParameter("leixing");
String shijian = req.getParameter("shijian");
String didian = req.getParameter("didian");
String duixiang1 = req.getParameter("duixiang1");
String duixiang2 = req.getParameter("duixiang2");
String neirong = req.getParameter("neirong");
String anpai = req.getParameter("anpai");
String duixiang=null;
if(duixiang1==null&&duixiang2!=null)
{
duixiang=duixiang2;
}
if(duixiang1!=null&&duixiang2!=null)
{
duixiang=duixiang1+duixiang2;
}
if(duixiang1!=null&&duixiang2==null)
{
duixiang=duixiang1;
}
Bean1 bean=new Bean1(zhuti,mudi,leixing,shijian,didian,duixiang,neirong,anpai);
int a=service.update(bean);
if(a==1) {
req.setAttribute("message", "修改成功");
req.getRequestDispatcher("update.jsp").forward(req,resp);
}
if(a==0) {
req.setAttribute("message", "修改失败,请重新录入");
req.getRequestDispatcher("update.jsp").forward(req,resp);
}

}

private void delete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
String zhuti = req.getParameter("zhuti");
int i =service.delete(zhuti);
if(i>0) {
req.setAttribute("message", "删除成功!");
req.getRequestDispatcher("delete.jsp").forward(req,resp);
} else {
req.setAttribute("message", "删除失败!");
req.getRequestDispatcher("delete.jsp").forward(req,resp);
}



}

private void search(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
String zhuti = req.getParameter("zhuti");
String shijian = req.getParameter("shijian");
String leixing = req.getParameter("leixing");
String duixiang = req.getParameter("duixiang");
Bean1 bean =service.search(zhuti,shijian,leixing,duixiang);
System.out.println(bean);
if(bean == null) {
req.setAttribute("message", "查无此人!");
req.getRequestDispatcher("search.jsp").forward(req,resp);
} else {
req.setAttribute("bean", bean);
req.getRequestDispatcher("search1.jsp").forward(req,resp);
}

}

private void add(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// TODO Auto-generated method stub
req.setCharacterEncoding("utf-8");
String zhuti = req.getParameter("zhuti");
String mudi = req.getParameter("mudi");
String leixing = req.getParameter("leixing");
String shijian = req.getParameter("shijian");
String didian = req.getParameter("didian");
String duixiang1 = req.getParameter("duixiang1");
String duixiang2 = req.getParameter("duixiang2");
String neirong = req.getParameter("neirong");
String anpai = req.getParameter("anpai");
String duixiang=null;
if(duixiang1==null&&duixiang2!=null)
{
duixiang=duixiang2;
}
if(duixiang1!=null&&duixiang2!=null)
{
duixiang=duixiang1+duixiang2;
}
if(duixiang1!=null&&duixiang2==null)
{
duixiang=duixiang1;
}
Bean1 bean=new Bean1(zhuti,mudi,leixing,shijian,didian,duixiang,neirong,anpai);
int a=service.add(bean);

if(a==1) {
req.setAttribute("message", "添加成功");
req.getRequestDispatcher("liulan.jsp").forward(req,resp);
}
if(a==0) {
req.setAttribute("message", "添加失败,请重新录入");
req.getRequestDispatcher("add.jsp").forward(req,resp);
}
if(a==2) {
req.setAttribute("message", "主题过长");
req.getRequestDispatcher("add.jsp").forward(req,resp);
}
if(a==3) {
req.setAttribute("message", "目的过长");
req.getRequestDispatcher("add.jsp").forward(req,resp);
}
if(a==4) {
req.setAttribute("message", "内容过长");
req.getRequestDispatcher("add.jsp").forward(req,resp);
}
if(a==5) {
req.setAttribute("message", "安排过长");
req.getRequestDispatcher("add.jsp").forward(req,resp);
}

}

/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}

}

service包:

package service;
import Bean.Bean1;
import Dao.Dao1;
public class Service {
public int add(Bean1 bean)
{
String a=bean.getZhuti();
String b=bean.getMudi();
String c=bean.getNeirong();
String d=bean.getAnpai();
if(a.length()>20) return 2;
if(a.length()>50) return 3;
if(a.length()>500) return 4;
if(a.length()>500) return 5;
if(Dao1.add(bean)>0)
return 1;
else {
return 0;
}
}
public Bean1 search(String zhuti,String shijian,String leixing,String duixiang)
{
return Dao1.Search(zhuti,shijian,leixing,duixiang);
}
public int delete(String zhuti) {
if(Dao1.delete(zhuti)>0)
{
return 1;
}
return 0;
}
public int update(Bean1 bean) {
if(Dao1.update(bean)>0)
return 1;
else {
return 0;
}
}
}

jsp界面:

Screen.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>主页</title>
</head>
<body>
<div align="center">
<form name="form" method="post" action="add.jsp">
<input type="submit" value="发布活动信息">
</form>
<form name="form" method="post" action="search.jsp">
<input type="submit" value="查询活动信息"">
</form>
<form name="form" method="post" action="liulan.jsp">
<input type="submit" value="浏览活动信息"">
</form>
</div>
</body>
</html>

add.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>添加</title>
</head>
<body>
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){

%>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %>
<form name="form1" action="Servlet?method=add" method="post" onsubmit="return check()">
<table align="center" border="1" width="500">
<tr>
<td>1.活动主题: </td>
<td>
<label>
<input type="text" name="zhuti" />
</label>
</td>
</tr>
<tr>
<td>2.活动目的: </td>
<td>
<label>
<input type="text" name="mudi" />
</label>
</td>
</tr>
<tr>
<td>3.活动类型: </td>
<td>
<label>
<input type="radio" name="leixing" value="社团竞赛" > 社团竞赛
<input type="radio" name="leixing" value="野外采风" >野外采风
<input type="radio" name="leixing" value="校内集会" > 校内集会
<input type="radio" name="leixing" value="社团纳新" >社团纳新
</label>
</td>
</tr>
<tr>
<td>4.活动时间: </td>
<td>
<label>
<input type="text" name="shijian" />
</label>
</td>
</tr>
<tr>
<td>5.活动地点: </td>
<td>
<label>
<input type="text" name="didian" />
</label>
</td>
</tr>
<tr>
<td>6.活动对象: </td>
<td>
<label>
<input type="checkbox" name="duixiang1" value="社团人员" />社团人员
<input type="checkbox" name="duixiang2" value="全体学生" />全体学生
</label>
</td>
</tr>
<tr>
<td>7.活动内容: </td>
<td>
<label>
<input type="text" name="neirong" />
</label>
</td>
</tr>
<tr>
<td>8.活动安排: </td>
<td>
<label>
<input type="text" name="anpai" />
</label>
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="提交" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</body>
</html>

update:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>修改界面</title>
</head>
<body>
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){

%>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %>
<form name="form1" action="Servlet?method=update" method="post" onsubmit="return check()">
<table align="center" border="1" width="500">
<tr>
<td>1.活动主题: </td>
<td>
<label>
<input type="text" name="zhuti" />
</label>
</td>
</tr>
<tr>
<td>2.活动目的: </td>
<td>
<label>
<input type="text" name="mudi" />
</label>
</td>
</tr>
<tr>
<td>3.活动类型: </td>
<td>
<label>
<input type="radio" name="leixing" value="社团竞赛" > 社团竞赛
<input type="radio" name="leixing" value="野外采风" >野外采风
<input type="radio" name="leixing" value="校内集会" > 校内集会
<input type="radio" name="leixing" value="社团纳新" >社团纳新
</label>
</td>
</tr>
<tr>
<td>4.活动时间: </td>
<td>
<label>
<input type="text" name="shijian" />
</label>
</td>
</tr>
<tr>
<td>5.活动地点: </td>
<td>
<label>
<input type="text" name="didian" />
</label>
</td>
</tr>
<tr>
<td>6.活动对象: </td>
<td>
<label>
<input type="checkbox" name="duixiang1" value="社团人员" />社团人员
<input type="checkbox" name="duixiang2" value="全体学生" />全体学生
</label>
</td>
</tr>
<tr>
<td>7.活动内容: </td>
<td>
<label>
<input type="text" name="neirong" />
</label>
</td>
</tr>
<tr>
<td>8.活动安排: </td>
<td>
<label>
<input type="text" name="anpai" />
</label>
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="修改" />
<input type="reset" value="重置" />
</td>
</tr>
</table>


</body>
</html>

delete.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>删除界面</title>
</head>
<body>
<div align="center">
<form name="form" method="post" action="Screen.jsp">
<input type="submit" value="返回主页">
</form>
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){

%>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %>
<form action="Servlet?method=delete" method="post" onsubmit="return check()">
请重新输入删除的主题
<input type="text" name="zhuti" />
<input type="submit" value="删除" />
</body>
</html>

search.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>查询</title>
</head>
<body>
<%
Object message = request.getAttribute("message");
if(message!=null && !"".equals(message)){

%>
<script type="text/javascript">
alert("<%=request.getAttribute("message")%>");
</script>
<%} %>
<form name="form" action="Servlet?method=search" method="post" onsubmit="return check()">
<table align="center" border="1" width="500">
<tr>
<td>1.活动主题: </td>
<td>
<label>
<input type="text" name="zhuti" />
</label>
</td>
</tr>
<tr>
<td>2.活动时间: </td>
<td>
<label>
<input type="text" name="shijian" />
</label>
</td>
</tr>
<tr>
<td>3.活动类型: </td>
<td>
<label>
<input type="text" name="leixing" />
</label>
</td>
</tr>
<tr>
<td>4.活动对象: </td>
<td>
<label>
<input type="text" name="duixiang" />
</label>
</td>
</tr>
<tr align="center">
<td colspan="2">
<input type="submit" value="查询" />
<input type="reset" value="重置" />
</td>
</tr>
</table>
</body>
</html>

search1.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>查询结果</title>
</head>
<body>
<table align="center" border="1" width="500">
<tr>
<td>1.主题: </td>
<td>
<label>
${bean.zhuti}

//在插一个注释,前面忘写这个jsp了,这个就是向屏幕输出的语句,${bean.对应的元素}。我弄了很长时间,结果这么简单。
</label>
</td>
</tr>
<tr>
<td>2.目的: </td>
<td>
<label>
${bean.mudi}
</label>
</td>
</tr>
<tr>
<td>3.类型: </td>
<td>
<label>
${bean.leixing}
</label>
</td>
</tr>
<tr>
<td>4.时间: </td>
<td>
<label>
${bean.shijian}
</label>
</td>
</tr>
<tr>
<td>5.地点: </td>
<td>
<label>
${bean.didian}
</label>
</td>
</tr>
<tr>
<td>6.对象: </td>
<td>
<label>
${bean.duixiang}
</label>
</td>
</tr>
<tr>
<td>7.内容: </td>
<td>
<label>
${bean.neirong}
</label>
</td>
</tr>
<tr>
<td>8.安排: </td>
<td>
<label>
${bean.anpai}
</label>
</td>
</tr>
<tr>
<td>
<label>

<form name="form" method="post" action="delete.jsp">
<input type="submit" value="删除">
</form>
<form name="form" method="post" action="update.jsp">
<input type="submit" value="修改">
</form>
</label>
</td>
</tr>
</table>

liulan.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@ page import="Bean.Bean1" %>
<%@ page import="Dao.Dao1" %>
<%@ page import="Util.Util1" %>
<%@ page import="java.sql.*" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>社团活动浏览</title>
</head>
<body>
<div align="center">
<form name="form" method="post" action="Screen.jsp">
<input type="submit" value="返回主页">
</form>
<table align="center" border="1" width="500">
<tr>
<th>活动主题</th>
<th>活动目的</th>
<th>活动类型</th>
<th>活动时间</th>
<th>活动地点</th>
<th>对象</th>
<th>活动内容</th>
<th>活动安排</th>
</tr>
<%
String sql = "SELECT * FROM `huodong`";
Connection conn = Util1.getConn();
Statement state = null;
ResultSet rs = null;
Bean1 tbean=null;
try {
state = conn.createStatement();
rs = state.executeQuery(sql);
while (rs.next()) {
String zhuti = rs.getString("zhuti");
String mudi = rs.getString("mudi");
String leixing = rs.getString("leixing");
String shijian = rs.getString("shijian");
String didian = rs.getString("didian");
String duixiang = rs.getString("duixiang");
String neirong = rs.getString("neirong");
String anpai = rs.getString("anpai");
out.println("<tr>"+"<td>"+zhuti+"</td>");
out.println("<td>"+mudi+"</td>");
out.println("<td>"+leixing+"</td>");
out.println("<td>"+shijian+"</td>");
out.println("<td>"+didian+"</td>");
out.println("<td>"+duixiang+"</td>");
out.println("<td>"+neirong+"</td>");
out.println("<td>"+anpai+"</td>"+"</tr>");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
Util1.close(rs, state, conn);
}
%>

 

</body>
</html>

 

posted on   实名吓我一跳  阅读(151)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统
 
点击右上角即可分享
微信分享提示