我的第一个javaweb项目优化

一:servlet3.0实现代码优化(优化配置文件)

 

使用注解@WebServlet(urlPatters="/请求地址")代替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">
  <display-name>Archetype Created Web Application</display-name>
   <!--1.登录-->
      <servlet>
          <servlet-name>loginuser</servlet-name>
          <servlet-class>
              web.LoginServlet
          </servlet-class>
      </servlet>
      <servlet-mapping>
          <servlet-name>loginuser</servlet-name>
          <url-pattern>/login</url-pattern>
      </servlet-mapping>
 
    <!--2.退出-->
    <servlet>
        <servlet-name>loginout</servlet-name>
        <servlet-class>
            web.LoginOutServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>loginout</servlet-name>
        <url-pattern>/loginout</url-pattern>
    </servlet-mapping>
 
    <!--3.查询全部-->
    <servlet>
        <servlet-name>selectall</servlet-name>
        <servlet-class>
            web.SelectUsersServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>selectall</servlet-name>
        <url-pattern>/selectusers</url-pattern>
    </servlet-mapping>
 
    <!--4.真删除-->
    <servlet>
        <servlet-name>deletebyid</servlet-name>
        <servlet-class>
            web.DeleteUsersServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>deletebyid</servlet-name>
        <url-pattern>/deleteuser</url-pattern>
    </servlet-mapping>
 
    <!--5.假删除-->
    <servlet>
        <servlet-name>delete</servlet-name>
        <servlet-class>
            web.DeleteByIdServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>delete</servlet-name>
        <url-pattern>/deletebyid</url-pattern>
    </servlet-mapping>
 
    <!--6.主键查询-->
    <servlet>
        <servlet-name>selectbyid</servlet-name>
        <servlet-class>
            web.SelectByIdServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>selectbyid</servlet-name>
        <url-pattern>/selectbyid</url-pattern>
    </servlet-mapping>
 
    <!--7.更新操作-->
    <servlet>
        <servlet-name>update</servlet-name>
        <servlet-class>
            web.UpdateUserServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>update</servlet-name>
        <url-pattern>/updateuser</url-pattern>
    </servlet-mapping>
 
    <!--8.新增操作-->
    <servlet>
        <servlet-name>add</servlet-name>
        <servlet-class>
            web.AddUserServlet
        </servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>add</servlet-name>
        <url-pattern>/adduser</url-pattern>
    </servlet-mapping>
</web-app>

这些代码将被删除,在每个servlet处理类中加入注解,替代他们

@WebServlet(urlPatterns = "/usersServlet")

name属性:

设置servlet的对象名

initParams属性:

设置初始化参数,在init()中获取数据的

这个属性是替代了web.xml文件中的标签

<servlet>
        <servlet-name>aa</servlet-name>
        <servlet-class>
            com.yhp.web.LoginServlet
        </servlet-class>
        <init-param>
            <param-name>a1</param-name>
            <param-value>张三的初始化参数</param-value>
        </init-param>
    </servlet>

  初始化参数案例

package com.yhp.web;

import com.yhp.bean.Users;
import com.yhp.service.UsersService;
import com.yhp.service.impl.UsersServiceImpl;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebInitParam;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;

@WebServlet(urlPatterns = "/login",name = "loginservlet",initParams = {
        @WebInitParam(name = "a1",value = "张三的初始化参数"),
        @WebInitParam(name="a2",value = "abcd")  //初始化参数是在servlet的init方法中获取
},loadOnStartup = 2)
public class LoginServlet extends HttpServlet {
    public LoginServlet() {
        System.out.println("loginservlet---2");
    }

    //  重写方法时,二选一,1.重写service()   2.重写doGet()和doPost()
    @Override
    public void init(ServletConfig config) throws ServletException {
        //获得初始化参数
        String a1_value = config.getInitParameter("a1");
        String a2_value = config.getInitParameter("a2");
        System.out.println(a1_value+","+a2_value+"--->init()");
    }

    @Override
    protected void service(HttpServletRequest request, HttpServletResponse resp) throws ServletException, IOException {
        //1.接参数(记得处理编码方式)
        request.setCharacterEncoding("utf-8");
        String username = request.getParameter("username");//要和表单中的name值相同
        String userpass = request.getParameter("userpass");
        //2.写逻辑(面向接口编程)
        UsersService usersService=new UsersServiceImpl();
        Users u = usersService.login(username, userpass);
        //3.返结果
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        if(u==null){
            //登录失败(在后端返回给前端一个js弹窗)-如果使用js,则不要再使用重定向或转发的形式跳页面
            //location.href 属于重定向跳转页面
            writer.print("<script type='text/javascript'>alert('用户名或密码不正确');location.href='index.jsp'</script>");
        }else{
            //登录成功
            HttpSession session = request.getSession();
            session.setAttribute("u1",u);
            writer.print("<script type='text/javascript'>alert('登录成功');location.href='success.jsp'</script>");
        }

    }

}

loadOnStartup属性:

设置启动的优先级 

@WebServlet(urlPatterns = "/loginout",loadOnStartup = 1)

默认属性的值是-1,用户指定时,给正整数,且正整数越小,优先级越高

加完这个属性后,当前类的对象就会在服务器启动时,创建对象

设置优先级案例

package com.yhp.web;

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 javax.servlet.http.HttpSession;
import java.io.IOException;

@WebServlet(urlPatterns = "/loginout",loadOnStartup = 1)
public class LoginOutServelet  extends HttpServlet {

