小白新路历程-1

实现功能:

模拟简单登录功能,登录成功跳转新页面,登录失败在原登录界面提示登录失败信息

开发环境:

eclipse

Tomcat-8.0

预备知识:

HTML标签,Servlet相关知识——请求的转发与重定向,jsp相关知识,EL表达式

思路实现:共2个jsp,一个servlet

1.登录界面login.jsp:

采用jsp,不采用html的原因是因为要进行登录失败信息回显(当然如果用html结合ajax也可以实现,这里采用jsp更方便)

如图:

2.登录成功界面hello.jsp:

欢迎信息+登录的用户名

如图:

3.登录失败信息回显Login.jsp:

如图:

思路简述:

问题1:jsp页面如何与一个java类进行连接绑定起来?

简单的说,一个jsp页面要跟一个servlet进行连接,需要有一个桥梁,这个桥梁就是web.xml文件,可以通过下面代码观察到,登录页面的表单的提交的action属性值,填写的就是在web.xml文件里对应的servlet-mapping中的url-pattern的值,而这个值又对应了一个servlet-name,servlet-name则对应到一个servlet-class,这样就把jsp和java类(servlet类)进行了关联。
其实我觉得最明显的就是提交表单后,url地址变化了,通过这个url地址将表单信息传给了对应的java类。

问题2:实现的整体的思路是怎么样的?

                一个jsp页面通过表单元素,将用户信息通过url的形式提交给一个已经在web.xml配置映射好的servlet类,servlet类接收到传来的表单信息,进行值校验(为了方便起见则直接定义用户名密码了,正常情况下是要采用jdbc进行从数据库中取出值进行校验的),然后对校验结果进行判断,如果账户密码正确,则跳转到登录成功的页面(采用重定向),如果失败,则将登录失败的提示信息存到request域对象中并返回登录界面显示出来(采用请求的转发)

简单的联系:

jsp页面<---------->web.xml<--------->servlet类

问题3:在servlet中要如何获取jsp中提交过来的表单信息呢?

                request.getParameter("userName");//userName是表单中,input标签中name属性的值,接收到的是string类型

    问题4:登录页面如何在登录失败的时候给出提示信息呢?

                实现思路是如果登录失败,则往request域对象中存入登录失败的提示信息,然后通过请求的转发的方式跳转回登录页面并显示,所以登录界面要嵌入一段脚本代码,用来判断当前是否有登录失败提示信息的对象,如果有则将该对象保存的信息打印出来,如果没有则什么都不显示。

1)如果账密不匹配,则往request域中存入message对象,该message中保存了提示信息:request.setAttribute("message", "账密错误,请重新登录<br>");

并转发到登录页面:request.getRequestDispatcher("/loginDemo/login.jsp").forward(request, response);

