概述
接着上一篇javaWEB简单商城项目(四),这一章开始写界面方面的JSP,采用MVC方式,这一篇就是对JSTL标签的学习和MVC的学习以及搭建一个MVC的框架
一.JSTL标签
JSP标准标签库(JSTL)是一个JSP标签集合,它封装了JSP应用的通用核心功能。
JSTL支持通用的、结构化的任务,比如迭代,条件判断,XML文档操作,国际化标签,SQL标签。 除了这些,它还提供了一个框架来使用集成JSTL的自定义标签。
1.Apache Tomcat安装JSTL 库
从Apache的标准标签库中下载的二进包(jakarta-taglibs-standard-current.zip)。下载地址:http://archive.apache.org/dist/jakarta/taglibs/standard/binaries/
下载jakarta-taglibs-standard-1.1.1.zip 包并解压,将jakarta-taglibs-standard-1.1.1/lib/下的两个jar文件:standard.jar和jstl.jar文件拷贝到/WEB-INF/lib/下。
使用任何库,你必须在每个JSP文件中的头部包含标签。
2.使用JSTL库
首先导入标签库,核心标签库前缀是c,其次还有格式化标签库fmt,SQL标签库sql
uri="http://java.sun.com/jsp/jstl/core" %>
然后就可以像使用html标签一样使用JSTL标签了,具体标签使用可以参考网w3cschool.cc
二.mvc简介
1.javaWEB的MVC
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,对于javaWEB来说,就是JSP只处理界面,servlet只处理请求,javaBean只处理数据,就如下图所示.
2.实现基于MVC方式的用户列表
javaBean在之前的文章中都封装好了,那么现在就应该先写用户的请求处理.
这里的写法类似前面的DAO层的写法,我们都知道Servlet的service()方法决定了请求会调用post还是get或者其他的方法,如果我们想让请求调用我们自己的方法,我们就在父类中覆盖service()方法.
因此BaseServlet可以这样写,不过这里我们需要统一定义,如果请求user.do?method=list 那么就会调用list方法,显示用户列表
同时定义当返回值way前缀为 client:的时候则是客户端跳转,否则需要采用服务器端跳转
import com.util.DaoUtil;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
/** * Created by nl101 on 2016/2/29. */
public class BaseServlet extends HttpServlet {
/** * 重写service方法,用反射的方法决定子类要调用的函数 */
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//使用依赖注入
DaoUtil.daoInject(this);
//下面的代码决定子类调用相应的函数
String method = req.getParameter("method");//获取要调用函数的名字
try {
if (method!=null && !method.equals("")){
Method m = this.getClass().getMethod(method,HttpServletRequest.class,HttpServletResponse.class);
String way = (String) m.invoke(this,req,resp);
String skipPre = "client:";//客户端跳转标识
if (way.startsWith(skipPre)){//客户端形式跳转
resp.sendRedirect("/WEB-INF/"+way.substring(skipPre.length()));
}else {//服务器端跳转
RequestDispatcher rd = req.getRequestDispatcher("/WEB-INF/"+way);
rd.forward(req,resp);
}
}
} catch (NoSuchMethodException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
调用都由父类解决了,那么我们的子类就会很简单,子类只负责取出数据,存入请求中,然后决定跳转页面
import com.dao.UserDao;
import com.model.Dao;
import com.model.Pager;
import com.model.User;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/** * Created by nl101 on 2016/2/29. */
public class UserServlet extends BaseServlet {
private UserDao userDao;
/** * 使用依赖注入实现这个注入,依赖注入请看(四),这里也正好体现了依赖注入的方便 *@param userDao */
@Dao
public void setUserDao(UserDao userDao) {
this.userDao = userDao;
}
/** * 显示用户列表界面 */
public String list(HttpServletRequest req, HttpServletResponse resp){
Pager pagers = userDao.find(null,null,null);//查询出所有的用户
req.setAttribute("pagers",pagers);//把所有的用户存储到请求中
return "user/list.jsp";//返回要显示的页面
}
}
此时我们对应的JSP页面就更简单了,里面使用了一些JSTL标签,可以参考下
用户列表用户列表
ID | USERNAME | PASSWORD | NICKNAME | TYPE | 操作 |
---|---|---|---|---|---|
${u.id} | ${u.username} | ${u.password} | ${u.nickname} | 管理员 用户 | 查看 修改 删除 |
最后就是改造分页框架了,之前写分页框架的时候没有用JSTL标签,现在只需要再原来的基础上稍作修改即可.关于分页框架,可以看前面的文章,这里不细说了
首页
上一页
[${pageNumber}]
${pageNumber}
下一页
尾页
效果图:
MVC总结
下面写注册页面,登录页面等和用户相关的页面,那么只需要在UserServlet中增加相应的方法即可,比如我想写添加用户,那么只需要添加一个add方法,然后请求的时候method=add,这样就可以直接跳转到add页面了,相比以前的写法逻辑更加清晰,写起来更加方便
下一篇学习使用sitemesh并且封装BeanUtil
最后
以上就是喜悦康乃馨为你收集整理的商城Java项目一般几个月_javaWEB简单商城项目(五)用户列表的全部内容,希望文章能够帮你解决商城Java项目一般几个月_javaWEB简单商城项目(五)用户列表所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复