    public LoginOutServelet() {
        System.out.println("loginout---1");
    }

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //清除session,跳转页面
        HttpSession session = req.getSession();
        session.invalidate();
        //跳转index.jsp页面
        resp.sendRedirect("index.jsp");
    }
}

使用上面的注解,可以简化web.xml的内容,但是也不要删除web.xml

二:合并servlet(后端部位为主)

 合并代码

 统一请求名为/usersServlet

修改所有请求格式:/usersServlet?key=请求名
package com.yhp.web;

import com.yhp.bean.Users;
import com.yhp.service.UsersService;
import com.yhp.service.impl.UsersServiceImpl;
import com.yhp.util.PageUtil;
import com.yhp.util.myPageUtilsPlus;

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 javax.servlet.http.HttpSession;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.List;

//所以操作users表的请求都走这个处理类
@WebServlet(urlPatterns = "/usersServlet")
public class UsersServlet extends HttpServlet {
    //定义处理请求的新增方法
    protected void adduser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接参数
        //req.setCharacterEncoding("utf-8");
        String uname = req.getParameter("uname");
        String usex = req.getParameter("usex");
        String uage = req.getParameter("uage");
        String upass = req.getParameter("upass");
        //2.调逻辑
        UsersService usersService=new UsersServiceImpl();
        Users users = new Users();
        users.setUsername(uname);
        users.setSex(usex);
        users.setAge(Integer.parseInt(uage));
        users.setPassword(upass);
        int i = usersService.insert(users);
        //3.返结果
        resp.setContentType("utf-8");
        resp.setCharacterEncoding("utf-8");
        PrintWriter writer = resp.getWriter();
        if (i>0) {

            writer.println("<script type='text/javascript'>alert('用户添加成功');location.href='/usersServlet?key=selectusers&pageIndex=1'</script>");
        }else {

            writer.println("<script type='text/javascript'>alert('用户添加失败');location.href='/add.jsp'</script>");
        }
    }
    //定义处理请求的假删除方法
    protected void deletebyid(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接参数
        String userid = (String) req.getParameter("userid");
        int uid = Integer.parseInt(userid);
        //2.写逻辑
        UsersService usersService=new UsersServiceImpl();
        int i = usersService.deleteByid(uid);
        //3.返结果
        resp.setContentType("utf-8");
        resp.setCharacterEncoding("utf-8");
        PrintWriter writer = resp.getWriter();
        if (i>0){
            //删除成功   注意,不可以用重定向list.jsp
            //deleteservlet->location.href->selectusersservlet->list.jsp
            writer.println("<script type='text/javascript'>alert('用户删除成功');location.href='usersServlet?key=selectusers&pageIndex=1'</script>");
        }else {
            //删除失败
            writer.println("<script type='text/javascript'>alert('用户删除失败');location.href='usersServlet?key=selectusers&pageIndex=1'</script>");
        }
    }
    //定义处理请求的真删除方法
    protected void deleteuser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接参数
        String userid = req.getParameter("userid");
        //2.调逻辑
        UsersService usersService = new UsersServiceImpl();
        int i = usersService.deleteUser(Integer.parseInt(userid));
        //3.返结果
        resp.setContentType("utf-8");
        resp.setCharacterEncoding("utf-8");
        PrintWriter writer = resp.getWriter();
        if (i>0){
            //删除成功   注意,不可以用重定向list.jsp
            //deleteservlet->location.href->selectusersservlet->list.jsp
            writer.println("<script type='text/javascript'>alert('用户删除成功');location.href='/usersServlet?key=selectusers&?pageIndex=1'</script>");
        }else {
            //删除失败
            writer.println("<script type='text/javascript'>alert('用户删除失败');location.href='/usersServlet?key=selectusers&pageIndex=1'</script>");
        }
    }
    //定义处理请求的退出方法
    protected void loginout(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //清除session,跳转页面
        HttpSession session = req.getSession();
        session.invalidate();
        //跳转目标页面
        resp.sendRedirect("index.jsp");
    }
    //定义处理请求的登录方法
    protected void login(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接参数
        //req.setCharacterEncoding("utf-8");
        String username = req.getParameter("username");//要和表单的name值相同
        String userpass =req.getParameter("userpass");
        //2.写逻辑(面向接口编程)
        UsersService usersService =new UsersServiceImpl();
        Users u = usersService.login(username, userpass);
        //3.返结果
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        if (u==null){
            //登录失败(在后端给前端返回一个弹窗-若用js,就不要再用重定向或转发跳页面了否则405错误)
            //location.href是属于重定向跳转页面
            writer.print("<script type='text/javascript'>alert('用户名或密码不正确');location.href='index.jsp'</script>");

        }else {
            //登录成功
            HttpSession session = req.getSession();
            session.setAttribute("u1",u);
            writer.print("<script type='text/javascript'>alert('登录成功');location.href='success.jsp'</script>");
        }
    }
    //定义处理请求的id查询方法
    protected void selectbyid(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接参数
        String userid = req.getParameter("userid");
        //2.调方法
        UsersService service =new UsersServiceImpl();
        Users users =service.selectbyid(Integer.parseInt(userid));
        //3.返结果
        req.setAttribute("user",users);
        req.getRequestDispatcher("update.jsp").forward(req,resp);
    }
    //定义处理请求的全查方法
    protected void selectusers(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接参数
        //req.setCharacterEncoding("utf-8");
        String pageIndex = req.getParameter("pageIndex");
        //如果没有接收到pageindex,默认查询第一页
        int index = pageIndex==null?1:Integer.parseInt(pageIndex);//页码值
        //接收模糊查询条件
        String uname = req.getParameter("uname");
        String usex = req.getParameter("usex");
        //2.写逻辑
        UsersService usersService =new UsersServiceImpl();
        List<Users> users = usersService.selectALL(index, PageUtil.PAGESIZE,uname,usex);
        //每页展示数据时,不够一页,也会独占一页位置
        //10/5=2页,11/5=2...1  /3页。
        //总页数=总条数%每页显示条数>0?总条数/每页显示条数+1:总条数/每页显示条数
        int total = usersService.totalCount(uname,usex);//总条数
        //int totalPages=total%PageUtil.PAGESIZE>0?total/PageUtil.PAGESIZE+1:total/PageUtil.PAGESIZE;//总页数
        //3.返结果(后端给前端传数据,必然涉及存值问题,4个作用域选择request)
        myPageUtilsPlus<Users> usersmyPageUtilsPlus = new myPageUtilsPlus<>();
        usersmyPageUtilsPlus.setPageIndex(index);
        usersmyPageUtilsPlus.setTotalCount(total);
        //usersmyPageUtilsPlus.setTotalPages(totalPages);
        usersmyPageUtilsPlus.setDataList(users);
        //存储分页的条件
        req.setAttribute("pu",usersmyPageUtilsPlus);
        //存储模糊查询条件
        req.setAttribute("username",uname);
        req.setAttribute("usersex",usex);
        req.getRequestDispatcher("/list.jsp").forward(req,resp);
    }
    //定义处理请求的更新方法
    protected void updateuser(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接参数+处理post请求的乱码
        //req.setCharacterEncoding("utf-8");
        String uid = req.getParameter("uid");
        String uname = req.getParameter("uname");
        String usex = req.getParameter("usex");
        String uage = req.getParameter("uage");
        String upass = req.getParameter("upass");
        //2.写逻辑
        UsersService usersService=new UsersServiceImpl();
        Users users = new Users();
        users.setUserid(Integer.parseInt(uid));
        users.setUsername(uname);
        users.setSex(usex);
        users.setAge(Integer.parseInt(uage));
        users.setPassword(upass);
        int i = usersService.UpdateUser(users);
        //3.返结果
        resp.setContentType("utf-8");
        resp.setCharacterEncoding("utf-8");
        PrintWriter writer = resp.getWriter();
        if (i>0) {
            //更新成功 回到展示用户列表的页面(不能直接跳回到list.jsp,而是需要重新发送新的请求,间接走到list.jsp)
            writer.println("<script type='text/javascript'>alert('用户更新成功');location.href='/usersServlet?key=selectusers&pageIndex=1'</script>");
        }else {
            //更新失败 回到更新页面update.jsp(不能直接跳回到update.jsp,而是需要重新发送新的请求,间接走到update.jsp)
            writer.println("<script type='text/javascript'>alert('用户更新失败');location.href='/usersServlet?key=selectbyid&userid="+uid+"'</script>");
        }
    }
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        req.setCharacterEncoding("utf-8");
        String key =req.getParameter("key");
        switch(key){
            case "adduser":
                //执行新增方法
                adduser(req,resp);
                break;
            case "deletebyid":
                //执行假删除方法
                deletebyid(req,resp);
                break;
            case "deleteuser":
                //执行真删除方法
                deleteuser(req,resp);
                break;
            case "loginout":
                //执行退出方法
                loginout(req,resp);
                break;
            case "login":
                //执行登录方法
                login(req,resp);
                break;
            case "selectbyid":
                //执行id查询方法
                selectbyid(req,resp);
                break;
            case "selectusers":
                //执行全查方法
                System.out.println("执行全查的方法--servlet");
                selectusers(req,resp);
                break;
            case "updateuser":
                //执行更新方法
                updateuser(req,resp);
                break;
        }
    }
}

