java用IDEAservlet和jsp做一个登陆界面
也是小白,从了解Servlet API开始学起。
我开始的时候看那些代码,关于@WebServlet注解不太懂,就去搜了下,这里有链接看这个就行了
接下来就是代码了,前面的步骤省略了
还有个事,是我这个小白做错的,在这说下哈,我用的IDEA,开始时候创建的是js文件,但应该创建jsp的(无知的我因为这个疑惑了好久)
login.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录页面</title>
</head>
<body>
<form action="LoginServlet" method="post"><!-- action写要请求Servlet的名 -->
用户名:<input type="text" id="uname" name="uname"><br><br>
密码:<input type="password" id="pwd" name="pwd"><br><br>
<input type="submit" value="登录">
<input type="reset" value="重置">
</form>
</body>
</html>
hello.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>登录成功页面</title>
</head>
<body>
登录成功!${name},${pwd}<form action="LoginServlet" method="get"><input type="submit" value="注销登录"></form>
</body>
</html>
LoginServlet.java
package loginDemo;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.*;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
@WebServlet("/LoginServlet")
public class LoginServlet extends javax.servlet.http.HttpServlet {
private static final long serialVersionUID = 1L;
/**
* @see HttpServlet#HttpServlet()
*/
public LoginServlet() {
super();
// TODO Auto-generated constructor stub
}
/**
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doGet(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
HttpSession session = request.getSession();//获取session
Object name = session.getAttribute("name");//从session中获取用户名
Object pwd = session.getAttribute("pwd");//从session获取用户密码
System.out.println(name+":"+pwd); //测试一下,输出获取的用户名和密码
session.invalidate(); //注销session
response.sendRedirect("login.jsp"); //跳转到login.jsp页面
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse
* response)
*/
protected void doPost(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
// doGet(request, response);
// 设置编码为utf-8
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
// 获取用户名和密码
String name = request.getParameter("uname");
String pwd = request.getParameter("pwd");
// 校验用户名和密码是否正确
if ("admin".equals(name) && "123".equals(pwd)) {// 验证成功
HttpSession session = request.getSession();//获取session
session.setAttribute("name", name);// 将用户名和密码保存在session中
session.setAttribute("pwd", pwd);// 将用户名和密码保存在session中
response.sendRedirect("hello.jsp");// 跳转到hello.jsp页面
} else {// 校验不成功,则留在跳转到login.jsp页面
response.sendRedirect("login.jsp");
}
}
@Override
public void destroy() {
super.destroy();
}
}
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<servlet>
<servlet-name>LoginServlet</servlet-name>
<servlet-class>loginDemo.LoginServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>LoginServlet</servlet-name>
<url-pattern>/loginDemo.LoginServlet</url-pattern>
</servlet-mapping>
</web-app>
index.jsp
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<title>$Title$</title>
</head>
<body>
Hello World!
</body>
</html>
实现的图
初始
输入正确后
这里把用户名和密码显示了下
最后的最后,不知道为什么我的控制台有出现乱码,明明开始设置过UTF-8解决了,后来又出现了,头疼,有知道的朋友可以私信教我吗。