软件编程学习吧 关注:14贴子:152
  • 1回复贴,共1

javaEE方面的学习

只看楼主收藏回复

度阿姨
感谢您
没拆楼
给跪了
javaEE


1楼2013-07-18 20:53回复
    servlet
    *servlet的生命周期
    init service 抽象方法 destroy
    这三个方法是servlet的生命周期
    *servlet是单例模式
    *属性的数据是全局数据,如果出现这样的情况,注意线程安全的问题。
    *servlet的缺点
    *在web.xml中配置的文件会很多,这样不利于团队合作
    *servlet类具有容器依赖性
    *如果在servlet中方法很多,结构不好
    if(method.equals("aa")){
    //转向的方法
    }
    * serlvet的重构
    * 减少web.xml的代码量
    做一个转发过滤器
    public void doFilter(ServletRequest request, ServletResponse response,
    FilterChain arg2) throws IOException, ServletException {
    this.request = (HttpServletRequest)request;
    this.response = (HttpServletResponse)response;
    //获取请求路径
    String uri = this.request.getRequestURI();
    /**
    * --/heima6servlet/HelloWorldAction.action
    * 转化成HelloWorldAction
    */
    String actionName = ServletUtils.convert(uri);
    //利用java的反射机制调用该方法
    try {
    Action action = (Action)Class.forName("cn.heima6.action."+actionName).newInstance();
    //forward指定要跳转到的jsp页面
    String forward = action.execute(this.request, this.response);
    /*
    * 跳转的方法
    * * 重定向
    * request里的参数不起作用
    * this.response.sendRedirect(jsp页面);
    * * 转发
    * 放在request作用域里的值可以取出来
    * this.request.getRequestDispatcher("index.jsp").forward(this.request, this.response);
    */
    this.request.getRequestDispatcher("index.jsp").forward(this.request, this.response);
    } catch (InstantiationException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IllegalAccessException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (ClassNotFoundException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    }
    * 把servlet的代码移动到action中,所以程序员只要写action就行了
    *struts2
    *在tomcat启动时,加载三个配置文件
    src/struts-default.xml
    src/struts-plugin.xml
    src/struts.xml
    *在配置文件中
    <package name="prototype" namespace="/prototype" extends="struts-default">
    <action name="prototypeAction" class="cn.heima6.struts2.action.prototype.PrototypeAction">
    <result>successPrototype.jsp</result>
    </action>
    </package>
    package的name表示包的名称,具有唯一性和继承性
    namespace是命名空间。和url相对应。
    extends 继承,在这里,继承了struts-default,所以这个包应该具有struts-default包下的所有的功能
    action表示一个action类,name属性是类的名称,和访问的url对应。
    class属性可以写,也可以不写。如果不写,则默认为ActionSupport
    <default-class-ref class="com.opensymphony.xwork2.ActionSupport"/>
    result中有两个属性name,type
    name的默认值为success
    type的默认值为dispatcher
    dispatcher 转发 可以使用request
    redirect 重定向 request将失去作用
    redirectAction 从action跳转到action。例如可以从LoginAction-->PersonAction
    *在struts2的action中,action是原型模式(不是单例模式)可以通过构造函数进行证明。


    3楼2014-03-10 10:37
    回复