以前用浏览器可以直接访问一个人html文件,直接在dw中打开就可以,浏览器显示地址,但这只是前端。但在后端的java类/方法中能不能直接被浏览器调用呢。这是这节课老师提出的第一个思考问题。答案是可以的,需要借助tomcat服务器加上servelt技术。这就是本节课学习的servelt基本应用的第一个也是最重要的基本应用。
本节课还进行做登录功能,表单:类似我们填的纸质的表一样,在html页面开发时用<form></form>标签来表示。Form标签里面放置具体的项。如果要用下拉列表选择,就用<select></select>标签。
还要将用户名、密码和数据库表中的数据匹配。首先是导入数据库驱动jar包、注册数据库驱动程序、创建数据库链接,其次是执行查询或更新、从结果集中提取数据最后是关闭连接。
这节课最重要的就是第二部分做一个登陆,代码如下。
package com.zq.controller;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
//注解:代替一些配置文件的配置 @WebServlet给前台jsp提供一个访问地址
//http://localhost:8088/MyWeb/user
@WebServlet("/user")
public class UserServlet extends HttpServlet {
@Override
public void doGet(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
//业务逻辑代码
System.out.println("进来了");
//1、获取从前台或从浏览器地址传进来的参数
//HttpServletRequest 里面存有前台传来的参数;可以往前台页面上传数据;执行页面的跳转serlvet类里面跳到某个页面
//HttpServletResponse 主要有个作用可以直接返回数据,不需要跟着页面传输数据
String action = req.getParameter("action");
//null.equals
//http://localhost:8088/MyWeb/user?action=toLogin&username=zq&pwd=123
if(null!=action && action.equals("toLogin")){//从系统上的注销操作,跳转到登陆页面
//跳到页面时,想传递一个数据;第一个参数放传递数据变了的名字,第二个参数传递的数据的值
req.setAttribute("msg", "今天天气真好啊");
//也可以传任何对象Object
Map<String,String> map =new HashMap<String,String>();
map.put("name", "zq");
map.put("age", "22");
req.setAttribute("map", map);
//requst跳转到某个页面代码
req.getRequestDispatcher("index.jsp").forward(req, resp);
}else if(action.equals("delete")){
//页面保持不动的情况,向后台发一请求,ajax请求,局部刷新,页面不动;
//如果是<a>超链接的跳转,都是直接整个页面都刷新、跳转了,那种不是ajax请求
//ajax请求返回前台的只是一个数据结果,不需要跳转页面
resp.setContentType("text/html;charset=utf-8");//设置页面显示的数据是中文编码方式,不然会乱码
PrintWriter out = resp.getWriter();
out.print("删除成功");
out.flush();
out.close();
}else if(action.equals("login")){//如果是登陆操作
String username = req.getParameter("username");
String pwd = req.getParameter("pwd");
if(username.equals("admin") && pwd.equals("123")){
System.out.println("跳转一个系统首页面");
}else{
//跳回到登陆页面,并且告诉登录那个人,你用户名或密码输错了
req.setAttribute("msg", "您的用户名或密码输入错误");
req.getRequestDispatcher("index.jsp").forward(req, resp);
}
}
}
@Override
protected void doPost(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
System.out.println("调用doPost了");
doGet(req, resp);
}
}