修改myEclipse自带的tomcat发布端口

首先到你的MyEclipse文件下去搜索server.xml 这个文件

修改这个文件里面的一个参数

<Connector port="8080" protocol="HTTP/1.1"

               connectionTimeout="20000"

               redirectPort="8443" />


2.在Myeclipse中,在(工具栏吧叫做,就是有File Edit 的那一行),选window -> Preferences -> Myeclipse -> Servers -> Integrated Sandbox -> Myeclipse Tomcat 6修改相应端口号

posted @ 2012-05-29 21:52 youngturk 阅读(5172) | 评论 (2)编辑 收藏

request.getParameterMap()得到form页面所有值

example:
    
<@global.dialogBegin title="转栈申请审批"/>
<form id="declare_form" method="post" action="${webroot}/delivery/receive!verify.do">    
    
<input type="hidden" name="id" id="rowId">    
    
<label>审核结果:</label><br/><input type="radio" id="yard_confirm_flag" name="yardConfirmFlag" value="Y">同意转栈申请<input type="radio" id="yard_confirm_flag" name="yardConfirmFlag" value="N">拒绝转栈申请<br/>
    
<br/><label>审核意见:</label><br/><textarea name="yardConfirmComment" id="yard_confrim_comment" style="width:90%;height:60px;overflow:hidden;">同意转栈申请,等待海关审核</textarea><br/>
</form>    
<@global.dialogEnd button="审批"/>

  
DeliveryMainIndex.java 

private String yardConfirmComment ;

public String getYardConfirmComment() {
  
return yardConfirmComment;
 }


 
public void setYardConfirmComment(String yardConfirmComment) {
  
this.yardConfirmComment = yardConfirmComment;
 }


DeliveryMainIndex obj = (DeliveryMainIndex)this.bindRequestToBean(DeliveryMainIndex.class);

    public Object bindRequestToBean(Class clazz){
        Object obj 
= null ;
        
try {
            obj 
= clazz.newInstance();            
            BeanUtils.populate(obj, request.getParameterMap());//获取ftl所有值,将其转化成实体bean
        }
 catch (InstantiationException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
 catch (IllegalAccessException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }
 catch (InvocationTargetException e) {
            
// TODO Auto-generated catch block
            e.printStackTrace();
        }

        
return obj ;
    }









posted @ 2012-05-29 09:53 youngturk 阅读(1825) | 评论 (2)编辑 收藏

增加表列项 alter table

alter table test add ( test_column varchar2(20) )
comment on column test_column is 'test'

posted @ 2012-05-28 13:54 youngturk 阅读(207) | 评论 (0)编辑 收藏

heap,stack的区别

example:
Point p1 = new Point(1,2);
Point p2 = new Point(3,4);

p2 = p1 ; 此时 是p2指针的内容指向了p1,p1和p2的内容相等,但是p1的地址可能是1000,p2的地址是2000,p1,p2地址内容值都指向同一内容(1,2),此时(1,2)是heap,p2和p1的地址存向stack
Point p3 = null;
p3.moveto(1,2)此时报错,p3没对象;

posted @ 2012-05-28 08:45 youngturk 阅读(167) | 评论 (0)编辑 收藏

视频学习的第一个springMVC原创

     摘要: 首先我将所有需要的文件引入: Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->loging.jsp${error}  <body>    <form metho...  阅读全文

posted @ 2012-05-26 13:05 youngturk 阅读(1266) | 评论 (1)编辑 收藏

Method 类中 invoke方法的调用

public void invokeActionHandler(ModelAndView mv , HttpServletRequest request) throws Exception{
        String className 
= mv.getClassName();
        String methodName 
= mv.getMethodName();
        
//load class
        Class controllerClass = cache.loadClass(className);//== Class.forName(className);java反射机制,jvm加载lassName类
        Class parentControllerClass = cache.loadClass(baseControllerClass);//class org.bluechant.mvc.controller.Controller
        
//load method参数1类,创建一个方法为setRequest参数为HttpServletRequest.class的方法与method = clazz.getDeclaredMethod(setRequest, HttpServletRequest.class);与HttpServletRequest的setRequest方法一致的方法.
        Method setRequest = cache.loadMethod(parentControllerClass, "setRequest"new Class[] { HttpServletRequest.class });    //HttpServletRequest.class,java的反射机制得到自己的类,能够拥有自己的方法值,(Method setRequest获取成员函数)
        Method setModelAndView = cache.loadMethod(parentControllerClass, "setModelAndView"new Class[] { ModelAndView.class });//org.bluechant.mvc.controller.Controller-setModelAndView@6024418  public void org.bluechant.mvc.controller.Controller.setModelAndView(org.bluechant.mvc.controller.ModelAndView)
        Method targetMethod = cache.loadMethod(controllerClass, methodName, new Class[]{});
        
//buiid controller instance and invoke target method以上setRequest,setModelAndView,targetMethod都放在cache(hashMap中)
        Object instance = controllerClass.newInstance();//加载className类
        setRequest.invoke(instance, new Object[] { request });//对带有指定参数的指定对象调用由此 Method 对象表示的基础方法    
        setModelAndView.invoke(instance, new Object[] { mv });//instance立即为原型指针
        targetMethod.invoke(instance, new Object[]{});    
        
//调用instance类中targetMethod这个方法,Object[]{}这个作为参数..
        
//invoke根据实体获得方法,添加所要造的参数,就是个找实例的方法克隆工厂,由Method获得实例模型,由方法锻造样子,传入参数得出想要结果
    }


方法说明实例:


}
class ClassB{
 public ClassB(){
  System.out.println("this is ClassB");
 }