修改页面请求名 

 success.jsp

<%@ page import="com.yhp.bean.Users" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    Users u1 =(Users) session.getAttribute("u1");
%>
<h1>success.jsp,欢迎您:<%=u1==null?"":u1.getUserName()%>
  <a href="/usersServlet?key=loginout">退出</a>
</h1>
<input type="button" value="查询用户列表" onclick="javascript:location.href='/usersServlet?key=selectusers&pageindex=1'">

</body>
</html>

list.jsp 

<%@ page import="com.yhp.bean.Users" %>
<%@ page import="java.util.List" %>
<%@ page import="com.yhp.util.PageUtilPlus" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
    <style type="text/css">
        span{ border: 1px solid black}
        a{ text-decoration: none}
    </style>
</head>
<body>
<%
    Users u1 =(Users) session.getAttribute("u1");
%>
    <h1>list.jsp,欢迎您:<%=u1==null?"":u1.getUserName()%></h1>
   <%
     /*  List<Users> ulist = (List<Users>)request.getAttribute("ulist");
       int pindex=(Integer)request.getAttribute("pindex");
       int totalcount = (Integer)request.getAttribute("totalcount");
       int totalpages =(Integer) request.getAttribute("totalpages");*/
       PageUtilPlus<Users> pu=(PageUtilPlus)request.getAttribute("pu");
       //得到模糊查条件
       String username = (String)request.getAttribute("username");
       username=(username==null?"":username);
       String usersex = (String)request.getAttribute("usersex");
       usersex=(usersex==null?"":usersex);
   %>
    <div><input type="button" value="新增" onclick="javascript:location.href='add.jsp'"></div>
     <div>
          <form action="/usersServlet?key=selectusers" method="post">
              姓名:<input type="text" name="uname" value="<%=username%>">&nbsp;&nbsp;&nbsp;&nbsp;
              性别: <select name="usex">
                            <option value="noselect" <%="noselect".equals(usersex)?"selected":""%>>请选择</option>
                            <option value="男" <%="男".equals(usersex)?"selected":""%>>男</option>
                            <option value="女" <%="女".equals(usersex)?"selected":""%>>女</option>
                    </select>
                <input type="submit" value="查询"/>
          </form>

     </div>
    <table border="1" cellspacing="0" width="500">
        <tr>
            <td>用户编号</td>
            <td>用户姓名</td>
            <td>用户性别</td>
            <td>用户年龄</td>
            <td>用户密码</td>
            <td>操作</td>
        </tr>
        <%for(Users u:pu.getDataList()){%>
            <tr>
                <td><%=u.getUserId()%></td>
                <td><%=u.getUserName()%></td>
                <td><%=u.getSex()%></td>
                <td><%=u.getAge()%></td>
                <td><%=u.getPassWord()%></td>
                <td> <a href="/usersServlet?key=deleteuser&userid=<%=u.getUserId()%>">删除</a>
                    <a href="/usersServlet?key=deleteuser&userid=<%=u.getUserId()%>">假删除</a>
                    <a href="/usersServlet?key=selectbyid&userid=<%=u.getUserId()%>">修改</a>  </td>
            </tr>
        <% } %>
        <tr>
            <td colspan="6">
                <a href="/usersServlet?key=selectusers&pageindex=1&uname=<%=username%>&usex=<%=usersex%>">首页</a>
                <a href="/usersServlet?key=selectusers&pageindex=<%=pu.getPageIndex()-1<=1?1:pu.getPageIndex()-1%>&uname=<%=username%>&usex=<%=usersex%>">上一页</a>
                <%for(int i=1;i<=pu.getTotalPages();i++){%>
                <a href="/usersServlet?key=selectusers&pageindex=<%=i%>&uname=<%=username%>&usex=<%=usersex%>"><span><%=i%></span></a> &nbsp;&nbsp;
                <%}%>
                <a href="/usersServlet?key=selectusers&pageindex=<%=pu.getPageIndex()+1>=pu.getTotalPages()?pu.getTotalPages():pu.getPageIndex()+1%>&uname=<%=username%>&usex=<%=usersex%>">下一页</a>
                <a href="/usersServlet?key=selectusers&pageindex=<%=pu.getTotalPages()%>&uname=<%=username%>&usex=<%=usersex%>">尾页</a>
                <br>
                当前页:<%=pu.getPageIndex()%>,
                总页数:<%=pu.getTotalPages()%>,
                总条数:<%=pu.getTotalCount()%>
            </td>
        </tr>
    </table>


