网监网站备案,wordpress产品页面如何编辑,百度sem是什么意思,南宁整合推广公司文章目录 八、功能实现1、注册功能2、登录功能3、问题说明4、首页数据显示5、后台管理 八、功能实现
1、注册功能 jsp#xff1a;能够在页面中把数据动态化#xff0c;jsp和html在元素标签上是无区别的#xff0c;区别是html中写上java代码就成了jsp文件。filename.jsp。 需… 文章目录 八、功能实现1、注册功能2、登录功能3、问题说明4、首页数据显示5、后台管理 八、功能实现
1、注册功能 jsp能够在页面中把数据动态化jsp和html在元素标签上是无区别的区别是html中写上java代码就成了jsp文件。filename.jsp。 需要把html文件转换成jsp文件以达到动态显示数据的目的。
!-- jsp的文件头 --
% page languagejava contentTypetext/html; charsetUTF-8pageEncodingUTF-8%
!-- 嵌入的java代码 --
% int i 0;
%让类可以接收请求extends HttpServletdoGet, doPostservice都是可以接收前端请求的方法可以重写它们 区别前端发送的GET请求则调用doGet方法前端发送POST请求则调用doPost方法。而service可以接收所有请求。 servlet2.x以配置的方式来对应请求映射更能理解原理servlet3.x以注解的方式来对应请求映射 java查看源码 问题怎么找到java类的源代码 表单中的action和method与方法及其注解相对应。
form classform-horizontal actionregister methodpost/formOverride
protected void doPost(HttpServletRequest request, HttpServletResponse response) {System.out.println(----dopost()----);
}问题试了好多次后端好像一直收不到请求。后面又突然可以了真是奇怪。 感受到了Servlet又给人一种强烈的黑盒感你根本不知道它在干什么。也许我从来就没有很理解过Web。 问题为什么要在doGet中调用doPost前端用Get方法能正常将参数传递过来吗 如何取得请求中的参数 在前端input的文本输入框typetext需要设置name属性相当于变量名。传输到后端之后可以据此取出数据。 input单选框(typeratio)需要设置value属性。 在后端使用request对象。
String nickName request.getParameter(nickName); // 参数均为String
int _sex Integer.parseInt(sex); // String -- intGET与POST
get表单参数以明文方式通过附加在ur后面l进行传递不安全有大小限制。post表单参数会隐藏以打包的方式传递相对安全无大小限制。 问题为什么post打包就相对安全呢别人解包不就行了 响应前端
请求转发地址栏url不会改变能够附带数据。重定向url会变不能附带数据。先根据form表单的action到/register然后再重定向到另一个页面。
// 请求转发并附带两个参数
request.getRequestDispatcher(index.html).forward(request,response);
// 重定向(注册失败 -- 跳转到注册页面重新注册)
response.sendRedirect(register.jsp);问题在html的form表单中如果使用post请求则中文字符串无法正常得到但改用get请求时是正常的。 ----dopost()---- // 使用post请求
Users [id0, nickname??????, password123456, sex1]
----dopost()---- // 使用get请求
Users [id0, nicknamehello, password123456, sex2]问题踩大坑一个在普通java代码中可以注册成功但是改成web项目运行就会报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 。 web项目的代码是在Tomcat服务器中运行的所以还需要将jdbc的jar包添加到磁盘tomcat服务器的lib目录下。 参考servlet中调用JDBC报错java.lang.ClassNotFoundException: com.mysql.jdbc.Driver_啥也不会的小学生的博客 显示错误消息
传递信息重定向不能附带数据因此使用请求转发。span/span 分块标签。${info} 取request中的信息一种快捷的方法。
request.setAttribute(info, 网络原因注册失败请重新注册);记录在前端提交空表单时程序会寄。 2、登录功能
思路一定要细化点击登录进入登录页面输入用户名和密码点击登录按钮把数据提交到servlet中servlet中获取输入的用户名和密码只需指定能否登录。控制器调用service要结果service调用dao要数据。
步骤
获取登录信息调用service得到能否登录的结果响应1能登录跳转到index.jsp2不能登录跳转到login.jsp
在开发过程中构造方法可以增加重写不要修改、删除以防连锁反应。
-- 只能提示“用户名或密码错误”能查到数据就说明用户名密码正确。
select uid from users where nickName zhangsan and password 123456;注册时用户名也不能重复暂时不处理 问题若登录窗口是弹出的新标签页那登录后如何回到原来的页面并显示成功登录的状态 登录后显示用户名 request对象作用域只是在当前请求中有效。 会话当打开一个浏览器就创建了一次会话。当浏览器关闭时当前会话就结束了。 会话对象session 作用域是整个会话。
request.getSession().setAttrivute(nickname, nickname);!-- 在index.jsp中取变量值 --
${nickname}问题会话没有效果在我的尝试中它的作用域就和request.setAttribute()相同。使用重定向或者打开新页面时都无法显示用户名。只有使用请求得到的那个页面中才能显示用户名。 发现存在浏览器的影响当我从Edge更换为小白浏览器后一切正常(尝试了各种qq、谷歌、华为等各种浏览器后发现只有Edge存在这个问题)。 乱码问题 确保mysql编码为utf-8确保ide环境和文件的编码为utf-8在代码中设置utf-8。 如果是get方式提交则需要修改tomcat 的编码。tomcat/conf/server.xml 修改URIEncodingUTF-8如果是post方式提交需要在请求设置下面的代码
request.setCharacterEncoding(UTF-8);判断登录状态 引入jsp的标准标签库。使用c:if标签进行判断。
% taglib urihttp://java.sun.com/jsp.jstl/core prefixc %c:if test${null nickname}...
/c:if问题open引入标签库报错Can not find the tag library descriptor for http://java.sun.com/jsp.jstl/core 。使用中说“ 将tomcat引入进去才会有这个标签库 ”如何引入 公共页面的抽取
创建header.jsp将导航栏放入其中。然后在其它需要的页面引入。
jsp:include pageheader.jsp/jsp:include感受jsp的调用页面与flask中的模板块方式还是有所不同。模板块是有一个base.html作为一个整体的统一结构其它页面继承它并覆盖其中的一些块。 注销
思路把 nickname 从 session 会话中移除移除后再导航栏中就不会再显示用户名而是显示登录和注册。创建类 LoginOutServlet。1移除session中的nickname; 2重定向到首页 index.jsp。错误类型1404请求或响应的路径错误2500服务器代码错误。
lia hreflogout注销/a/li3、问题说明
1、启动服务器之后项目访问不了
记得将项目部署到服务器里面。项目部署路径双击 tomcat -- Server Locations可以查看、修改项目的部署路径。部署之后即使你将原来的项目代码删掉项目仍然可以运行。WEB-INF/类路径下是编译好的字节码。访问路径Properties for … -- Web Project Setting -- Context root。这里才是在浏览器访问项目所使用的名称如localhost:8080/friends/index.jsp 。如果修改项目名称而这里没变的话使用新名称是访问不了的。
2、其它一些问题
数值格式化异常尝试将非数字字符串转换为数字类型。找不到主类项目配置问题jdk版本。jstl找不到将jar包导进去就行。找不到页面404避免中文路径。有时会将中文编码、转码比如有些网站中看到了%啥的。代码错误500数据库连接异常根据自己的情况修改连接参数正确导入依赖jar包代码布局问题多用 F12dao层的空指针异常对 null 对象就无法调用相应的方法。前端提交的数据后端获取不到注意表单控件名称。
4、首页数据显示
一进首页就要能拿到数据直接访问index.jsp是拿不到的。
思路发送请求到 control在 control 中获得推荐朋友的集合数据再响应 index.jsp然后 index.jsp 遍历数据。
图片上传比较复杂可以先直接在本地放两张用一下
创建一个首页控制层indexServlet.java路径为/index。服务层getUsersByIndex(Users user)方法根据用户的性别和状态进行查询。
-- 查询推荐朋友
select uid,nickname,photo,words from users where indexstatus2 and sex1 limit 8;前端遍历数据 使用 jsp 的标准标签库
c:forEach items${listboy} varuserimg srcimg/${user.photo} alt...p宣言${user.words}/p
/c:forEach注${user.words} 相当于调用了 Users 类的 get 方法 老师说许多人缺少独立思考的能力不告诉一步步怎么做就不会做。 buguri 打错了
!-- 错误的 --
% taglib urihttp://java.sun.com/jsp.jstl/core prefixc%
!-- 正确的 --
% taglib urihttp://java.sun.com/jsp/jstl/core prefixc%问题我在 blog_java 项目中是由 jstl 包的但是在 myfriends 项目中不知道为啥没有。不过把包贴过去之后就好了。 -- 全部设置为不推荐(2)
update users set indexstatus1;老师杂谈了解北京可以去上地95%是IT八王坟地铁站非常挤天通苑一个小区400万人。这样的芸芸人海害。 没有推荐数据时提示系统暂无推荐EL表达式如何判断集合是否为空
c:if test${empty list_friend}集合为空
/c:if5、后台管理
后台登录 思路首页中点击导航栏中的“后台管理”进入后台管理登录登录后进入后台管理进行用户信息管理。可以复用普通用户登录模块减少冗余代码。 可以在数据库中指定 admin 账号然后根据 uid、用户名来判断。作用是不用单独写管理员登录的control、service、dao代码。
!-- 前端在不同的登录页面传递key相同但值不同的参数 --
!-- hidden表示不会在前端显示表单 --
input typehidden nameflag value1显示用户列表与首页数据显示的思路类似。 注response.sendRedirect 中的index.jsp都应该换成index。 获取所有用户列表在services/IUsersServices
普通用户 - 个人中心
显示性别在数据库中性别使用的是 int 类型。在前端可以使用${user.sex1?女:男} 。 感受老师水平确实可以页面简洁大气。 问题1图片的上传比较麻烦感觉可以先存一些图片然后提供给用户选择而不是让他自己上传 问题2修改信息时用户信息的回显如何实现 从 session 会话中获取用户 id根据 id 查询当前用户的信息把对象传递给 userInfo.jsp 注释try-fianlly中不管 try 里面怎么写最后 finally 都会执行即使在 try 里面写了 return。 思路设计前端页面时先使用硬编码填充数据。写后端时再进行替换实现静态数据的动态化。 信息未填写时可以提示 “待完善”。 未完但完