要求:
清空缓存刷新:ctrl+F5 (点开网页就用)
一、创建
src下建个软件包,右键New-》Create New Servlet-》前缀名字改一下,创建成功
import下面@Web...改成
@WebServlet(urlPatterns = "/login")
二、和html网页绑定
html:与之前做的登录界面(代码见前端大作业-Bootstrap)中的<form>//表单,内有数据。 进行绑定
改为
<form action="/login" method="post">
(post/doPost:网址那块不会显示账号密码隐私数据(安全一丢丢))
因此接下来代码也是在doPost中写
登录按钮也要有触发登录(提交)
<button type="submit" ....>
输入框部分:
<input ...最后加 name="username"> 设立键,与输入的值绑定。
passwd密码也同理
java:
获取:String username=request.getParameter("username");
符合逻辑时跳转到指定页面(账户密码错误返回登录页,正确返回主页面):
request.getRequestDispatcher("main.html").forward(request,response);
三、文件的访问
other软件包的两个类可以参考javaIO流大作业,用到文件工具类Filework和地址的预存放CardConfig(建类导入代码简单改改就行)
LoginServlet.java加个判断即可。
代码:LoginServlet.java部分,运行后网址+ /login.html ,输入正确就跳转main.html
package org.spoto.servlet;
import org.spoto.servlet.other.CardConfig;
import org.spoto.servlet.other.Filework;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.List;
@WebServlet(urlPatterns = "/login")
public class LoginServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
String username=request.getParameter("username");
String passwd=request.getParameter("passwd");
System.out.println(username+" "+passwd);
List<String> list= Filework.get(CardConfig.fileusers);
if(list==null){
System.out.println("系统异常,请联系管理员");
return;
}else {
String data=username+"-"+passwd;
boolean type=false;
for(String s:list){
if(s.equals(data)){
type=true;
break;
}
}
if(type==true){
//main
request.getRequestDispatcher("main.html").forward(request,response);
}else {
//login
request.getRequestDispatcher("login.html").forward(request,response);
}
}
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
}
}
注:提交乱码解决方法(放对应void doPost/doGet中)
post:request.setCharacterEncoding("UTF-8");
get: parameter//要改的变量名=new String(parameter.getBytes("iso8859-1"),"utf-8");