</body>
</html>

 update.jsp


<html>
<head>
    <title>Title</title>
</head>
<body>
<%
    Users user = (Users) request.getAttribute("user");
%>
   <h1>update.jsp</h1>
<form action="/usersServlet?key=updateuser" method="post">
    userid:<input type="text" name="uid" readonly value="<%=user.getUserId()%>"><br>
    username:<input type="text" name="uname" value="<%=user.getUserName()%>"><br>
    sex:<input type="radio" name="usex" value="男" <%="男".equals(user.getSex())?"checked":""%>>男
        <input type="radio" name="usex" value="女" <%="女".equals(user.getSex())?"checked":""%>>女 <br>
    age:<input type="text" name="uage" value="<%=user.getAge()%>"><br>
    password:<input type="text" name="upass" value="<%=user.getPassWord()%>"><br>
    <input type="submit" value="提交">
</form>

</body>
</html>

 add.jsp

<html>
<head>
    <title>Title</title>
</head>
<body>
   <h1>add.jsp</h1>
   <form action="/usersServlet?key=adduser" method="post">
       username:<input type="text" name="uname" ><br>
       sex:<input type="radio" name="usex" value="男" >男
       <input type="radio" name="usex" value="女" >女 <br>
       age:<input type="text" name="uage" ><br>
       password:<input type="text" name="upass" ><br>
       <input type="submit" value="保存">
   </form>

</body>
</html>

三:使用EL表达式JSTL标签库优化页面代码 

 原来jsp的问题

jsp使用小脚本嵌套了java代码,使得jsp既要展示数据,又要编写业务逻辑,嵌套java代码 

优化方式:

使用EL表达式和JSTL标签库替代页面中的java代码 

 EL表达式

语法: ${key/变量名} 

 el表达式展示的数据,一定是来源于PageContext,request,Session,application这四个作用域中的

作用:展示数据 

<%
       pageContext.setAttribute("k1","pageContext的内容");
       // Object obj=pageContext.getAttribute("k1");
       Users users = new Users();
       users.setUserName("赵丽颖");
       users.setPassWord("123abc");
       pageContext.setAttribute("u1",users);
       //list集合
       List list=new ArrayList();
       list.add("abc");
       list.add(123456);
       list.add(users);
       pageContext.setAttribute("datalist",list);
       //map集合
       Map map=new HashMap();
       map.put("my","my_value");
       pageContext.setAttribute("mymap",map);
       // set  -无序,只能使用循环遍历数据,需要结合jstl一起才能展示数据
   %>
  pageContext的内容是: ${k1}<br>
  算术运算符:10+20=${10+20}<br/>
  对象数据:username=${u1.userName},password=${u1.passWord}<br>
  支持三目运算符:${u1.userName=="赵丽颖"?"我是赵丽颖":"我不是"}<br>
  集合数据:${datalist[0]}--${datalist[1]}--${datalist[2].userName}<br>
  map:${mymap.my}

 ps:el如果读取过程中出现空值,则空值是空字符串:“”