 public Object invokeMehton(Object owner,String methodName,Object[] args) throws Exception{
                  //根据methodName获得owner里面的方法。args是对应方案参数。
  Class wnerClass=owner.getClass();
  Class[] argsClass=new Class[args.length];
  for(int i=0,j=args.length;i<j;i++){
    argsClass[i] = args[i].getClass();
  }
  Method method = ownerClass.getMethod(methodName, argsClass); 
  return method.invoke(owner, args);
 }
}

输出为
this is ClassB
300
outabccc

说明c调用Class方法成功。


import java.lang.reflect.Method;

public class ClassA {
        //ClassA里面有add、和StringAdd两个不同方法。c是ClassB的Object
 ClassB c=new ClassB();
 public void add(Integer param1, Integer param2) {  
  
    System.out.println(param1 + param2);  
   
   }
 public void StringAdd(String abc){
  System.out.println("out"+abc);
 }
 public static void main(String[] args){
  ClassA a=new ClassA();
  try {
   a.c.invokeMehton(a, "add",new Object[] {new Integer(100),new Integer(200)});//反射调用方法add
   a.c.invokeMehton(a, "StringAdd",new Object[] {new String("abccc")});//反射调用方法StringAdd
  } catch (Exception e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  
  
  
 }


 



posted @ 2012-05-24 18:54 youngturk 阅读(594) | 评论 (0)编辑 收藏

java连接数据库(第一步)

需要联系的几个文件:DaosupportController,extents Controller,BeanFactory,CoreDispatcherController,appcontext.xml.
有web.xml中
<servlet>
        <!-- servlet获得控制文件Class的名字,类名 -->
  <servlet-name>smvcCoreDispatcher</servlet-name>
  <servlet-class>org.bluechant.mvc.core.CoreDispatcherController</servlet-class>
.....
</servlet>
有CoreDispatcherController开始-->

public void invokeActionHandler(ModelAndView mv , HttpServletRequest request) throws Exception{
        String className 
= mv.getClassName();
        String methodName 
= mv.getMethodName();
        
//load class
        Class controllerClass = cache.loadClass(className);//== Class.forName(className);java反射机制,jvm加载lassName类
        Class parentControllerClass = cache.loadClass(baseControllerClass);//class org.bluechant.mvc.controller.Controller
        
//load method参数1类,创建一个方法为setRequest参数为HttpServletRequest.class的方法与method = clazz.getDeclaredMethod(setRequest, HttpServletRequest.class);与HttpServletRequest的setRequest方法一致的方法.
        Method setRequest = cache.loadMethod(parentControllerClass, "setRequest"new Class[] { HttpServletRequest.class });    //HttpServletRequest.class,java的反射机制得到自己的类,能够拥有自己的方法值,(Method setRequest获取成员函数)
        Method setModelAndView = cache.loadMethod(parentControllerClass, "setModelAndView"new Class[] { ModelAndView.class });//org.bluechant.mvc.controller.Controller-setModelAndView@6024418  public void org.bluechant.mvc.controller.Controller.setModelAndView(org.bluechant.mvc.controller.ModelAndView)
        Method targetMethod = cache.loadMethod(controllerClass, methodName, new Class[]{});
        
//buiid controller instance and invoke target method以上setRequest,setModelAndView,targetMethod都放在cache(hashMap中)
        Object instance = controllerClass.newInstance();//加载className类;//此方法引入数据库连接 
        //以上刚进入页面的时候instance调用三个类初始化,分别是继承关系DaosupportController ,controller,和BeanFactory
        /*--->>>其中DaoSupportController类中protected ObjectDao dao = (ObjectDao)BeanFactory.getBean("objectDao");
        --->>>调用:getBean 方法public class BeanFactory {
            public static ApplicationContext context = new ClassPathXmlApplicationContext("appcontext.xml") ;//此方法引入数据库连接                                        
            public static Object getBean(String beanId) {
                return context.getBean(beanId);
            }
        }
*/

        setRequest.invoke(instance, 
new Object[] { request });//对带有指定参数的指定对象调用由此 Method 对象表示的基础方法    
        setModelAndView.invoke(instance, new Object[] { mv });//instance立即为原型指针
//        --->>>执行指定的targetMethod方法实则为AccountController的login()登陆方法此时开始调用数据库
        targetMethod.invoke(instance, new Object[]{});    
        
//调用instance类中targetMethod这个方法,Object[]{}这个作为参数..
        
//invoke根据实体获得方法,添加所要造的参数,就是个找实例的方法克隆工厂,由Method获得实例模型,由方法锻造样子,传入参数得出想要结果
    }

}



posted @ 2012-05-24 16:49 youngturk 阅读(192) | 评论 (0)编辑 收藏

java下Class.forName的作用是什么,为什么要使用它

Class.forName(xxx.xx.xx) 返回的是一个类

首先你要明白在java里面任何class都要装载在虚拟机上才能运行。这句话就是装载类用的(和new 不一样,要分清楚)。 

至于什么时候用,你可以考虑一下这个问题,给你一个字符串变量,它代表一个类的包名和类名,你怎么实例化它?只有你提到的这个方法了,不过要再加一点。 
A a = (A)Class.forName("pacage.A").newInstance(); 
这和你 
A a = new A(); 
是一样的效果。 

关于补充的问题 
答案是肯定的,jvm会执行静态代码段,你要记住一个概念,静态代码是和class绑定的,class装载成功就表示执行了你的静态代码了。而且以后不会再走这段静态代码了。

Class.forName(xxx.xx.xx) 返回的是一个类 
Class.forName(xxx.xx.xx);的作用是要求JVM查找并加载指定的类,也就是说JVM会执行该类的静态代码段

动态加载和创建Class 对象,比如想根据用户输入的字符串来创建对象 
String str = 用户输入的字符串 
Class t = Class.forName(str); 
t.newInstance();

