南京企业网站做优化wordpress获取文章地址

pingmian/2026/1/22 10:34:59/文章来源:
南京企业网站做优化,wordpress获取文章地址,ui设计培训班有用吗,在线网页代理访问文章目录 一、为什么使用token口令二、登录注册功能2.1 登录表单提交后端代码#xff1a; 2.2 根据token获取完整用户信息代码实现#xff1a; 2.3 注册时用户名占用校验代码实现#xff1a; 2.4 注册表单提交代码实现#xff1a; 三、头条首页功能3.1 查询所有头条分类3.2… 文章目录 一、为什么使用token口令二、登录注册功能2.1 登录表单提交后端代码 2.2 根据token获取完整用户信息代码实现 2.3 注册时用户名占用校验代码实现 2.4 注册表单提交代码实现 三、头条首页功能3.1 查询所有头条分类3.2 分页带条件查询所有头条代码实现 3.3 查看头条详情代码实现 四、头条发布修改和删除4.1 登录校验代码实现 4.2 提交发布头条(新增代码实现 4.3 修改头条回显4.4 保存修改代码实现 4.5 删除头条 总结2.1 登录表单提交 一、为什么使用token口令 为什么使用 token 口令 而不使用 cookie和session cookie和session 对于高并发项目不合适 token: 二、登录注册功能 2.1 登录表单提交 需求描述: 输入 用户名 密码 验证登录根据输入的用户名 和 密码 提示不同的响应信息 URI user/login 请求方式 POST 请求参数: { username:dougwake, //用户名 userPwd:123456 //明文密码 } 响应示例: 登录成功 用户名输入有误 密码错误 后端代码 2.1.1 Controller 层 package com.doug.headline.controller;import com.doug.headline.common.Result; import com.doug.headline.common.ResultCodeEnum; import com.doug.headline.dao.NewsUserDao; import com.doug.headline.pojo.NewsUser; import com.doug.headline.service.NewsUserService; import com.doug.headline.service.impl.NewsUserServiceImpl; import com.doug.headline.util.JwtHelper; import com.doug.headline.util.MD5Util; import com.doug.headline.util.WebUtil; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse;import java.io.IOException; import java.util.HashMap; import java.util.Map;WebServlet(/user/*) public class NewsUserController extends BaseController {private NewsUserService newsUserService new NewsUserServiceImpl();/*** 接收前端请求参数 进行登录校验** param req* param resp* throws ServletException* throws IOException*/protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 接收前端传递过来的JSON串 即请求参数NewsUser newsUser WebUtil.readJson(req, NewsUser.class);// 调用业务层代码 查找用户名是否存在NewsUser loginNewsUser newsUserService.findByUsername(newsUser.getUsername());Result result null;if (null ! loginNewsUser) {// 用户名存在 - 进一步判断 密码是否正确先将明文密码转成MD5 再与已存密码对比if (loginNewsUser.getUserPwd().equals(MD5Util.encrypt(newsUser.getUserPwd()))) {// 响应结果 是键值对形式 所以用mapMapString, Object data new HashMap();// 创建token String token JwtHelper.createToken(loginNewsUser.getUid().longValue());data.put(token, token);result Result.ok(data);} else {// 密码有误result Result.build(null, ResultCodeEnum.PASSWORD_ERROR);}} else {// 查找为空 用户名不存在 返回自定义用户名错误业务码result Result.build(null, ResultCodeEnum.USERNAME_ERROR);}// 响应结果WebUtil.writeJson(resp, result);} }2.1.2 service public interface NewsUserService {/*** 根据用户名获得查询的用户信息* param username 要查找的用户名* return 如果找到返回NewsUser对象,找不到返回null*/NewsUser findByUsername(String username); }public class NewsUserServiceImpl implements NewsUserService {private NewsUserDao newsUserDao new NewsUserDaoImpl();Overridepublic NewsUser findByUsername(String username) {return newsUserDao.findByUsername(username);} }2.1.3 dao public interface NewsUserDao {/*** 根据用户名获得查询的用户信息* param username 要查找的用户名* return 如果找到返回NewsUser对象,找不到返回null*/NewsUser findByUsername(String username); }public class NewsUserDaoImpl extends BaseDao implements NewsUserDao {Overridepublic NewsUser findByUsername(String username) {String sql selectuid,username,user_pwd userPwd,nick_name nickNamefromnews_userwhereusername ?;;ListNewsUser newsUserList baseQuery(NewsUser.class, sql, username);// 如果找到,返回集合中的第一个数据(其实就一个)if(null ! newsUserList newsUserList.size() 0){return newsUserList.get(0);}return null;} }2.2 根据token获取完整用户信息 需求描述: 客户端发送请求,提交token请求头,后端根据token请求头获取登录用户的详细信息并响应给客户端进行存储 URI: user/getUserInfo 请求方式: GET 请求头 token: ... 响应示例 成功获取 获取失败 代码实现 2.2.1 Controller private NewsUserService newsUserService new NewsUserServiceImpl();/*** 接收token,根据token查询完整用户信息* param req* param resp* throws ServletException* throws IOException*/protected void getUserInfo(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String token req.getHeader(token);Result result Result.build(null, ResultCodeEnum.NOTLOGIN);// token 存在if(null ! token){// token 没有到期if(!JwtHelper.isExpiration(token)){Integer uid JwtHelper.getUserId(token).intValue();// 通过token的uid 找对象NewsUser newsUser newsUserService.findByUid(uid);newsUser.setUserPwd();HashMapString, Object data new HashMap();data.put(loginUser,newsUser);result Result.ok(data);}}WebUtil.writeJson(resp,result);}2.2.2 Service /*** 根据用户id查询用户信息* param uid 要查询的用户id* return 找到返回NewsUser对象,找不到返回null*/NewsUser findByUid(Integer uid);Overridepublic NewsUser findByUid(Integer uid) {return newsUserDao.finByUid(uid);}2.2.3 Dao NewsUser finByUid(Integer uid);Overridepublic NewsUser finByUid(Integer uid) {String sql selectuid,username,user_pwd userPwd,nick_name nickNamefromnews_userwhereuid ?;;ListNewsUser newsUserList baseQuery(NewsUser.class, sql, uid);// 如果找到,返回集合中的第一个数据(其实就一个)return null ! newsUserList newsUserList.size() 0 ? newsUserList.get(0):null;}2.3 注册时用户名占用校验 用户在注册时输入用户名时,立刻将用户名发送给后端,后端根据用户名查询用户名是否可用并做出响应 URI user/checkUserName 请求方式: POST 请求参数: usernameDougWake 响应示例: 用户名校验通过 用户名被占用 代码实现 /*** 注册时校验用户名是否占用* param req* param resp* throws ServletException* throws IOException*/protected void checkUserName(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String username req.getParameter(username);NewsUser newsUser newsUserService.findByUsername(username);Result result null;if(null newsUser){result Result.ok(null);}else{result Result.build(null,ResultCodeEnum.USERNAME_USED);}WebUtil.writeJson(resp,result);}2.4 注册表单提交 客户端将新用户信息发送给服务端,服务端将新用户存入数据库,存入之前做用户名是否被占用校验,校验通过响应成功提示,否则响应失败提示 URI : user/regist 请求方式: POST 请求参数 : {username:GavinGroves,userPwd:0123456,nickName:加文 }响应示例: 注册成功 用户名占用第二次注册 代码实现 2.4.1 Controller /*** 用户注册* param req* param resp* throws ServletException* throws IOException*/protected void regist(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {NewsUser newsUser WebUtil.readJson(req, NewsUser.class);NewsUser usedUser newsUserService.findByUsername(newsUser.getUsername());Result result null;if(null ! usedUser){result Result.build(null,ResultCodeEnum.USERNAME_USED);}else{newsUserService.registUser(newsUser);result Result.ok(null);}WebUtil.writeJson(resp,result);}2.4.2 Service /*** 注册用户信息,注册成功返回大于0的整数,失败返回0* param newsUser 要添加的新对象* return*/int registUser(NewsUser newsUser);Overridepublic int registUser(NewsUser newsUser) {// 密码明文转密文newsUser.setUserPwd(MD5Util.encrypt(newsUser.getUserPwd()));return newsUserDao.insertNewsUser(newsUser);}2.4.3 Dao /*** 将用户信息存入数据库* param newsUser 插入新的用户对象* return*/int insertNewsUser(NewsUser newsUser);public int insertNewsUser(NewsUser newsUser) {String sql insert into news_user values(DEFAULT,?,?,?);return baseUpdate(sql, newsUser.getUsername(), newsUser.getUserPwd(), newsUser.getNickName());}三、头条首页功能 3.1 查询所有头条分类 进入新闻首页,查询所有分类并动态展示新闻类别栏位 URI: portal/findAllTypes 请求方式 GET 响应示例: {code: 200,message: success,data: [{tid: 1,tname: 新闻},{tid: 2,tname: 体育},{tid: 3,tname: 娱乐},{tid: 4,tname: 科技},{tid: 5,tname: 其他}] }Controller package com.doug.headline.controller;import com.doug.headline.common.Result; import com.doug.headline.pojo.NewsType; import com.doug.headline.service.NewsTypeService; import com.doug.headline.service.impl.NewsTypeServiceImpl; import com.doug.headline.util.WebUtil; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse;import java.io.IOException; import java.util.List;/*** Author: Gavin* Date: 2024-02-02 17:10* Description: 门户 控制器 即 当用户没有登录时候 所看到的页面首页*/ WebServlet(/portal/*) public class PortalController extends BaseController {private NewsTypeService typeService new NewsTypeServiceImpl();/*** 查询所有头条类型 业务接口实现** param req* param resp* throws ServletException* throws IOException*/protected void findAllTypes(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {ListNewsType newsTypeList typeService.findAllTypes();WebUtil.writeJson(resp,Result.ok(newsTypeList));} }service public interface NewsTypeService {/*** 查询全部新闻类型* return 新闻类型数据*/ListNewsType findAllTypes(); }public class NewsTypeServiceImpl implements NewsTypeService {private NewsTypeDao typeDao new NewsTypeDaoImpl();Overridepublic ListNewsType findAllTypes() {return typeDao.findAllTypes();} }dao public interface NewsTypeDao {/*** 查询全部新闻类型* return 新闻类型数据*/ListNewsType findAllTypes(); } public class NewsTypeDaoImpl extends BaseDao implements NewsTypeDao {Overridepublic ListNewsType findAllTypes() {String sql select tid,tname from news_type;return baseQuery(NewsType.class,sql);} }3.2 分页带条件查询所有头条 客户端向服务端发送查询关键字,新闻类别,页码数,页大小服务端根据条件搜索分页信息,返回含页码数,页大小,总页数,总记录数,当前页数据等信息,并根据时间降序,浏览量降序排序 uri: portal/findNewsPage 请求方式POST 请求参数: {keyWords:马斯克, // 搜索标题关键字type:0, // 新闻类型pageNum:1, // 页码数(当前页码)pageSize:10 // 页大小(一页10条显示数据 }响应示例: {code:200,message:successdata:{pageInfo:{pageData:[ // 本页的数据{hid:1, // 新闻id title:尚硅谷宣布 ... ..., // 新闻标题type:1, // 新闻所属类别编号pageViews:40, // 新闻浏览量pastHours:3 , // 发布时间已过小时数publisher:1 // 发布用户ID},{hid:1, // 新闻id title:尚硅谷宣布 ... ..., // 新闻标题type:1, // 新闻所属类别编号pageViews:40, // 新闻浏览量pastHours:3, // 发布时间已过小时数publisher:1 // 发布用户ID},{hid:1, // 新闻id title:尚硅谷宣布 ... ..., // 新闻标题type:1, // 新闻所属类别编号pageViews:40, // 新闻浏览量pastHours:3, // 发布时间已过小时数publisher:1 // 发布用户ID}],pageNum:1, //页码数pageSize:10, // 页大小totalPage:20, // 总页数totalSize:200 // 总记录数}} }代码实现 3.2.1 controller WebServlet(/portal/*) public class PortalController extends BaseController {private NewsTypeService typeService new NewsTypeServiceImpl();private NewsHeadlineService headlineService new NewsHeadlineServiceImpl();/*** 分页带条件查询新闻* param req* param resp* throws ServletException* throws IOException*/protected void findNewsPage(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {HeadlineQueryVo headlineQueryVo WebUtil.readJson(req, HeadlineQueryVo.class);//查询分页五项数据MapString,Object pageInfo headlineService.findPage(headlineQueryVo);//将分页五项数据放入MapString, Object pageInfoMap new HashMap();pageInfoMap.put(pageInfo,pageInfo);WebUtil.writeJson(resp,Result.ok(pageInfoMap));}3.2.2 service public interface NewsHeadlineService {/*** 分页查询头条新闻方法* param headlineQueryVo* return*/MapString, Object findPage(HeadlineQueryVo headlineQueryVo); } public class NewsHeadlineServiceImpl implements NewsHeadlineService {private NewsHeadLineDao headLineDao new NewsHeadlineDaoImpl();Overridepublic MapString, Object findPage(HeadlineQueryVo headlineQueryVo) {// 准备一个map用于装分页的五项数据MapString, Object pageInfo new HashMap();// 分页查询本页数据新闻ListHeadlinePageVo pageData headLineDao.findPageList(headlineQueryVo);// 当前 页码数int pageNum headlineQueryVo.getPageNum();// 页大小int pageSize headlineQueryVo.getPageSize();// 总记录数int totalSize headLineDao.findPageCount(headlineQueryVo);// 总页数(多出一条数据的情况 1页上去int totalPage totalSize % pageSize 0 ? totalSize / pageSize : totalSize / pageSize 1;pageInfo.put(pageData,pageData);pageInfo.put(pageNum,pageNum);pageInfo.put(pageSize,pageSize);pageInfo.put(totalPage,totalPage);pageInfo.put(totalSize,totalSize);return pageInfo;} }3.2.3 dao public interface NewsHeadLineDao {/*** 根据查询条件,查询当前页数据* param headlineQueryVo* return*/ListHeadlinePageVo findPageList(HeadlineQueryVo headlineQueryVo);/*** 根据查询条件,查询满足条件的记录数* param headlineQueryVo* return*/int findPageCount(HeadlineQueryVo headlineQueryVo);}package com.doug.headline.dao.impl;import com.doug.headline.dao.BaseDao; import com.doug.headline.dao.NewsHeadLineDao; import com.doug.headline.pojo.vo.HeadlinePageVo; import com.doug.headline.pojo.vo.HeadlineQueryVo;import java.util.ArrayList; import java.util.LinkedList; import java.util.List;public class NewsHeadlineDaoImpl extends BaseDao implements NewsHeadLineDao {Overridepublic ListHeadlinePageVo findPageList(HeadlineQueryVo headlineQueryVo) {List params new ArrayList();String sql selecthid,title,type,page_views pageViews,TIMESTAMPDIFF(HOUR,create_time,now()) pastHours,publisherfromnews_headlinewhereis_deleted 0;if(headlineQueryVo.getType() ! 0){sql sql.concat( and type ? );params.add(headlineQueryVo.getType());}if(headlineQueryVo.getKeyWords() ! null !headlineQueryVo.getKeyWords().equals()){sql sql.concat( and title like ? );params.add(%headlineQueryVo.getKeyWords()%);}// 按时间升序 浏览量降序sql sql.concat( order by pastHours ASC , page_views DESC );// 分页显示sql sql.concat( limit ?,? );params.add((headlineQueryVo.getPageNum()-1)*headlineQueryVo.getPageSize());params.add(headlineQueryVo.getPageSize());return baseQuery(HeadlinePageVo.class,sql,params.toArray());}Overridepublic int findPageCount(HeadlineQueryVo headlineQueryVo) {// 拼接动态 SQL,拼接参数List args new LinkedList();String sql select count(1) from news_headline where is_deleted 0;StringBuilder sqlBuffer new StringBuilder(sql);String keyWords headlineQueryVo.getKeyWords();//判断并动态拼接条件if(null ! keyWords keyWords.length() 0){sqlBuffer.append( and title like ? );args.add(% keyWords %);}// 判断并动态拼接条件Integer type headlineQueryVo.getType();if(null ! type type!0){sqlBuffer.append( and type ? );args.add(type);}// 参数转数组Object[] argsArr args.toArray();System.out.println(sqlBuffer.toString());Long totalSize baseQueryObject(Long.class, sqlBuffer.toString(), argsArr);return totalSize.intValue();} }3.3 查看头条详情 用户点击查看全文时,向服务端发送新闻id后端根据新闻id查询完整新闻文章信息并返回后端要同时让新闻的浏览量1 URI : portal/showHeadlineDetail 请求方式 POST 请求参数hid 1 响应示例 {code:200,message:success,data:{headline:{hid:1, // 新闻id title:马斯克宣布 ... ..., // 新闻标题article:... ... // 新闻正文type:1, // 新闻所属类别编号typeName:科技, // 新闻所属类别pageViews:40, // 新闻浏览量pastHours:3 , // 发布时间已过小时数publisher:1 , // 发布用户IDauthor:张三 // 新闻作者}} }代码实现 3.3.1 controller /*** 查询单个新闻详情* param req* param resp* throws ServletException* throws IOException*/protected void showHeadlineDetail(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 获取要查询的详情新闻idInteger hid Integer.valueOf(req.getParameter(hid));// 封装data内容HashMapString, Object headlineInfo new HashMap();// 查询新闻详情的voHeadlineDetailVo headlineDetailVo headlineService.findHeadlineByHid(hid);Result result null;if(null ! headlineDetailVo){headlineInfo.put(headline,headlineDetailVo);result Result.ok(headlineInfo);}WebUtil.writeJson(resp,result);}3.3.2 service /*** 根据hid 查看单个新闻详情* param hid* return*/HeadlineDetailVo findHeadlineByHid(Integer hid);Overridepublic HeadlineDetailVo findHeadlineByHid(Integer hid) {// 修改新闻信息浏览量1headLineDao.increasePageViews(hid);// 查询新闻详情return headLineDao.findHeadlineInfoByHid(hid);}3.3.3 dao /*** 根据 hid 查看详细新闻* param hid 新闻对应ID* return*/HeadlineDetailVo findHeadlineInfoByHid(Integer hid);/*** 新闻浏览量1* param hid* return*/int increasePageViews(Integer hid);Overridepublic HeadlineDetailVo findHeadlineInfoByHid(Integer hid) {String sql selecth.hid,h.title,h.article,h.type,h.page_views as pageViews,TIMESTAMPDIFF(HOUR,create_time,now()) pastHours,h.publisher,t.tname as typeName,u.nick_name as authorfromnews_headline hleft joinnews_type tonh.type t.tidleft joinnews_user uonh.publisher u.uidwhereh.hid ?;ListHeadlineDetailVo headlineDetailVoList baseQuery(HeadlineDetailVo.class, sql, hid);if (null ! headlineDetailVoList headlineDetailVoList.size() 0) {return headlineDetailVoList.get(0);}return null;}Overridepublic int increasePageViews(Integer hid) {String sql update news_headline set page_views page_views 1 where hid ?;return baseUpdate(sql, hid);}四、头条发布修改和删除 4.1 登录校验 客户端在进入发布页前、发布新闻前、进入修改页前、修改前、删除新闻前先向服务端发送请求携带token请求头后端接收token请求头后,校验用户登录是否过期并做响应前端根据响应信息提示用户进入登录页还是进入正常业务页面 URI : user/checkLogin 请求 GET 请求头 token: … … 响应 登录未过期 {code:200,message:success,data:{} }登录已过期 {code:504,message:loginExpired,data:{} }代码实现 4.1.1 controller /*** 前端自行校验token登录是否过期* param req* param resp* throws ServletException* throws IOException*/protected void checkLogin(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {String token req.getHeader(token);Result result Result.build(null, ResultCodeEnum.NOTLOGIN);//token 不等于空 且 没有过期if(null ! token){if(!JwtHelper.isExpiration(token)){result Result.ok(null);}}WebUtil.writeJson(resp,result);}4.1.2 登录过滤器 /*** Author: Gavin* Date: 2024-02-07 21:58* Description: 过滤器自动校验请求是否过期(过滤所有/headline/*下的方法*/ WebFilter(/headline/*) public class LoginFilter implements Filter {Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {HttpServletRequest request (HttpServletRequest)servletRequest;String token request.getHeader(token);//boolean flag false;// token 不为空 且 没有过期//if(null ! token){// boolean expiration JwtHelper.isExpiration(token);// if(!expiration){// flag true;// }//}boolean flag null ! token (!JwtHelper.isExpiration(token));if(flag){//放行 请求响应filterChain.doFilter(servletRequest,servletResponse);}else{WebUtil.writeJson((HttpServletResponse) servletResponse, Result.build(null, ResultCodeEnum.NOTLOGIN));}} }4.1.3 web.xml中配置登录校验过滤器 !--登录校验过滤器--filterfilter-nameloginFilter/filter-namefilter-classcom.doug.headline.filters.LoginFilter/filter-class/filterfilter-mappingfilter-nameloginFilter/filter-nameurl-pattern/headline/*/url-pattern/filter-mapping4.2 提交发布头条(新增 用户在客户端输入发布的新闻信息完毕后发布前先请求后端的登录校验接口验证登录登录通过则提交新闻信息后端将新闻信息存入数据库 URI : headline/publish 请求方式 : POST 请求头 token: … … 请求参数 {title:道格维克 ... ..., // 文章标题article:... ..., // 文章内容type:1 // 文章类别 }响应示例 响应发布 {code:200,message:success,data:{} }失去登录状态发布失败 {code:504,message:loginExpired,data:{} }代码实现 4.2.1 controller package com.doug.headline.controller;import com.doug.headline.common.Result; import com.doug.headline.pojo.NewsHeadline; import com.doug.headline.service.NewsHeadlineService; import com.doug.headline.service.impl.NewsHeadlineServiceImpl; import com.doug.headline.util.JwtHelper; import com.doug.headline.util.WebUtil; import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse;import java.io.IOException;WebServlet(/headline/*) public class NewsHeadlineController extends BaseController {private NewsHeadlineService headlineService new NewsHeadlineServiceImpl();/*** 发布新闻** param req* param resp* throws ServletException* throws IOException*/protected void publish(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 读取新闻信息NewsHeadline newsHeadline WebUtil.readJson(req, NewsHeadline.class);// 通过token获取发布者IDString token req.getHeader(token);Long userId JwtHelper.getUserId(token);newsHeadline.setPublisher(userId.intValue());// 将新闻存入数据库headlineService.addNewsHeadline(newsHeadline);WebUtil.writeJson(resp, Result.ok(null));} }4.2.2 seriver /*** 新增头条新闻* param newsHeadline* return*/int addNewsHeadline(NewsHeadline newsHeadline);/*** 发布新闻** param req* param resp* throws ServletException* throws IOException*/protected void publish(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {// 读取新闻信息NewsHeadline newsHeadline WebUtil.readJson(req, NewsHeadline.class);// 通过token获取发布者IDString token req.getHeader(token);Long userId JwtHelper.getUserId(token);newsHeadline.setPublisher(userId.intValue());// 将新闻存入数据库headlineService.addNewsHeadline(newsHeadline);WebUtil.writeJson(resp, Result.ok(null));}4.2.3 dao /*** 增加新闻头条* param newsHeadline* return*/int addNewsHeadline(NewsHeadline newsHeadline);Overridepublic int addNewsHeadline(NewsHeadline newsHeadline) {String sql insert intonews_headlinevalues(DEFAULT,?,?,?,?,0,NOW(),NOW(),0) ;return baseUpdate(sql,newsHeadline.getTitle(),newsHeadline.getArticle(),newsHeadline.getType(),newsHeadline.getPublisher());}添加成功 4.3 修改头条回显 前端先调用登录校验接口,校验登录是否过期登录校验通过后 ,则根据新闻id查询新闻的完整信息并响应给前端 URI : headline/findHeadlineByHid 请求方式POST 请求参数hid1 响应实例 查询成功 {code:200,message:success,data:{headline:{hid:1,title:马斯克宣布,article:... ... ,type:2}} }4.3.1 controller /*** 修改新闻信息** param req* param resp* throws ServletException* throws IOException*/protected void findHeadlineByHid(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Integer hid Integer.valueOf(req.getParameter(hid));HeadlineDetailVo headlineByHid headlineService.findHeadlineByHid(hid);HashMapString, Object headlineMap new HashMap();Result result null;if(null ! headlineByHid){headlineMap.put(headline,headlineByHid);result Result.ok(headlineMap);}WebUtil.writeJson(resp,result);}4.4 保存修改 客户端将新闻信息修改后,提交前先请求登录校验接口校验登录状态登录校验通过则提交修改后的新闻信息,后端接收并更新进入数据库 URI:headline/update 请求方式post 请求参数 {hid:1,title:道格维克 ... ...,article:... ...,type:2 }响应实例 修改成功 {code:200,message:success,data:{} }修改失败 {code:504,message:loginExpired,data:{} }代码实现 4.4.1 controller /*** 修改新闻信息* param req* param resp* throws ServletException* throws IOException*/protected void update(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {NewsHeadline newsHeadline WebUtil.readJson(req, NewsHeadline.class);headlineService.updateHeadline(newsHeadline);WebUtil.writeJson(resp,Result.ok(null));}4.4.2 service /*** 修改新闻信息* param newsHeadline* return*/int updateHeadline(NewsHeadline newsHeadline);Overridepublic int updateHeadline(NewsHeadline newsHeadline) {return headLineDao.updateHeadlineInfo(newsHeadline);}4.4.3 dao /*** 修改新闻信息* param newsHeadline* return*/int updateHeadlineInfo(NewsHeadline newsHeadline);Overridepublic int updateHeadlineInfo(NewsHeadline newsHeadline) {String sql update news_headline set title ?,article ?,type ? ,update_time now() where hid ?;return baseUpdate(sql, newsHeadline.getTitle(),newsHeadline.getArticle(),newsHeadline.getType(),newsHeadline.getHid());}4.5 删除头条 将要删除的新闻id发送给服务端服务端校验登录是否过期,未过期则直接删除,过期则响应登录过期信息 URI : headline/removeByHid 请求方式POST 请求参数hid1 响应实例 删除成功 {code:200,message:success,data:{} }删除失败 {code:504,message:loginExpired,data:{}}controller: /*** 删除对应Hid的新闻* param req* param resp* throws ServletException* throws IOException*/protected void removeByHid(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {Integer hid Integer.parseInt(req.getParameter(hid));headlineService.removeByHid(hid);WebUtil.writeJson(resp,Result.ok(null));}service /*** 删除单个新闻* param hid 新闻hid* return*/int removeByHid(Integer hid);Overridepublic int removeByHid(Integer hid) {return headLineDao.removeByHid(hid);}dao /*** 删除对应hid的新闻* param hid* return*/int removeByHid(Integer hid);Overridepublic int removeByHid(Integer hid) {String sql update news_headline set is_deleted 1, update_time NOW() where hid ?;return baseUpdate(sql, hid);}总结 2.1 登录表单提交

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

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

