Java Web开发: 基于HttpServlet的用户登录网站 实例

一个简单的小例子,基于httpservlet的用户登录(杂家是菜鸟刚接触javaee,只能从最简单出发了),首先看业务逻辑:

有三个文件组成,分别是登录、验证和欢迎界面。要达到的目标是:

下图是HttpServlet处理doGet和doPost请求的异同:

废话不说了,先看源码:

第一:Login.java

//登陆界面

package yan.guoqi;

import javax.servlet.http.*;

import java.io.*;


public class Login extends HttpServlet{
	
	public void doGet(HttpServletRequest req, HttpServletResponse res){
	//业务逻辑
	try{
		//中文乱码解决
		res.setContentType("text/html;charset=gbk");
		PrintWriter pw = res.getWriter();
		
		//返回登陆页面
		pw.println("<html>");
		pw.println("<body>");
		pw.println("<h1>登陆界面</h1>");
		pw.println("<form action=logincl method=post>");
		pw.println("用户名:<input type=text name=username><br>");
		pw.println("密码:<input type=password name=passwd><br>");
		pw.println("<input type=submit value=登陆><br>");
		pw.println("</form>");
		pw.println("<body/>");
		pw.println("<html/>");
	}
	catch(Exception ex){
		ex.printStackTrace();
	}
	
		
	}
	
	public void doPost(HttpServletRequest req, HttpServletResponse res){
		
		this.doGet(req, res);
	}
}


第二:LoginCL.java,验证用户名和密码是否正确

//用户验证servlet


package yan.guoqi;

import javax.servlet.http.*;

import java.io.*;



public class LoginCL extends HttpServlet{
	
	public void doGet(HttpServletRequest req, HttpServletResponse res){
	//业务逻辑
	try{
	//接受用户名和密码
	String u = req.getParameter("username");
	String p = req.getParameter("passwd");
	//验证
	if(u.equals("yan") && p.equals("yan")){
		//合法
		//跳转到welcome
			
		res.sendRedirect("wel");
		
	}
	else{
		//不合法
		//跳转
		res.sendRedirect("login");//你要跳转的servlet的url
	}
		
	
	}
	catch(Exception ex){
		ex.printStackTrace();
	}
	
		
	}
	
	public void doPost(HttpServletRequest req, HttpServletResponse res){
		
		this.doGet(req, res);
	}
}


第三:Wel.java 如果验证成功,显示欢迎界面

	//欢迎界面
	
	
	package yan.guoqi;
	
	import javax.servlet.http.*;
	
	import java.io.*;
	
	
	public class Wel extends HttpServlet{
		
		public void doGet(HttpServletRequest req, HttpServletResponse res){
		//业务逻辑
		try{
			res.setContentType("text/html;charset=gbk");
			PrintWriter pw = res.getWriter();			
			pw.println("Welcome,恭喜您,已成功登陆!");
		
	
	
		}
		catch(Exception ex){
			ex.printStackTrace();
		}
		
			
		}
		
		public void doPost(HttpServletRequest req, HttpServletResponse res){
			
			this.doGet(req, res);
		}
	}

第四web.xml文件:

<?xml version="1.0" encoding="UTF-8"?>
<!-- ISO-8859-1 -->
<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor 
	license agreements. See the NOTICE file distributed with this work for additional 
	information regarding copyright ownership. The ASF licenses this file to 
	You under the Apache License, Version 2.0 (the "License"); you may not use 
	this file except in compliance with the License. You may obtain a copy of 
	the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required 
	by applicable law or agreed to in writing, software distributed under the 
	License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS 
	OF ANY KIND, either express or implied. See the License for the specific 
	language governing permissions and limitations under the License. -->

<web-app xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
	version="2.5">

	<display-name>Welcome to Tomcat</display-name>
	<description>
     Welcome to Tomcat
  </description>

	<servlet>
		<!--给survlet起个名字,可以是任意的 -->
		<servlet-name>login</servlet-name>
		<!--servlet的路径(包名+类名) -->
		<servlet-class>yan.guoqi.Login</servlet-class>
	</servlet>

	<servlet-mapping>
		<!-- servlet的名字和上面保持统一 -->
		<servlet-name>login</servlet-name>
		<!-- 这是在浏览器中输入的访问该survlet的url,任意的 -->
		<url-pattern>/login</url-pattern>

	</servlet-mapping>

	<servlet>
		<!--给survlet起个名字,可以是任意的 -->
		<servlet-name>logincl</servlet-name>
		<!--servlet的路径(包名+类名) -->
		<servlet-class>yan.guoqi.LoginCL</servlet-class>
	</servlet>

	<servlet-mapping>
		<!-- servlet的名字和上面保持统一 -->
		<servlet-name>logincl</servlet-name>
		<!-- 这是在浏览器中输入的访问该survlet的url,任意的 -->
		<url-pattern>/logincl</url-pattern>
	</servlet-mapping>

	<servlet>
		<!--给survlet起个名字,可以是任意的 -->
		<servlet-name>wel</servlet-name>
		<!--servlet的路径(包名+类名) -->
		<servlet-class>yan.guoqi.Wel</servlet-class>
	</servlet>

	<servlet-mapping>
		<!-- servlet的名字和上面保持统一 -->
		<servlet-name>wel</servlet-name>
		<!-- 这是在浏览器中输入的访问该survlet的url,任意的 -->
		<url-pattern>/wel</url-pattern>

	</servlet-mapping>