作用域问题 

<h1>当不同作用域中,存储相同key时,数据如何读取?</h1>
<%
    pageContext.setAttribute("k2","pageContext的内容----k2");
    session.setAttribute("k2","session的内容----k2");
    application.setAttribute("k2","application的内容----k2");
    request.setAttribute("k2","request的内容----k2");
    //此时相同的key,el表达式在获取数据时,默认按照:pageContext->request->session->application  的范围顺序取值
    //如果想要获得特定环境下的值,可以加作用域:pageScope,requestScope,sessionScopt,applicationScope
    // ${作用域.key}
%>
<h1>k2=${applicationScope.k2}</h1>

 支持数据类型的自动转换

原来:String str=(String) request.getAttribute("k1");
      Integer.parseInt(str);

 el表达式:${k1} -取出后,识别为数值

<%
    pageContext.setAttribute("age","23");
%>
age=${age+10}

关于el表达式的范例 

<%@ page import="com.yhp.bean.Users" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.Map" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>el_text</title>
</head>
<body>
<%
    pageContext.setAttribute("k1","pageContext内容");
    //   Object obj=pageContext.getAttribute("k1");
    Users users = new Users();
    users.setUsername("龙傲天");
    users.setPassword("1234");
    pageContext.setAttribute("u1",users);
    //集合
    List list=new ArrayList();
    list.add("abc");
    list.add(123456);
    list.add(users);
    pageContext.setAttribute("datalist",list);
    //map集合
    Map map=new HashMap();
    map.put("my","my_value");
    pageContext.setAttribute("mymap",map);
    //set  -无序,只能使用循环遍历数据,徐亚结合jstl一起才能展示数据
%>
pageContext的内容是:${k1}<br>
算数运算符:10+20=${10+20}<br/>
对象数据:username=${u1.username},password=${u1.password}<br>
支持三目运算符:${u1.username=="龙傲天"?"我是龙傲天":"我不是龙傲天"}<br>
集合数据 : ${datalist[0]}--${datalist[1]}--${datalist[2].username}<br>
map : ${mymap.my}

<h1>当不同作用域中,存储相同key时,数据如何读取?</h1>
<%
    pageContext.setAttribute("k2","pageContext的内容-----k2");//1优先级
    session.setAttribute("k2","session的内容-----k2");//3
    application.setAttribute("k2","application的内容------k2");//4
    request.setAttribute("k2","request的内容------k2");//2
    //此时相同的key,el表达式在获取数据时,默认按照:pageContext->request->session->application  的范围顺序取值
    //如果想要获得特定环境下的值,可以加作用域:pageScope,requestScope,sessionScopt,applicationScope
    // ${作用域.key}
%>
<h1>k2=${applicationScope.k2}</h1>
<hr>
<%
    pageContext.setAttribute("age","23");
%>
age=${age+10}

</body>
</html>

 测试结果

 

JSTL标签库优化页面代码

该标签库主要的作用在于对页面中循环,判断结构的支持

使用步骤

1.添加依赖包

2.在页面中引入标签库 

<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>

3. 标签库内容:判断<c:if test="判断条件">

  <%
           pageContext.setAttribute("age",26);
       %>
   <c:if test="${age<18}">
       未成年
   </c:if>
   <c:if test="${age>=18 && age<30}">
        青年
   </c:if>
    <c:if test="${age>=30 && age<40}">
           壮年
    </c:if>

判断-if-else结构: 

  <c:choose>
          <c:when test="${age<18}">
              when-未成年
          </c:when>
        <c:when test="${age<30}">
             when-青年
        </c:when>
        <c:otherwise>
            when-壮年
        </c:otherwise>
    </c:choose>

循环 

<c:forEach items="被遍历的集合" var="每次取出的数据所存的变量名" varStatus=“自定义变量名” >
    <%
           Set set=new HashSet();
           set.add("zhangsan");
           set.add(123.78);
           set.add(123);
           pageContext.setAttribute("myset",set);
       %>
<c:forEach items="${myset}" var="s"  varStatus="sta">
    ${sta.index}==${sta.count}==>s=${s}<br>
</c:forEach>

varStatus 用来配置行号或下标

${sta.count}

${sta.index}

循环输出数值

<c:forEach begin="1"  end="100" var="num">
    ${num},
</c:forEach>

JSTL案例

<%@ page import="java.util.Set" %>
<%@ page import="java.util.HashSet" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>jstl_text</title>
</head>
<body>
    <h1>判断</h1>
    <%
        pageContext.setAttribute("age",29);
    %>
    <c:if test="${age<18}">
        未成年
    </c:if>
    <c:if test="${age>=18&& age<30}">
        青年
    </c:if>
    <c:if test="${age>=30 && age<40}">
        壮年
    </c:if>
<hr>
  <c:choose>
      <c:when test="${age<18}">
        when-未成年
      </c:when>
      <c:when test="${age<30}">
        when-青年
      </c:when>
      <c:otherwise>
        when-壮年
      </c:otherwise>
  </c:choose>
<h1>循环</h1>
    <%
        Set set=new HashSet();
        set.add("张三");
        set.add(123.54);
        set.add(123);
        pageContext.setAttribute("myset",set);
    %>
  <c:forEach items="${myset}" var="s" varStatus="sta">
      ${sta.index}下标下的第${sta.count}个值==>s=${s}<br>
  </c:forEach>
<h1>输出1-100的值</h1>
<c:forEach begin="1" end="100" var="num">
    ${num},

</c:forEach>
</body>
</html>

 四:优化项目代码(优化小脚本)

  success.jsp 