2)在登录页面获取该对象:(因为登录失败的时候才有该对象,疑问:那如果我登录失败后再访问登录页面,那不应该会显示错误信息吗?答案是否定的。可了解request域对象生命周期相关知识

<%

if(request.getAttribute("message")!= null){

out.print(request.getAttribute("message"));

}

%>

问题5:request.getAttribute()和request.getParameter()区别是:

                前者获取的是一个object对象,后者获取的是一个string字符串,所以前者使用的时候可能会碰到需要做一些类型转换的情况。

 问题6:表单访问路径填写问题

                在ation属性,或者请求的转发,重定向,一般采用绝对路径,可以避免路径访问出错,访问资源不存在等问题。

jsp表达式:<%=request.getContextPath()%>或者用EL表达式:${ pageContext.request.contextPath }可以获取当前web应用根目录路径,不妨试试输出打印下,就可以观察值是多少了。

具体代码Code:

1.login.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>标题</title>
<style type="text/css">*{margin: 0;padding: 0;}form{margin: 0 auto;padding:15px; width: 300px;height:300px;text-align: center;}#submit{padding: 10px}#submit input{width: 50px;height: 24px;}
</style>
</head>
<body><div class="wrapper"><form action="<%=request.getContextPath()%>/loginDemo" method="post"><label>用户名:</label><input type="text" name="userName" value="${param.userName}"/><br><br><label>密码:</label><input type="password" name="password"/><br><font color="red"><%if(request.getAttribute("message")!= null){out.print(request.getAttribute("message"));}%></font><div id="submit"><input type="submit" value="登录"/></div></form></div>
</body>
</html>

2.hello.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>标题</title>
</head>
<body>Hello:<br><font color="green" size="22"><%out.print(request.getParameter("userName")+"<br>");%></font><a href="<%=request.getContextPath()%>/loginDemo/login.jsp">重新登录</a>
</body>
</html>

3.对应的LoginServlet.java

package loginDemo;import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class LoginServlet extends HttpServlet {private static final long serialVersionUID = 1L;protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {String userName = request.getParameter("userName");String password = request.getParameter("password");System.err.println(userName+";"+password);String myUser = "Dong";String myPwd = "5432100";if(userName.equals(myUser)&&password.equals(myPwd)) {response.sendRedirect(request.getContextPath()+"/loginDemo/hello.jsp?userName="+userName);}else {request.setAttribute("message", "账密错误,请重新登录<br>");request.getRequestDispatcher("/loginDemo/login.jsp").forward(request, response);}}}

4.对应的web.xml的配置(注册)与映射

  <servlet><servlet-name>logindemo</servlet-name><servlet-class>loginDemo.LoginServlet</servlet-class></servlet><servlet-mapping><servlet-name>logindemo</servlet-name><url-pattern>/loginDemo</url-pattern></servlet-mapping>

留言Message:本人小白,以上仅个人学习心得,欢迎评论区dd,有错误欢迎指出,互相学习,感谢~

jsp+servlet实现简单登录页面功能Demo相关推荐

  1. Jsp/Servlet中实现登录注册功能

    目录 index.jsp: login.jsp: register.jsp: personCenter.jsp: User.java: DBUtil.java: LoginServlet.java: ...

  2. 电脑编程用户注册界面java_用JSP/Servlet开发简单的用户注册系统

    用JSP/Servlet开发简单的用户注册系统 2.4界面编程实现 通过JavaBeans封装了大部分的逻辑或数据操作功能.这样,JSP页面中就可以减少很多Java代码,从而使得JSP的建立和修改变得 ...

  3. 基于 JSP + Servlet 的用户登录验证

    综合案例--基于 JSP + Servlet 的用户登录验证 [例6-1] 实现一个简单的用户登录验证程序,如果用户名是 abc ,密码是 123,则显示欢迎用户的信息,否则显示"用户名或密 ...

  4. 用dcloud 的h5+实现APP简单登录页面

    # 简单介绍 最近接到公司一个移动APP项目开发任务,公司决定采用跨端技术来实现一套代码同时兼容安卓和苹果端手机,于是我评估了一下最后决定采用dcloud平台提供mui和htlm5+技术来实现,其实现 ...

  5. web前端页面——移动端简单登录页面、下拉菜单(代码详细注释)

      今天跟着专业老师复习了一下前端,感觉好多都已经忘记了,我将今天复习的一些重点整理出来. https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注! 欢迎关注微 ...

  6. 用php mui ajax注册登录页面,ajax实现简单登录页面

    本文实例为大家分享了ajax实现简单登录页面的具体代码,供大家参考,具体内容如下 一.什么是ajax Ajax是一种无需重新加载整个网页,能够更新部分网页的技术. 二.ajax的工作原理 Ajax工作 ...

  7. php的登录页面怎么弄,php登录界面_php简单登录页面

    摘要 腾兴网为您分享:php简单登录页面,一起成长,携程,小米社区,享家等软件知识,以及音频转文字,化学实验模拟软件,给力么,甘肃扶贫信息网,qq群成员提取工具,初中文言文全解,crossword英文 ...

  8. html简单登录页面制作

    html简单登录页面制作 <!DOCTYPE html> <html><head><meta charset="utf-8">< ...

  9. jsp mysql登录 demo_java jsp+servlet+mysql实现登录网页设计

    涉及以下几个文件: 1.登录页面 login.jsp 2,成功跳转页面 success.jsp 3,失败跳转页面 fail.jsp 4,servlet 处理类 LoginTestServlet.jav ...

最新文章

  1. 制作CentOS fence-agents 镜像
  2. java中数据池有哪些_什么是数据库的 “缓存池” ?(万字干货)
  3. oracle dbms overflow,Oracle DBA课程系列笔记(12_1)
  4. c++学习笔记之模板
  5. Vue007_ 表单输入绑定
  6. android 百度地图3.0,android 百度地图3.0
  7. Java File类详解
  8. AAAI 2020 | 北理工阿里文娱:你所看视频的介绍,可以用到这样的「图像描述」技术...
  9. 华为Mate30 Pro高清渲染图曝光:后置四摄+挖孔全面屏
  10. linux内存机制的virt,关于linux:转载理解virt-res-shr之间的关系
  11. [ubuntu] pickle
  12. L1-029. 是不是太胖了-PAT团体程序设计天梯赛GPLT
  13. Win11键盘在哪里设置?Win11键盘的设置方法
  14. linux代码折叠,VIM 代码折叠 :set foldmethod=marker
  15. AMD在华签约徐静蕾做品牌代言人
  16. 031_onetab
  17. 阿里再发10亿助农,店宝宝:中小卖家喜迎流量红利
  18. Liferay 6.0??
  19. pycharm 【Debug】过程卡住不动
  20. UL-1973-2022 储能电池安全标准

热门文章

  1. 【Linux命令】《鸟哥Linux基础》第十六章 进程管理与SELinux初探
  2. Linux Centos 自建Nas私有云
  3. vue项目+el-tree,树结构展示,非常完整的代码,包含调接口拿真实数据渲染
  4. matlab Douglas-Peucker 道格拉斯-普克算法
  5. 量化交易 米筐 案例:市值因子选股策略
  6. Minecraft使用Alibaba_Dragonwell11运行1.16.5服务器[官服核心]
  7. lib vs 生成pdb_「pdb文件」VS PDB文件详解 - seo实验室
  8. 安装Office2010/2007出现1935错误解决办法
  9. 笔记本 续航测试软件,最低5小时起 这些超长续航笔记本你一定不知道
  10. python研究股价_用python处理月度股价数据