java servlet 一个小案例--登陆跳转
2014-04-21 01:13
281 查看
该小案例是实现从一个页面中的表单输入信息,验证后跳转到其它页面的一个功能。
Login.java文件
//登陆界面
package com.myweb;
import javax.servlet.http.*;
import java.io.*;
public class Login extends HttpServlet{
//处理get请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try{
//中文乱码 的解决方法
res.setContentType("text/html char set=GBK"); //未能解决问题。找原因
PrintWriter pw = res.getWriter();
//返回登陆界面
pw.println("<html>");
pw.println("<body>");
pw.println("<h1>USERLOGIN,Hello!</h1>");
pw.println("<form action=LoginCl method=post>");
pw.println("UserName:<input type=text name=username /><br/>");
pw.println("Passwd:<input type=password name=passwd /><br/>");
pw.println("<input type=submit value=loing><br/>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
}catch(Exception ex){
ex.printStackTrace();
}
}
//处理pos请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req, res);
}
}
LoginCl.java文件
//用户验证servlet
//登陆控制界面
package com.myweb;
import javax.servlet.http.*;
import java.io.*;
public class LoginCl extends HttpServlet{
//处理get请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try{
//接收用户名和密码
String u=req.getParameter("username");
String p=req.getParameter("passwd");
//验证
if(u.equals("asd")&&p.equals("123")){
//合法
//跳转到welcome
res.sendRedirect("Welcome");
}else{
//非法
//跳转
res.sendRedirect("Login");//写要到的servlet的那个URL
}
}catch(Exception ex){
ex.printStackTrace();
}
//this.doPost(req, res);
}
//处理pos请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req, res);
}
}
//Welcome.java文件
//登录成功界面
package com.myweb;
import javax.servlet.http.*;
import java.io.*;
public class Welcome extends HttpServlet{
//处理get请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try{
PrintWriter pw=res.getWriter();
pw.println("Welcom!Hello");
}catch(Exception ex){
ex.printStackTrace();
}
}
//处理pos请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req, res);
}
}
做该小案例时所遇到的问题:
1-问题:输入正确的USERNAME和PASSEORD不能够实现跳转
解决:我在三个.java文件中的doPost方法写成dopos方法,未能覆盖父类的doPost方法,不能实现跳转
2-问题:输入的正确的USERNAME和PASSEORD,成功地实现了跳转,但是跳到LoginCl URL页面处就停了下来没能够跳转到Welcome页面
解决:通过多次的测试,终于找出的再LoginCl处停下来的原因,原来传到LoginCl 处的username和passwd一直为空(这里的空不是说Login没有输入USERNAME和PASSEORD,而是一直没把Login页面的USERNAME和PASSEORD传入到LoginCl页面。导致不能够进入if(){}else{}判断语句中),原来错误在html标记语言中。在input的那两标签处,没有写/结束标签或有/但与前一单词没隔开一个空格导致
3-问题:中文乱码
在Login.java加入以下代码:
//中文乱码 的解决方法
res.setContentType("text/html; charset=gbk");
Login.java文件
//登陆界面
package com.myweb;
import javax.servlet.http.*;
import java.io.*;
public class Login extends HttpServlet{
//处理get请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try{
//中文乱码 的解决方法
res.setContentType("text/html char set=GBK"); //未能解决问题。找原因
PrintWriter pw = res.getWriter();
//返回登陆界面
pw.println("<html>");
pw.println("<body>");
pw.println("<h1>USERLOGIN,Hello!</h1>");
pw.println("<form action=LoginCl method=post>");
pw.println("UserName:<input type=text name=username /><br/>");
pw.println("Passwd:<input type=password name=passwd /><br/>");
pw.println("<input type=submit value=loing><br/>");
pw.println("</form>");
pw.println("</body>");
pw.println("</html>");
}catch(Exception ex){
ex.printStackTrace();
}
}
//处理pos请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req, res);
}
}
LoginCl.java文件
//用户验证servlet
//登陆控制界面
package com.myweb;
import javax.servlet.http.*;
import java.io.*;
public class LoginCl extends HttpServlet{
//处理get请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try{
//接收用户名和密码
String u=req.getParameter("username");
String p=req.getParameter("passwd");
//验证
if(u.equals("asd")&&p.equals("123")){
//合法
//跳转到welcome
res.sendRedirect("Welcome");
}else{
//非法
//跳转
res.sendRedirect("Login");//写要到的servlet的那个URL
}
}catch(Exception ex){
ex.printStackTrace();
}
//this.doPost(req, res);
}
//处理pos请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req, res);
}
}
//Welcome.java文件
//登录成功界面
package com.myweb;
import javax.servlet.http.*;
import java.io.*;
public class Welcome extends HttpServlet{
//处理get请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doGet(HttpServletRequest req,HttpServletResponse res){
//业务逻辑
try{
PrintWriter pw=res.getWriter();
pw.println("Welcom!Hello");
}catch(Exception ex){
ex.printStackTrace();
}
}
//处理pos请求
//req:用于获得客户端的信息
//res:用于向客户端返回信息
public void doPost(HttpServletRequest req,HttpServletResponse res){
this.doGet(req, res);
}
}
做该小案例时所遇到的问题:
1-问题:输入正确的USERNAME和PASSEORD不能够实现跳转
解决:我在三个.java文件中的doPost方法写成dopos方法,未能覆盖父类的doPost方法,不能实现跳转
2-问题:输入的正确的USERNAME和PASSEORD,成功地实现了跳转,但是跳到LoginCl URL页面处就停了下来没能够跳转到Welcome页面
解决:通过多次的测试,终于找出的再LoginCl处停下来的原因,原来传到LoginCl 处的username和passwd一直为空(这里的空不是说Login没有输入USERNAME和PASSEORD,而是一直没把Login页面的USERNAME和PASSEORD传入到LoginCl页面。导致不能够进入if(){}else{}判断语句中),原来错误在html标记语言中。在input的那两标签处,没有写/结束标签或有/但与前一单词没隔开一个空格导致
3-问题:中文乱码
在Login.java加入以下代码:
//中文乱码 的解决方法
res.setContentType("text/html; charset=gbk");
相关文章推荐
- 喜欢萌到爆可爱到爆的阿狸吗?本周利用所学知识实现了一个登陆界面的跳转,先看看最终效果吧~
- 分享一个Flex管理系统 Session超时的时候 用户操作时自动提示并跳转到登陆页面的方法
- 第26篇:AngularJS+ui-router实现一个超简单的登陆和跳转的二级路由demo
- 分享一个Flex管理系统 Session超时的时候 用户操作时自动提示并跳转到登陆页面的方法
- 当客户访问一个需登陆的页面时会转到登陆页面,当客户登陆成功后会自动跳转到客户登陆前的那个页面,请问该如何实现?
- Java Servlet【4】一个小的Servlet登录界面+页面跳转
- 一个仿微博登陆邮箱提示框js开发案例
- 一天一个小案例android初阶之页面跳转
- Java Servlet实现同一账号后登陆挤掉前一个登陆(类似QQ)
- 登陆成功后自动跳转到登录页面的前一个页面
- WinForm:一个登陆窗体引发的问题系列(五):窗口跳转
- JavaWeb登陆成功后跳转到上一个页面
- 【ASP.NET】登陆成功后如何跳转到上一个页面
- Java Servlet实现同一账号后登陆挤掉前一个登陆(类似QQ)
- struts2入门-第一个例子==》第一个struts2实例——HelloWorld==》Struts2.0搭建和简单实例==>写一个Steuts2的经典入门案例,做了一个登陆程序作为入门例子
- 一个登陆小案例演示Servlet的使用
- Windows Server登录后,光标到哪里都有一个蓝色的框,输入文字,就自动跳转到登陆界面
- 用javascript语言编写一个小程序:在一个文本框(用户名框)中按回车键时,跳转到另一个文本框(密码框)中,密码框回车之后,打一个登陆成功。点击button也是登陆成功。
- iOS7 最佳实践:一个天气应用案例(上)
- C#基础练习(事件登陆案例)