<%@ page import="com.yhp.bean.Users" %>
<%@ page import="com.yhp.util.PeopleUtil" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--<%--%>
<%--    Users u1=(Users) session.getAttribute("u1");--%>
<%--%>--%>
<%--   <h1>登录成功,欢迎您:<%=u1==null?"":u1.getUsername()%>--%>
     <h1>登录成功,欢迎您:${sessionScope.u1.username},当前在线人数:<%=PeopleUtil.PEOPLE_ON_LINE%>
       <a href="/usersServlet?key=loginout">退出</a>
   </h1>
<%--第一个参数用?拼接后面用&--%>
<input type="button" value="查询用户列表" onclick="javascript:location.href='/usersServlet?key=selectusers&pageIndex=1'">
</body>
</html>

 list.jsp 

</head>
<body>
<%--<%--%>
<%--    Users u1=(Users) session.getAttribute("u1");--%>
<%--%>--%>
<%--<h1>列表页面,欢迎您:<%=u1==null?"":u1.getUsername()%></h1>--%>
        <h1>列表页面,欢迎您:${sessionScope.u1.username}
            <a href="/usersServlet?key=loginout">退出</a></h1>
    <%
//      //得到模糊查条件  key=username,usersex
        //分页数据: key=pu
    %>
    <div>
        <input type="button" value="新增" onclick="javascript:location.href='add.jsp'">
    </div>
    <div>
        <form action="/usersServlet?key=selectusers" method="post">
            姓名:<input type="text" name="uname" value="${username}">&nbsp;&nbsp;
            性别:<select name="usex">
                      <option value="请选择" ${usersex=="请选择"?"selected":""}>请选择</option>
                      <option value="男"${usersex=="男"?"selected":""}>男</option>
                      <option value="女"${usersex=="女"?"selected":""}>女</option>
                </select>
            <input type="submit" value="查询">
        </form>
    </div>
    <table border="1" cellspacing="0" width="500">
        <tr>
            <td>用户编号</td>
            <td>用户姓名</td>
            <td>用户性别</td>
            <td>用户年龄</td>
            <td>用户密码</td>
            <td>操作</td>
        </tr>
            <c:forEach items="${pu.dataList}"  var="u">
            <tr>
                <td>${u.userid}</td>
                <td>${u.username}</td>
                <td>${u.sex}</td>
                <td>${u.age}</td>
                <td>${u.password}</td>
                <td> <a href="/usersServlet?key=deleteuser&userid=${u.userid}">删除</a>
                    <a href="/usersServlet?key=deletebyid&userid=${u.userid}">假删除</a>
                    <a href="/usersServlet?key=selectbyid&userid=${u.userid}">修改</a> </td>
            </tr>
            </c:forEach>
        <tr>
            <td colspan="6">
                <a href="/usersServlet?key=selectusers&pageindex=1&uname=${username}&usex=${usersex}">首页</a>
                <a href="/usersServlet?key=selectusers&pageIndex=${pu.pageIndex-1<=1?1:pu.pageIndex-1}&uname=${username}&usex=${usersex}">上一页</a>
                <c:forEach begin="1" end="${pu.totalPages}" var="i">
                   <a href="/usersServlet?key=selectusers&pageIndex=${i}&uname=${username}&usex=${usersex}">${i}</a>&nbsp;&nbsp;
                </c:forEach>
                <a href="/usersServlet?key=selectusers&pageIndex=${pu.pageIndex+1>=pu.totalPages?pu.totalPages:pu.pageIndex+1}&uname=${username}&usex=${usersex}">下一页</a>
                <a href="/usersServlet?key=selectusers&pageIndex=${pu.totalPages}&uname=${username}&usex=${usersex}">尾页</a><br>
                当前页:${pu.pageIndex},
                总页数:${pu.totalPages},
                总条数:${pu.totalCount}>
            </td>
        </tr>
    </table>
</body>
</html>

  update.jsp

<%@ page import="com.yhp.bean.Users"%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--<%--%>
<%--   Users user= (Users) request.getAttribute("user");--%>
<%--%>--%>
<h1>update.jsp登录成功,欢迎您:${sessionScope.u1.username}
    <a href="/usersServlet?key=loginout">退出</a></h1>
   <form action="/usersServlet?key=updateuser" method="post">
      userid:<input type="text" name="uid" readonly value="${user.userid}"><br>
      username:<input type="text" name="uname" value="${user.username}"><br>
      sex:<input type="radio" name="usex" value="男" ${"男"==user.sex?"checked":""}>男
       <input type="radio" name="usex" value="女" ${"女"==user.sex?"checked":""}>女<br>
      age:<input type="text" name="uage" value="${user.age}"><br>
      password:<input type="text" name="upass" value="${user.password}"><br>
       <input type="submit" value="提交按钮">
   </form>
</body>
</html>

五:过滤器与监听器

过滤器一:统一编码方式 

package com.yhp.filter;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;

public class MyFilter01 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("filter--1初始化方法");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("filter--1执行的方法--开始");
        //设置编码类型
        HttpServletRequest request=(HttpServletRequest)servletRequest;
        request.setCharacterEncoding("utf-8");
        //调取下一个filter或者servlet
        filterChain.doFilter(servletRequest, servletResponse);
        System.out.println("filter--1执行的方法--结束");
    }

    @Override
    public void destroy() {
        System.out.println("filter--1销毁的方法");
    }
}

过滤器二:提示用户登录 

package com.yhp.filter;