 在初始化一个类,生成一个实例的时候,newInstance()方法和new关键字除了一个是方法,一个是关键字外,最主要有什么区别?它们的区别在于创建对象的方式不一样,前者是使用类加载机制,后者是创建一个新类。那么为什么会有两种创建对象方式?这主要考虑到软件的可伸缩、可扩展和可重用等软件设计思想。 

Java中工厂模式经常使用newInstance()方法来创建对象,因此从为什么要使用工厂模式上可以找到具体答案。 例如: 
class c = Class.forName(“Example”); 
factory = (ExampleInterface)c.newInstance(); 

其中ExampleInterface是Example的接口,可以写成如下形式: 
String className = "Example"; 
class c = Class.forName(className); 
factory = (ExampleInterface)c.newInstance(); 

进一步可以写成如下形式: 
String className = readfromXMlConfig;//从xml 配置文件中获得字符串 
class c = Class.forName(className); 
factory = (ExampleInterface)c.newInstance(); 

上面代码已经不存在Example的类名称,它的优点是,无论Example类怎么变化,上述代码不变,甚至可以更换Example的兄弟类Example2 , Example3 , Example4……,只要他们继承ExampleInterface就可以。 

从JVM的角度看,我们使用关键字new创建一个类的时候,这个类可以没有被加载。但是使用newInstance()方法的时候,就必须保证:1、这个类已经加载;2、这个类已经连接了。而完成上面两个步骤的正是Class的静态方法forName()所完成的,这个静态方法调用了启动类加载器,即加载 java API的那个加载器。 

现在可以看出,newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。 这样分步的好处是显而易见的。我们可以在调用class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。 

最后用最简单的描述来区分new关键字和newInstance()方法的区别: 
newInstance: 弱类型。低效率。只能调用无参构造。 
new: 强类型。相对高效。能调用任何public构造。

posted @ 2012-05-24 14:32 youngturk 阅读(200) | 评论 (0)编辑 收藏

web.xml中 filter解析

AdminFilter.java:
package org.bluechant.mvc.filter;

import java.io.IOException;

import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import org.bluechant.mvc.core.GlobalSources;

/**
 * 
@author CHAOS
 * @date 2012-02-28 12:49
 * filter for check wheather user already login in ,
 * if not , send redirect to the login page 
 * if already login , forward user's request to the target request URL
 
*/

public class AdminFilter implements Filter 
    
    
private String loginPage ;
    
    
private String loginAction ;
    
    
private String userLoginTag ;
    
//FilterConfig可用于访问Filter的配置信息
    private FilterConfig config;

    
//执行过滤的核心方法
    public void doFilter(ServletRequest req, ServletResponse res,
            FilterChain chain) 
throws IOException, ServletException {
        
        HttpServletRequest request 
= (HttpServletRequest) req;
        HttpServletResponse  response 
= (HttpServletResponse )res;
        HttpSession session 
= request.getSession(true);

        
//获取客户请求的页面
        String urlPath = request.getServletPath();
        
//如果session范围的user为null,即表明没有登录
        
//且用户请求的既不是登录页面,也不是处理登录的页面if( session.getAttribute("user") == null

        
boolean flag = needNotFilter(urlPath);
        
//不需要进行拦截的页面
        if(!flag){
            Object obj 
= session.getAttribute(userLoginTag);
            System.out.println(
"the session userLoginTag value is :"+obj);
            
if(obj!=null){
                flag 
= true ;
            }

        }

        
if(flag){
            chain.doFilter(req, res);
        }
else{
            
//拦截不通过的时候跳转到的目标//forward到登录页面
            response.sendRedirect(request.getContextPath()+loginPage);
        }

    }

    
//只有在”/login.html“ || “/account!login.do” 情况下才进行拦截通过,否则拦截不通过跳到登陆页面
    private boolean needNotFilter(String urlPath){
        
if(urlPath.endsWith(loginPage) || urlPath.endsWith(loginAction)){
            
return true ;
        }

        
return false ;
    }


    
/**
     * init params
     
*/

    
public void init(FilterConfig config) throws ServletException {
        loginPage 
= config.getInitParameter("loginPage");
        loginAction 
= config.getInitParameter("loginAction");
        userLoginTag 
= config.getInitParameter("userLoginTag");
        System.out.println(
"the loginPage value is :"+loginPage);
        System.out.println(
"the loginAction value is :"+loginAction);
        System.out.println(
"the userLoginTag value is :"+userLoginTag);
        
this.config = config;
        
//以前页面登陆的时候session进行设置HttpSession session = request.getSession(true);
        
//session.setAttribute(GlobalSources.user_login_tag, user);
        GlobalSources.user_login_tag = userLoginTag ;//session放到GlobalSources,bean里,
用GlobalSources.user_login_tag获得

    }


    
public void destroy(){
        
        
this.config = null;
    }


}


