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

来源:互联网 发布:怎样开通手机淘宝 编辑:程序博客网 时间:2024/06/08 03:16

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
原创粉丝点击