相关文章

和林格尔网站制作第二次全国地名普查网站建设

目录 一.十进制和八进制区别 1、基数不同2、有效字符不同3、用途不同 二.十进制转八进制三.八进制转十进制四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.十进制和八进制区别 1、基数不同 十进制满10进1; 八进制满8进1&#x…

江门网站建设2345天气王

目录 第1关:行与缩进 第2关:标识符与保留字 第3关:注释 第4关:输入输出 如果对你有帮助的话,不妨点赞收藏关注评论走一波吧,爱你么么哒吗😘💖💖💖 第1关…

宝塔做网站安全吗上饶建网站公司

诸城市鑫淼环保小编带大家了解一下电镀污水处理设备主要特点及工艺流程 常见的一体化污水处理设备工艺有化学工艺、物理工艺、生物工艺和电化学法等。 电镀厂污水处工艺一: 化学工艺法,是指采用化学氧化还原反应和沉淀反应,将电镀废水中有毒有…

云盘做网站空间网站做的比较好的公司

C#判断回文字符串 题目描述 使用C#编写一个静态方法。该方法能够判断字符串是否是“回文”(即顺读和逆读相同的字符串)。 输入 一个字符串; 输出 如果是回文字符串,则输出“yes”,否则输出“no”; 样…

做百度网站优化多少钱ens域名注册

