企业实训第十三节

package com.zq.controller;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.HashMap;
import java.util.List;
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;

import org.json.JSONObject;

import com.zq.dao.UserDao;
import com.zq.dao.UserDaoImpl;
import com.zq.model.User;

//注解:代替一些配置文件的配置 @WebServlet给前台jsp提供一个访问地址
//http://localhost:8088/MyWeb/user
@WebServlet("/user")
public class UserServlet extends HttpServlet {
    //因为下面每个操作都会实例化这个类,所以写成成员变量
    UserDao userDao = new UserDaoImpl();    
    
    @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("del")){
            //页面保持不动的情况,向后台发一请求,ajax请求,局部刷新,页面不动;
            //如果是<a>超链接的跳转,都是直接整个页面都刷新、跳转了,那种不是ajax请求
            //ajax请求返回前台的只是一个数据结果,不需要跳转页面
            Integer id = Integer.parseInt(req.getParameter("id"));//默认得到String,强制转换类型
            
            boolean isOk = userDao.del(id);            
            //ajax请求来的,需要只返回数据,不跳转页面
            resp.setContentType("text/html;charset=utf-8");//设置页面显示的数据是中文编码方式,不然会乱码
            PrintWriter out = resp.getWriter();
            out.print(isOk?"删除成功":"删除失败");
            out.flush();
            out.close();
        }else if(action.equals("findById")){
            Integer id = Integer.parseInt(req.getParameter("id"));//默认得到String,强制转换类型
            
            User user = userDao.findById(id);
            //user返回到前台,ajax获取到以后,放到编辑页面的具体文本框里
            //user对象是java的类,js没有类这个类型,user转成json格式
            JSONObject userJson = new JSONObject(user);
                
            //ajax请求来的,需要只返回数据,不跳转页面
            resp.setContentType("text/html;charset=utf-8");//设置页面显示的数据是中文编码方式,不然会乱码
            PrintWriter out = resp.getWriter();
            out.print(userJson);
            out.flush();
            out.close();
        }else if(action.equals("save")){
            Integer id = Integer.parseInt(req.getParameter("id"));//默认得到String,强制转换类型
            String username = req.getParameter("username");
            String pwd = req.getParameter("pwd");
            
            User user = new User(id,username,pwd);
            boolean isOk = false;
            
            //做个判断,判断是新增还是修改
            if(id==0){//新增
                isOk = userDao.add(user);        
            }else{
                isOk = userDao.update(user);    
            }
                
            //ajax请求来的,需要只返回数据,不跳转页面
            resp.setContentType("text/html;charset=utf-8");//设置页面显示的数据是中文编码方式,不然会乱码
            PrintWriter out = resp.getWriter();
            out.print(isOk);
            out.flush();
            out.close();
        }else if(action.equals("list")){//如果是登陆操作
            //跳转到user.jsp那个页面上,并且展示出来页面的列表数据(user表里面那3条数据)
            //1、先去数据库查询user表里的所有数据
            List<User> list = userDao.list();
            //2、将查询出的结果返回到jsp页面
            req.setAttribute("list", list);
            //3、跳转到具体jsp页面==user.jsp
            req.getRequestDispatcher("user.jsp").forward(req, resp);
        }else if(action.equals("login")){//如果是登陆操作
            String username = req.getParameter("username");
            String pwd = req.getParameter("pwd");
            
            //改成调用userDao里面login判断是否登陆成功
            boolean isLogin = userDao.login(username, pwd);
            
            if(isLogin){
                //跳转到user.jsp那个页面上,并且展示出来页面的列表数据(user表里面那3条数据)
                //1、先去数据库查询user表里的所有数据
                List<User> list = userDao.list();
                //2、将查询出的结果返回到jsp页面
                req.setAttribute("list", list);
                //3、跳转到具体jsp页面==user.jsp
                req.getRequestDispatcher("user.jsp").forward(req, resp);
                
            }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);
    }
}

<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>

<!DOCTYPE html>

<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <!-- 引入自定义的css样式 --> <link href="public.css" type="text/css" rel="stylesheet" /> <title>首页</title> </head> <body> <img src="img/logBanner.png" style="width:100%;height:100%;"/> <div id="loginDiv"> <p class="logTitle">登录</p> <form action="user" method="post"><!-- action告诉程序你要提交后台servelet类的地址 --> <!-- 填写的的纸质表格的信息,在页面展示都要放上form标签里面 -->

	<!-- 隐藏的文本域,一般用来传递你当前的操作名字, 不需要给客户展示的信息-->
	<!-- 此action自定义的,随便叫啥都行 -->
	<input type="hidden" name="action" value="login" />
	
	<!-- 颜色:#RGB 0-9abcdef -->
	<span style="color:#f00;">${msg }</span>
	
	<div class="formInput">
		<span>用户名</span>
		<!-- input标签用来 type="text"展示文本框的,可以输入的 -->
		<input type="text" name="username" />
	</div>
	<div class="formInput">
		<span>密码</span>
		<!-- input标签用来 password类型看不见输入的字是什么 -->
		<input type="password" name="pwd" />
	</div>
	<input type="submit" class="formButton" value="登陆" />
</form>

</div>

<%-- <!-- 接受别人jsp传来的、servlet类传来的数据 -->

<!-- 1、常用EL表达式 -->

<span>${msg }</span><p></p> <span>${map.name}</span><p></p>

<!-- 2、有点麻烦,最原始的方法 jsp里面内置request、respense这样的对象/类 -->

<span><%=request.getAttribute("msg") %></span> --%>

</body> </html>

转载于:https://my.oschina.net/u/4090474/blog/3060887

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值