</web-app>

总结知识点:

1,页面的跳转用res.sendRedirect("xxx")来实现,xxx是xml文件里要跳转的servlet对应的url名字。

2,接收用户名和密码用String u = req.getParameter("username");还实现。其中的username是pw.println("用户名:<input type=text name=username><br>");这里对应的名字。

3,servlet里嵌入html语言。比如Login.java里的下面语句:

pw.println("<html>");
		pw.println("<body>");
		pw.println("<h1>登陆界面</h1>");
		pw.println("<form action=logincl method=post>");
		pw.println("用户名:<input type=text name=username><br>");
		pw.println("密码:<input type=password name=passwd><br>");
		pw.println("<input type=submit value=登陆><br>");
		pw.println("</form>");
		pw.println("<body/>");
		pw.println("<html/>");


看来还要学习下html语言啊!

4,servlet解决中文乱码的方法:

res.setContentType("text/html;charset=gbk");

5,每个.java文件都要编译。对应的servlet文件在web.xml文件里都要配置注册下,这点很像android开发的Manifinest.xml文件。每次更改.java文件时,按韩顺平老师的讲解是reload一下。但有时候reload一下不中,把tomcat关闭重新开,浏览器关闭再输入网址打开,这样才看到更改后的效果。

-----------------------------下次这个验证模块要连上数据库,这个算小demo吧!大牛就别看源码了。Java web长路漫漫啊。。。。大哭