OCR的实现共分为两步,1是使用字符数据来训练OCR。2是使用OCR进行字符的识别。 训练分类器 训练分类器共分为4步: 1是使用阈值来分割字符区域; 2是调用append_ocr_trainf函数将字符加入训练集; 3是创建分类器; 4是…

python做网站点登入没反映动漫网站建设方案策划书

职业高中计算机专业测验试题编写的策略初探职业高中计算机专业测验试题编写的策略初探摘 要 教学检测既是检验教学成败的重要工具,又是改进其教学工作,提高教学质量的保证;计算机专业教学检测的内容、难度、实施程序等都必须根据计算机专业教学目的、要求及其内容来制定;计算机…

网站建设版面分几页合适网络推广培训有哪些课程

thinkphp8已出来有好一段时间了。这些天闲来无事,研究了下tp8的路由。默认情况下,tp8的路由是在route\app.php的文件里。但在实际工作中,我们并不会这样子去写路由。因为这样不好管理。更多的,是通过应用级别去管理路由。假如项目…

做网站骗php建设图书网站代码

作者推荐 视频算法专题 涉及知识点 动态规划 数学 力扣458:可怜的小猪 有 buckets 桶液体,其中 正好有一桶 含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否…

海尔网站建设不足之处免费网页搭建

TS 38.822有UE BWP 相关能力 IE的详细介绍,如下图。 举例说明,对于UE上报bwp-SameNumerology=upto2时,根据上图中的描述,UE支持能力情况如下:每个carrier最多支持2 个UE specific RRC configured DL/UL BWPs;可以通过DCI和BWP-InactivityTimer主动切换BWP;每个carrier的…