web.xml中对应filter文件:
 <filter>
      <filter-name>adminFilter</filter-name>
      <filter-class>org.bluechant.mvc.filter.AdminFilter</filter-class>
          <init-param>
               <param-name>loginAction</param-name>
               <param-value>/account!login.do</param-value>
          </init-param>
          <init-param>
               <param-name>loginPage</param-name>
               <param-value>/login.html</param-value>
          </init-param>
          <init-param>
               <param-name>userLoginTag</param-name>
               <param-value>account_login_check</param-value>
          </init-param>  
 </filter>
 
 <filter>
          <filter-name>userSourceFilter</filter-name>
          <filter-class>org.bluechant.mvc.filter.AccountRoleFilter</filter-class>
 </filter>
 
 <filter-mapping>
          <filter-name>adminFilter</filter-name>
          <url-pattern>*.do</url-pattern><!-- 表明凡是访问跳转*.do形式的跳转,都要运行名字为adminFilter的过滤器 -->
 </filter-mapping>
 
 <filter-mapping>
          <filter-name>userSourceFilter</filter-name>
          <url-pattern>*.do</url-pattern>
 </filter-mapping>

posted @ 2012-05-24 10:40 youngturk 阅读(889) | 评论 (0)编辑 收藏

web.xml filter声明过滤器