import com.yhp.bean.Users;

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MyFilter02 implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
        System.out.println("filter--2初始化方法");
    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        System.out.println("filter--2执行的方法--开始");
        //验证用户是否登录
        //防止用户在未登录的情况下访问限定页面
        HttpServletRequest request = (HttpServletRequest) servletRequest;
        HttpServletResponse response = (HttpServletResponse) servletResponse;
        String uri = request.getRequestURI();//请求地址
        System.out.println("uri=" + uri);

        //活的session中的用户信息
        Users users = (Users) request.getSession().getAttribute("u1");
        if (users == null) {
            //未登录,提示用户登录
            //对一些资源放行
            String key = request.getParameter("key");
            if("index.jsp".endsWith(uri)||"login".equals(key)||"/favicin.ico".endsWith(uri)){
                filterChain.doFilter(servletRequest, servletResponse);
            } else {
                //response.sendRedirect("index.jsp");死循环,重定向会修改页面地址
                request.getRequestDispatcher("index.jsp").forward(request, response);
            }

         }else {
                    filterChain.doFilter(servletRequest, servletResponse);//调取下一个filter或目标servlet
                }
               System.out.println("filter--2执行的方法--结束");
    }

        @Override
        public void destroy () {
            System.out.println("filter--2销毁的方法");
        }
    }

 监听器:监听在线人数

package com.yhp.bean;
import com.yhp.util.PeopleUtil;
import javax.servlet.http.HttpSessionBindingEvent;
import javax.servlet.http.HttpSessionBindingListener;

//类名=表名,列名=属性名
public class Users implements HttpSessionBindingListener {
    private Integer userid;
    private String username;
    private Integer age;
    private String sex;
    private String password;
    private Integer status;

    public Users() {
    }

    public Users(Integer userid, String username, Integer age, String sex, String password, Integer status) {
        this.userid = userid;
        this.username = username;
        this.age = age;
        this.sex = sex;
        this.password = password;
        this.status = status;
    }