广州建设工程造价管理站大型网站只做要多少钱

文章目录 题目1代码实验结果题目2代码实验结果题目3代码实验结果题目4代码实验结果题目总结题目1 输入一个整数,用于控制输出*的个数,输入日期,按照特定格式输出 研究下面的例子,并编写一个与这些例子完全相同的程序。 代码 import datetime# ask user for length of b…

有了阿里云服务器怎么做网站网页设计学什么软件

本文介绍了如何使用Finder应用程序、iTunes for Windows、iCloud和谷歌照片将照片从Mac或PC传输到iPhone。 如何将照片从Mac传输到iPhone 如果你有一台Mac电脑,里面装满了你想转移到iPhone的照片,这是一件非常简单的事情。只需遵循以下步骤&#xff1a…

php做电影网站飞鱼crm下载

作为一个信息安全的人,打各个学校的CTF比赛是比较重要的! 最近一个朋友发了道题目过来,发现有道题目比较有意思,这里跟大家分享下 这串代码的大致意思是: 这段代码首先引入了一个名为"flag.php"的文件&am…

网站建设技术难题温州品牌网站建设

报错:one record is expected, but the query result is multiple records,意思是:需要一条记录,但查询结果是多条记录。这个问题很常见,但是进过排查,是用户表【手机号唯一原则】查询时候发现是时候多出来…

