SHH+maven+SVN+Oracle+tomcat8.0之struts

struts原理:
在一个servlet中实现多个功能
分层次:
dao层增删改查操作
Biz层调用dao层的操作完成需求
action层调用Biz层完成某种操作
本例采用MVC的开发模式
M-Model javaBean以及对javabean的操作
V—View视图,jsp/Html
C-control,Servlet
servlet的作用:
请求数据封装数据
调用service处理业务逻辑
跳转
struts的原理是采用mvc的开发模式把ervlet的业务逻辑抽取出来,并利用配置文件进行全局控制,实现一个servlet对多个action的操作。
struts.xml:

<?xml version="1.0" encoding="UTF-8"?>
<package>
   <action name="login" class="framwork.action.LoginAction"  method="excute">
       <result name="loginSuccess">/success.jsp</result>
       <result name="loginFail">/fail.jsp</result>
   </action>
   <action name="register" class="framwork.action.RegisterAction" method="execute">
       <result name="">/success.jsp</result>
   </action>
</package>

解析xml文件的帮助类actionManager

这里写代码片

实体层:把配置文件设置成两个javabean对象

public class Result {
        public String resultName;
        public String resultPage;
        ...
public class ActionMapping {
    public String actionName;
    public String actionClass;
    public String actionMethod;
    ...

servlet层:调用action层的方法,获取该方法返回值,跳转到指定页面

//第一步:获取那个Uri   
                String reqUri=req.getRequestURI();
                //第二步:取出那个login出来
                String actionName = reqUri.substring(reqUri.lastIndexOf("/")+1,reqUri.indexOf(".action"));
                //第三步:通过名字吧ActionMapping找到
                ActionMapping actionMapping = manager.getActionMapping(actionName);
                //第四步:通过ActionMapping找到类
                String actionClassName=actionMapping.getActionClass();
                //第五步:通过类的名字 通过反射创建对象
                Class clazz=null;
                String returnValue=null;
                    try {
                        //通过类的全路径获取类的字节码对象
                        clazz=Class.forName(actionClassName);
                        //通过字节码对象创建类的对象
                        Object obj=clazz.newInstance();
                        //第六步:获取方法的名称
                        String methodName=actionMapping.getActionMethod();  
                        //第七步:通过类的对象获取里面的方法
                        Method method = clazz.getMethod(methodName,HttpServletRequest.class,HttpServletResponse.class); 
                        //第八步:调用方法给我返回数据
                        returnValue=(String) method.invoke(obj, req,resp);
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                    //第九步:通过返回值找到ActionMapping中对应的那个页面
                    Result result = actionMapping.getResult().get(returnValue);
                    //第十步:通过result找到这个页面 进行跳转
                    String resultPage = result.getResultPage();
                    System.out.println(resultPage);
                    //第十一步:跳转
                    resp.sendRedirect(req.getContextPath()+resultPage);

action层:请求数据,获取传入值,调用biz层

//1、请求数据
                request.getParameter("");
                //2、set数据
                User user = new User();
                //3、访问数据库
                try {
                    //登陆成功
                    userBiz.login(user);
                    return "loginSuccess";
                } catch (Exception e) {
                    //登录失败
                    return "loginFail";
                }

Biz层:

public interface UserBiz {
        User login(User user);
        boolean register(User user);

}

dao层:对数据库进行增删改查的操作

public interface IUserDao {
    User findUserExitsOfNot(User user);

    boolean saveUser(User user);

}

结论:使用struts框架,可以不用每个action斗创建一个servlet,编写的代码量变少了。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值