源码:http://download.csdn.net/detail/yanzi1225627/5053157 下载后参照http://blog.csdn.net/yanzi1225627/article/details/8564455在相应位置新建文件夹,对应的文件放进去。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个简单的登录注册案例的Java代码实现,基于Servlet+JSP+JavaBean模式。 1. 创建一个User类,用于存储用户信息。 ```java public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ``` 2. 创建一个UserDao类,用于处理用户信息的增删改查操作。 ```java public class UserDao { private static Map<String, User> users = new HashMap<String, User>(); public void addUser(User user) { users.put(user.getUsername(), user); } public User getUser(String username) { return users.get(username); } public boolean hasUser(String username) { return users.containsKey(username); } } ``` 3. 创建一个LoginServlet类,用于处理用户登录请求。 ```java 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"); UserDao userDao = new UserDao(); if (userDao.hasUser(username)) { User user = userDao.getUser(username); if (password.equals(user.getPassword())) { request.getSession().setAttribute("user", user); response.sendRedirect("welcome.jsp"); } else { request.setAttribute("errorMessage", "密码错误"); request.getRequestDispatcher("login.jsp").forward(request, response); } } else { request.setAttribute("errorMessage", "用户名不存在"); request.getRequestDispatcher("login.jsp").forward(request, response); } } } ``` 4. 创建一个RegisterServlet类,用于处理用户注册请求。 ```java public class RegisterServlet 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"); UserDao userDao = new UserDao(); if (userDao.hasUser(username)) { request.setAttribute("errorMessage", "用户名已存在"); request.getRequestDispatcher("register.jsp").forward(request, response); } else { User user = new User(); user.setUsername(username); user.setPassword(password); userDao.addUser(user); request.getSession().setAttribute("user", user); response.sendRedirect("welcome.jsp"); } } } ``` 5. 创建一个login.jsp页面,用于显示登录表单。 ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>登录</title> </head> <body> <h1>登录</h1> <form action="login" method="post"> <label>用户名:</label> <input type="text" name="username"> <br> <label>密码:</label> <input type="password" name="password"> <br> <input type="submit" value="登录"> <br> <span style="color: red">${errorMessage}</span> </form> <a href="register.jsp">注册</a> </body> </html> ``` 6. 创建一个register.jsp页面,用于显示注册表单。 ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>注册</title> </head> <body> <h1>注册</h1> <form action="register" method="post"> <label>用户名:</label> <input type="text" name="username"> <br> <label>密码:</label> <input type="password" name="password"> <br> <input type="submit" value="注册"> <br> <span style="color: red">${errorMessage}</span> </form> <a href="login.jsp">返回登录页面</a> </body> </html> ``` 7. 创建一个welcome.jsp页面,用于显示欢迎信息。 ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>欢迎</title> </head> <body> <h1>欢迎 ${user.username}</h1> <a href="logout">注销</a> </body> </html> ``` 8. 创建一个LogoutServlet类,用于处理用户注销请求。 ```java public class LogoutServlet extends HttpServlet { private static final long serialVersionUID = 1L; protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { request.getSession().invalidate(); response.sendRedirect("login.jsp"); } } ``` 以上就是一个简单的登录注册案例的Java代码实现。 ### 回答2: 实现用户登录注册功能的实例代码,可以基于Servlet、JSP、JavaBean的模式。下面是一个简单的示例代码: 1. 新建一个JavaBean类User.java,包含以下属性和方法: ```java public class User { private String username; private String password; public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } ``` 2. 创建一个处理登录和注册的Servlet LoginServlet.java,代码示例如下: ```java @WebServlet("/login") public class LoginServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取请求参数 String username = request.getParameter("username"); String password = request.getParameter("password"); // 从数据库或其他数据源中验证用户登录信息 // 实际项目中需修改为合适的验证逻辑 if (username.equals("admin") && password.equals("123456")) { // 登录成功,创建用户实例 User user = new User(); user.setUsername(username); user.setPassword(password); // 将用户信息存储到Session中,方便其他页面使用 request.getSession().setAttribute("user", user); // 跳转到首页或其他需要登录后操作的页面 response.sendRedirect("home.jsp"); } else { // 登录失败,返回登录页面并提示错误信息 request.setAttribute("message", "用户名或密码错误"); request.getRequestDispatcher("login.jsp").forward(request, response); } } } ``` 3. 创建一个处理注册的Servlet RegisterServlet.java,代码示例如下: ```java @WebServlet("/register") public class RegisterServlet extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 获取请求参数 String username = request.getParameter("username"); String password = request.getParameter("password"); // 创建用户实例并设置属性 User user = new User(); user.setUsername(username); user.setPassword(password); // 将用户信息存储到数据库或其他数据源中 // 实际项目中需修改为合适的存储逻辑 // 注册成功,将用户信息存储到Session中,方便登录后使用 request.getSession().setAttribute("user", user); // 跳转到注册成功页面或其他需要登录后操作的页面 response.sendRedirect("home.jsp"); } } ``` 以上是一个基于Servlet、JSP、JavaBean的用户登录注册功能实例的示例代码。通过LoginServlet处理用户的登录请求,RegisterServlet处理用户的注册请求。在登录成功或注册成功后,将用户信息存储到Session中,方便其他页面使用。 ### 回答3: 登录注册是一个常见的功能需求,一般用于用户在系统中进行身份认证和账号管理。下面是基于JavaWebServlet JSP JavaBean模式实现用户登录注册功能的示例代码。 首先,我们需要创建一个用于存储用户信息的JavaBean类,例如UserBean。该类可以包含用户名、密码等属性,并提供对应的get和set方法。 接着,我们创建一个用于处理用户登录和注册请求的Servlet类,例如UserServlet。在该类中,我们可以重写doGet和doPost方法,分别处理GET和POST请求。 在doGet方法中,我们可以处理用户登录的请求。首先,从request中获取用户输入的用户名和密码。然后,通过调用UserBean类的方法进行验证。如果验证成功,则重定向到登录成功页面;否则,返回登录失败页面。 在doPost方法中,我们可以处理用户注册的请求。首先,从request中获取用户输入的用户名和密码。然后,通过调用UserBean类的方法进行注册。如果注册成功,则重定向到注册成功页面;否则,返回注册失败页面。 接下来,我们需要创建一个用于显示登录和注册界面的JSP页面。在该页面中,用户可以输入用户名和密码,并选择登录或注册按钮。通过设置form的action属性,可以将请求发送给UserServlet。 最后,我们需要创建登录成功、登录失败、注册成功和注册失败页面。这些页面可以根据需要进行定制,例如显示一些提示信息或跳转到其他页面。 以上就是一个基于Servlet JSP JavaBean模式实现用户登录注册功能的简单例子。当然,实际的实现可能会更加复杂,涉及到数据库连接、密码加密等方面的处理。但是通过这个例子,可以帮助你理解如何使用JavaWeb来实现用户登录注册功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值