网站建设流程中哪些部分比较重要山东大学经济研究院

Miguel Arevallilo Herra ez, David R. Burton, Michael J. Lalor, and Munther A. Gdeisat 摘要: 据我们所知,我们描述了一种新的相位展开技术。已经提出了几种基于首先展开最可靠像素的算法。这些仅限于连续路径,并且在定义起始像素时会遇…

建设网站的运行费包括什么地方企业广告宣传

H - Holy Grail 题意: 题干又臭又长 我简单说说 n个点,m条有向边,边权为负,然后给你六组起始点(s点和t点),你要在s和t之间建一个有向边,要使得权值最小,问这六组边依次…

湖北省职业能力建设处网站国内app开发公司

P2148 [SDOI2009]E&D 题意: 有2n堆石子,第2k-1堆和第2k堆是一组,现在两个人轮流操作,每次操作任选一组石子,然后将改组中的一堆石子移走,将另一堆式子分割成两堆,形成新的两堆石子&#x…

做的网站怎样适配手机如何创建百度网站

个人主页:兜里有颗棉花糖 欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 兜里有颗棉花糖 原创 收录于专栏【JavaSE_primary】 本专栏旨在分享学习JavaSE的一点学习心得,欢迎大家在评论区交流讨论💌 上篇(【Ja…

基于python的网站开发项目扬州、常州、扬州、泰州

简介: 2021 哪些前端技术值得关注?来听听狼叔的分享。 知乎上,有人提问《2021前端会有什么新的变化?》 狼叔的回答二天超过6.1万阅读量,目前444个赞同,2个专业徽章,整体上看,这篇回答…

买空间做网站网站上的菠菜游戏哪里可以做

http://www.cnblogs.com/jingzhishen/p/4067657.html转载于:https://www.cnblogs.com/chencesc/p/5733858.html