- 实现记住密码功能,即用户在第一次登录时输入密码并正常登录后,在以后的一个月的时间内再次访问时不需要填写用户名和密码。
目录
知识讲解:
servlet相关知识:
web.xml 对于WEB应用很重要,作为WEB应用与WEB容器交互的场所,他一定要位于应用的WEB-INF子目录下,我尝试删除了它,就会部署不成功。
<servlet> 节点用来指明servlet逻辑名称与java实现类之间的对应关系。
<servlet-mapping>节点用来指明servlet逻辑名称与java实现类之间的对应关系;
<welcome-file-list>节点指明请求Web应用程序时默认显示的欢迎页面。
详细查阅DTD。
Web容器正式根据.xml文件描述信息来操作web应用的。
可能你的项目下面没有生成.xml文件,一般是没有勾选自动生成.xml 的文件,可以 重新创建servle 在创建的过程中勾选改选项。
发布到服务器上的应用除了要包含自身实现的代码外,还要包括一个XMl文件
XML文件被称为部署描述文件,部署文件中详细的描述了应用中的组建需要调用的容器服务的名称,参数等.
Servlet 的编程接口:
HttpServletRequest 接口代表HttpServlet的请求。
HttpServleetResponse 接口代表HttpServlet返回客服机的响应。
ServletConfig 接口代表Servlet的配置信息。
ServletContext接口代表Servlet运行环境的信息。
ServletException 接口代表servlet运行过程中抛出的意外对象。
RequestDispatcher 接口是请求转发器。可以将客户端请求从一个servlet转发到另外其他的服务器资源,如其他的Servlet,页面等。
Netbeans 8.2 问题及解决办法:
1、新建一个JavaWeb项目:
“文件”->“新建项目”,在“类别”中选“Java Web”节点,在“项目”下选“Web 应用程序”,下一步,定义项目名称和项目位置(随便你取个什么名,放哪边都可以),下一步,服务器一般选用Tomcat(其他的也行),
Java EE版本:一般选Java EE5,下一步,框架:如果你不用框架就直接下一步,如果用,根据你自己需用选用,完成。
2、新建JSP文件:
NetBeans JavaWeb中会自动为用户新建一个index.jsp文件,可以在里面加内容
在项目中新建一个JSP文件: 点击项目名,右击,选“新建”->JSP
3、运行JSP:
a、直接右击你要运行的JSP文件,选“运行文件”
b、运行整个项目,菜单栏“运行”—>“运行项目”或在工具栏中找运行的按钮(但是要注意运行项目的的默认的起始JSP文件是index.jsp,如果要改,在“Web页”->“WEB-INF”->“web.xml”
改:<welcome-file>index.jsp</welcome-file>的“index.jsp”为你想的起始页
或这样改:双击web.xml,在“页面”下,欢迎文件中,通过“浏览”选择你的起始页)
----------------------------------------------------------------
另外:我们一般用Tomcat服务器,在下载NetBeans是时候一般下all版本的,在装NetBeans的时候,的“定制”,勾选上Tomcat,这样就安装啦Tomcat,而且会自动的为我们配置好,如果你单独安装,要在“服务”窗口下选“服务器”右击添加服务器。。。
根据上面的提示,我想新建一个jsp 文件并不行,并抛出了警告
解决办法:
删除原来创建的项目,在创建的项目的时候选择JAVA EE5.----》如下图所示 (JAVA EE 7 WEB 默认是是创建index.html,但是要编写记住密码的程序我会使用java语言,所以必须要用jsp。
开始进入正题:开始些作业了,我真的觉得过程复杂。哼~~!~~
我选择了java ee 5之后,感觉变了很多,.xml文件多了很多,不知道为什么,目前这里还是很迷:
更神奇的是这段代码也有了,原来的找了半天都没有,而且我自己加了这段代码还是显示起初创建的.html页面,造化弄人:
代码:
jsp文件
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme() + "://"
+ request.getServerName() + ":" + request.getServerPort()
+ path + "/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'cookie.jsp' starting page</title>
<link rel="stylesheet" type="text/css" href="styles.css">
<title><欢迎登陆中南民族大学信息门户</title>
<meta charset="UTF-8">
<meta name="viewport" content="text/html; width=device-width,initial-scale=1.0; charset = gb2312">
<style type="text/css">
body{text-align:center }
body{line-height:2}
body {background:url("background.jpg"); background-repeat:no-repeat;background-size: cover }
</style>
</head>
<body>
<center>
<form action="CookieServlet" method="post">
<div> <p align="center" > <font size = "7" >欢迎登陆中南民族大学信息门户</font></p> </div>
<%
String username = null;
String userpwd = null;
Cookie[] cookies = request.getCookies();
for (int i = 0; i < cookies.length; i++) {
if (cookies[i].getName().equals("userinfo")) {
//存着数据(用户名+密码)
username = cookies[i].getValue().split("-")[0];
userpwd = cookies[i].getValue().split("-")[1];
//再一次的存起来(备用)
request.setAttribute("xingming", username);
request.setAttribute("mima", userpwd);
}
}
%>
用户名:
<input style="width:150px;height:20px;background-color:orange;" type="text" name="username" placeholder="请输入用户名"
value="${xingming }" />
<br>
<br>
用户名:
<input style="width:150px;height:20px;background-color:orange;" type="password" name="password" placeholder="请输入密码"
value="${mima }" />
<br>
<br>
<input type="checkbox" name="ck">
记住用户名和密码
<br>
<br>
<input type="submit" value="登陆" />
<br>
<a href ="http://www.scuec.edu.cn/jky/">中南民族大学计算机科学学院</a>
</form>
</center>
</body>
</html>
需要自己选择一张背景图,取名叫background.jpg
servlet对应的java文件:
import static com.sun.corba.se.spi.presentation.rmi.StubAdapter.request;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(value="/CookieServlet")
public class cookie_servlet extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312");
request.setCharacterEncoding("gb2312");
PrintWriter out = response.getWriter();
{
String name = request.getParameter("myName");
String password = request.getParameter("pass");
/* TODO output your page here. You may use following sample code. */
/* out.println("<!DOCTYPE html>");
out.println("<html>");
out.println("<head>");
out.println("<title>Servlet First</title>");
out.println("</head>");
out.println("<body>");
out.println("<L1><B>username</B>:"+
request.getParameter("myName")
+"<L1><B>password</B>:"+"\n"+
request.getParameter("pass"));
out.println("</body>");
out.println("</html>");*/
out.println(
"<BODYBGCOLOR=\"#FDF5E6\">\n"+
"<H1 ALIGN-CENTER>"+"get post data"+"</H1>\n"+
"<UL>\n"+
/* "<L1><B>username</B>:"+
request.getParameter("myName")
+"<L1><B>password</B>:"+"\n"+
request.getParameter("pass")+*/
"</BODY></HTML>");
}
}
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
processRequest(req, resp);
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
processRequest(req, resp);
String username = req.getParameter("username");
String password = req.getParameter("password");
String ck = req.getParameter("ck");
if("on".equals(ck)){
// 构造Cookie对象
// 添加到Cookie中
Cookie cookie = new Cookie("userinfo", username + "-" + password);
// 设置过期时间
cookie.setMaxAge(7*24*60*60);
// 存储
resp.addCookie(cookie);
}
}
}
运行效果:
作业不到要交的一天是写不好的。