    @Override
    public String toString() {
        return "Users{" +
                "userid=" + userid +
                ", username='" + username + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", password='" + password + '\'' +
                ", status=" + status +
                '}';
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getUserid() {
        return userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    @Override//当session和当前类对象绑定时,自动调取(session.setAttribute())
    public void valueBound(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("当session和当前类对象绑定");
        PeopleUtil.PEOPLE_ON_LINE++;
    }

    @Override//当session和当前类对象解绑时,自动调取(session.setRemoveAttribute()或session.invalide())
    public void valueUnbound(HttpSessionBindingEvent httpSessionBindingEvent) {
        System.out.println("当session和当前类对象解绑");
        PeopleUtil.PEOPLE_ON_LINE--;

    }
}

过滤器栈 

允许多个过滤器同时存在,各自配置各自的作用代码

web.xml文件中filter和filter-mapping标签的顺序,决定了filter执行的顺序 

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">
    <filter>
        <filter-name>f1</filter-name>
        <filter-class>
            com.yhp.filter.MyFilter01
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>f1</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <filter>
        <filter-name>f2</filter-name>
        <filter-class>
            com.yhp.filter.MyFilter02
        </filter-class>
    </filter>
    <filter-mapping>
        <filter-name>f2</filter-name>
        <url-pattern>/*</url-pattern>
    </filter-mapping>

    <listener>
        <listener-class>com.yhp.bean.Users</listener-class>
    </listener>
</web-app>

过滤器执行顺序与在xml文件的顺序有关

 六json+ajax

json对象与java对象之间的转换——使用工具类

package com.test;
//类名=表名,列名=属性名
public class Users  {
    private Integer userid;
    private String username;
    private Integer age;
    private String sex;
    private String password;
    private Integer status;

    public Users() {
    }

    public Users(Integer userid, String username, Integer age, String sex, String password, Integer status) {
        this.userid = userid;
        this.username = username;
        this.age = age;
        this.sex = sex;
        this.password = password;
        this.status = status;
    }

    @Override
    public String toString() {
        return "Users{" +
                "userid=" + userid +
                ", username='" + username + '\'' +
                ", age=" + age +
                ", sex='" + sex + '\'' +
                ", password='" + password + '\'' +
                ", status=" + status +
                '}';
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Integer getUserid() {
        return userid;
    }

    public void setUserid(Integer userid) {
        this.userid = userid;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }


    }
package com.test;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

public class Testjson {
    public static void main(String[] args) {
        //单个对象
        Users users1=new Users(1,"张三",18,"男","1111",0);
        //把这个java对象转成json格式
        JSONObject jsonObject = JSONObject.fromObject(users1);
        System.out.println(jsonObject);
        //json转换成java
        String str = "{'age':18,'password':'1111','sex':'男','status':0,'userid':1,'username':'张三'}";
        JSONObject json_str = JSONObject.fromObject(str);
        Users o = (Users) JSONObject.toBean(json_str, Users.class);
        System.out.println("o="+o);
        //对象集合
        List list=new ArrayList();
        for (int i =0;i<3;i++){
            Users u = new Users(1+i,"张三"+i,18+i,"男","1111",0);
            list.add(u);
        }
        //list-->json
        JSONArray jsonArray = JSONArray.fromObject(list);
        System.out.println("jsonArray="+jsonArray);
        //json-->list
        System.out.println("-----------------");
        String arraystr="[{'age':18,'password':'1111','sex':'男','status':0,'userid':1,'username':'张三0'},"+
                "{'age':19,'password':'1111','sex':'男','status':0,'userid':2,'username':'张三1'},"+
                "{'age':20,'password':'1111','sex':'男','status':0,'userid':3,'username':'张三2'},]\n";
        JSONArray json_array = JSONArray.fromObject(arraystr);
        List<Users> ulist = (List<Users>) JSONArray.toCollection(json_array, Users.class);
        for (Users users : ulist) {
            System.out.println(users);
        }
    }
}

 阿贾克斯ajax

同步与异步的区别

 

案例:验证用户名是否存在 

​
package com.yhp.web;

import com.yhp.service.UsersService;
import com.yhp.service.impl.UsersServiceImpl;

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.io.PrintWriter;

@WebServlet(urlPatterns = "/chekuname")
public class ChekUserNameServlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //1.接参数
        String uname = req.getParameter("uname");
        //判断该名字是否存在
        resp.setContentType("text/html;charset=utf-8");
        PrintWriter writer = resp.getWriter();
        //验证用户名是否存在的方法
        UsersService usersService=new UsersServiceImpl();
        boolean checkuser = usersService.checkuser(uname);
        if (checkuser){
            //用户名已经存在
            //在使用ajax时不需要考虑调页面,默认调回ajax发送的页面
            writer.print("用户名已存在");

        }else {
            //用户名可用
            writer.print("用户名可用");

        }
    }
}

​

 项目优化:验证用户名是否存在

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title></title>
    <script type="text/javascript" src="js/jquery-1.8.3.min.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#username").blur(function(){//当用户名失去焦点时
                //1.获取用户输入的信息
                var sname = $(this).val();
                //2.将这个value值发送给服务器,去做验证
                $.ajax({
                    url:"/chekuname",//请求地址
                    type:"post",//请求方式
                    data:"uname="+sname,//传输的数据
                    dataType:"text",//返回的格式
                    //returndata是自定义参数变量,用来接收返回的结果
                    success:function (returndata) {//执行成功后的回调函数
                        $("#rs").html(returndata)
                    }
                });
            });
        })
    </script>
    <style type="text/css">
        span{color: #ff0000
        }
    </style>
</head>
<body>
    <h1>add.jsp登录成功,欢迎您:${sessionScope.u1.username}
        <a href="/usersServlet?key=loginout">退出</a>></h1>
     <form action="/usersServlet?key=adduser" method="post">
         username:<input type="text" id="username" name="uname"><span id="rs"></span><br>
         sex:<input type="radio" name="usex" value="男">男
         <input type="radio" name="usex" value="女">女<br>
         age:<input type="text" name="uage"><br>
         password:<input type="text" name="upass"><br>
         <input type="submit" value="保存">
     </form>
</body>
</html>

 在数据层,业务层添加方法与实现类

package com.yhp.dao;

import com.yhp.bean.Users;

import java.util.List;

public interface UsersDao {
    //登录方法(根据用户名和密码查询用户信息)
    public Users login(String username,String pass);
    //查询全部
    public List<Users> selectALL(int pageIndex,int size,String uname,String usex);
    //查询总条数
    public int totalCount(String uname,String usex);
    //删除(根据userid)
    public int deleteUser(int userid);
    //假删除(根据userid)
    public int deleteByid(int userid);
    //主键查询
    public Users selectbyid(int userid);
    //更新
    public int UpdateUser(Users users);
    //添加(新增)用户
    public int insert(Users users);
    //用户名已经存在
    public boolean checkuser(String name);
}
package com.yhp.service;

import com.yhp.bean.Users;

import java.util.List;

public interface UsersService {
    //登录方法(根据用户名和密码查询用户信息)
    public Users login(String username, String pass);
    //查询全部(参数:页码值,每页显示条数,模糊查询条件1.模糊查询条件2)
    public List<Users> selectALL(int pageIndex,int size,String uname,String usex);
    //查询总条数
    public int totalCount(String uname,String usex);
    //删除(根据userid)
    public int deleteUser(int userid);
    //假删除(根据userid)
    public int deleteByid(int userid);
    //主键查询
    public Users selectbyid(int userid);
    //更新
    public int UpdateUser(Users users);
    //添加(新增)用户
    public int insert(Users users);
    //用户名已经存在
    public boolean checkuser(String name);
}
package com.yhp.service.impl;

import com.yhp.bean.Users;
import com.yhp.dao.UsersDao;
import com.yhp.dao.impl.UsersDaoImpl;
import com.yhp.service.UsersService;

import java.util.List;

public class UsersServiceImpl implements UsersService {
    UsersDao usersDao =new  UsersDaoImpl();
    @Override
    public Users login(String username, String pass) {
        return usersDao.login(username,pass);
    }

    @Override
    public List<Users> selectALL(int pageindex,int size,String uname,String usex) {
        return usersDao.selectALL(pageindex,size,uname,usex);
    }

    @Override
    public int totalCount(String uname,String usex) {
        return usersDao.totalCount(uname,usex);
    }

    @Override
    public int deleteUser(int userid) {
        return usersDao.deleteUser(userid);
    }

    @Override
    public int deleteByid(int userid) {
        return usersDao.deleteByid(userid);
    }

    @Override
    public Users selectbyid(int userid) {
        return usersDao.selectbyid(userid);
    }

    @Override
    public int UpdateUser(Users users) {
        return usersDao.UpdateUser(users);
    }

    @Override
    public int insert(Users users) {
        return usersDao.insert(users);
    }

    @Override
    public boolean checkuser(String name) {
        return usersDao.checkuser(name);
    }
}

dao实现类 

 @Override
    public boolean checkuser(String name) {
        try {
            String sql="select * from users where username=?";
            List params=new ArrayList();
            params.add(name);
            resultSet=selectDB(sql,params);
            if (resultSet.next()){
                return true;
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }finally {
            closeAll();
        }
        return false;
    }

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值