过滤器可截取和修改进入一个servlet或JSP页面的请求或从一个servlet或JSP页面发出的相应。在执行一个 servlet或JSP页面之前,必须执行第一个相关的过滤器的doFilter方法。在该过滤器对其FilterChain对象调用doFilter 时,执行链中的下一个过滤器。如果没有其他过滤器,servlet或JSP页面被执行。过滤器具有对到来的ServletRequest对象的全部访问权,因此,它们可以查看客户机名、查找到来的cookie等。为了访问servlet或JSP页面的输出,过滤器可将响应对象包裹在一个替身对象(stand-in object)中,比方说把输出累加到一个缓冲区。在调用FilterChain对象的doFilter方法之后,过滤器可检查缓冲区,如有必要,就对它进行修改,然后传送到客户机。
    <filter>
        
<filter-name>adminFilter</filter-name>
        
<filter-class>org.bluechant.mvc.filter.AdminFilter</filter-class><!--服务器部署的时候,adminFilter开始加载初始化-->
        
<init-param>
            
<param-name>loginAction</param-name>
            
<param-value>/account!login.do</param-value>
        
</init-param>
        
<init-param>
            
<param-name>loginPage</param-name>
            
<param-value>/login.html</param-value>
        
</init-param>
        
<init-param>
            
<param-name>userLoginTag</param-name>
            
<param-value>account_login_check</param-value>
        
</init-param>        
    
</filter>
    
    
<filter>
        
<filter-name>userSourceFilter</filter-name>
        
<filter-class>org.bluechant.mvc.filter.AccountRoleFilter</filter-class>
    
</filter>
    
    
<filter-mapping>
        
<filter-name>adminFilter</filter-name>
        
<url-pattern>*.do</url-pattern><!-- 表明凡是访问跳转*.do形式的跳转,都要运行名字为adminFilter的过滤器 -->
    
</filter-mapping>
    
    
<filter-mapping>
        
<filter-name>userSourceFilter</filter-name>
        
<url-pattern>*.do</url-pattern>
    
</filter-mapping>
    <!--接着顺序加载servlet被初始化-->

posted @ 2012-05-23 22:31 youngturk 阅读(644) | 评论 (1)编辑 收藏

仅列出标题
共33页: First 上一页 13 14 15 16 17 18 19 20 21 下一页 Last 
<2024年11月>
272829303112
3456789
10111213141516
17181920212223
24252627282930
1234567

导航

统计

公告

this year :
1 jQuery
2 freemarker
3 框架结构
4 口语英语

常用链接

留言簿(6)

随笔分类

随笔档案

文章分类

文章档案

相册

EJB学习

Flex学习

learn English

oracle

spring MVC web service

SQL

Struts

生活保健

解析文件

搜索

最新评论

阅读排行榜

评论排行榜