随笔-23  评论-0  文章-5  trackbacks-0
 

 

在开放过程中有时候工作环境不编译文件,解决方案如下:
1、确保 project->build automatically 已经被选上。

2、如果选上了也不好使, 使用这一招: project->clean..->选第2个clean select project,,勾上start build immediatelly。

3、删除现在的项目,提前设置好编译文件输出路径,重新导入源文件,设置MyEclipse为保存时编译,然后在保存的时候就可以自动编译了。

4、如果项目里引了某个不用的jar包,而那个包又被你删了,就会出现不报错但怎么也编译不出来class文件的情 况,可以把所有包都删除,然后一个一个的再引入(需要的),不要一下子把所有包都引入来,没用的可能会引起不良后果。

5、想删掉某个class文件重新生成,删除class文件后,但classes目录下的文件夹被其它程序打开,比如Total Commander。此时编译也不会通过,在problems下可能会提示“con't delete classes ……”,关掉其它程序重新编译即可。

6、还有种情况是remove掉 JRE System Library,重新导入即可编译。但是什么原因导致的还不清楚。

7、把build path中所有包都remove掉,然后又add jars,add libraries把需要的加进去,居然又开始编译了。

8、project->properties->java build path->source->.../WEB-INF/src的output folder不要默认,编辑让它指向../WEB-INF/classes然后重新点击build工程即可自动编译。我的问题出在这里,我把这个编译目录给误删了。

9、再就是最重要的要看工程下面是否缺少了work目录,由于CVS控制时不把work加如版本,所以 checkout后没有这个目录,要手工加上有的工程就能自动编译了最开始的时候,我只找到了前面7个方法,但是他们都没有解决我的问题,无意中我打开了"Problems"标签,发现里面说缺少work目录,手工 加上,然后刷新项目就可以了,最后两个是我在写这个总结的时候发现的,特别是第九条对使用CVS进行版本控制的项目比较有用.classpath这个xml文件要仔细看。

 

posted @ 2014-04-24 15:48 冯威威 阅读(12175) | 评论 (0)编辑 收藏
        weblogic安装的系统是window,weblogic版本是8.1.5版本,运行weblogic服务后,查看bea\user_projects\domains\mydomain\myserver目录下myserver.log文件(我这边建的服务是默认的服务myserver,如果你没有用默认服务,那你就到你建的server下面找),以记事本的方式打开文件,查找file.encoding等于的值,这个默认是系统的编码,如果系统编码不适合你当前的编码,可以通过下面方式修改我们weblogic的编码。
        一、首先修改启动文件startWebLogic.cmd,将编码改变
              startWebLogic.cmd文件在bea\user_projects\domains\mydomain目录下,以记事本方式打开,拉到最下面有一下内容:
              
%JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server
              在“%JAVA_OPTIONS%”后面添加-Dfile.encoding="UTF-8",中间要用空格但是不要换行。
        二、重新启动weblogic服务
             重启weblogic服务后,可以到bea\user_projects\domains\mydomain\myserver目录下查看myserver.log文件里面的file.encoding值变成了UTF-8,则证明修改成功了。
posted @ 2014-04-09 16:53 冯威威 阅读(8652) | 评论 (0)编辑 收藏
一、搭建框架的目的
    主要学习了解各个框架之间如何结合使用。了解用户访问到返回给用户结果的流程怎样进行,原理是什么。怎样才能深入理解使用框架。
二、项目实现目标
    用户访问页面填写用户名和密码,进过后台处理返回登录成功或失败。
三、理解项目流程
    首先,用户访问login.jsp页面,浏览器显示登录要填写的信息,点击提交后首先在web.xml里面配置Struts拦截器会处理,之后转到struts.xml,根据用户访问的请求找到相应的配置,根据配置找到applicationContext.xml里面bean对于的Java文件,对于这个对象Spring里面有数据库操作类的注入,这使得Action类能够连接数据库并处理数据,Action类里面返回处理结果,根据struts.xml配置返回相应的界面。
    下载项目文件
四、数据库代码
1create table USERINFO
2(
3  ID       NUMBER,
4  USERNAME VARCHAR2(50),
5  PASSWORD VARCHAR2(50)
6)


posted @ 2014-03-07 17:53 冯威威 阅读(451) | 评论 (0)编辑 收藏
     摘要:    学习能力代表着成长的加速度,大家上场的时候,其实速度都差不到那里去。但是过了几年,差距就拉大了。因为有人在 5 档上飚车,有人在 1 档慢慢前行…还有在开倒车。   对于职场新人,雇主在学习能力方面更为重视。毕竟和有经验的员工相比,公司招应届生,你的潜力还是一个关键因素。   本文包括 3 部分: ·   &nbs...  阅读全文
posted @ 2014-02-24 11:15 冯威威 阅读(260) | 评论 (0)编辑 收藏
  
初学struts也是一知半解,比如action与dispatchAction的区别,最近便让我十分困惑。  

做为一个初学者,在目前使用过的东西中,主要有mapping.findForward(),action,dispatchAction三个实用功能,这三者放在一起本不太合适,但是在我看来,也有一定的相关性。  

struts主要用途
1. 判断url传值所要做的操作。比如 http://www.baidu.com/index.jsp?run=showAll ,这个如果使用了action,可以使用request.getParameter()接收。
2. 使用mapping.findForward(url);替换servlet的response.sendRedirect("http://www.baidu.com");
3. 把form提交的内容封装到formBean。这样在使用了大量form的时候,可以用formBean的一实例lf.formName这样去调用。
好处在于不用使用request.getParameter("formName");去接收。
4. 使用dispatchAction,在struts-config.xml中进行配置,直接可以判断get链接中的传值,也可以避免使用request.getParameter("formName");去接收。

formBean与dispatchAction的区别: 
显而易见,formBean使用在大量的post表单的情况下。
dispatchAction常用来处理url链接中传来的值。

Action与dispatchAction的区别: 
这里使用区别并不合适,因为dispatchAction继承自Action,所以dispatchAction是对action进行了功能的扩充,action常需要使用getParameter()先获取传入的值,再判断这个值是否正常,再重定向到不同的页面。 
而dispatchAction把判断放以了struts-config.xml文件中,而不需要再到业务层进行判断。并且dispatchAction在使用中,更常用于处理url传入的get请求。


Struts的生存周期

启动web服务器 -- 加载web.xml文件 -- 产生ActionServlet实例 -- 加载struts-config.xml文件 -- 解析出多个action并放入actionMapping池 
客户端发现请求 -- web容器 -- 请求发送到ActionServlet -- 分发到不同的action并实例化 -- 模型层处理 -- 处理结果返回到actionServlet -- 返回结果到视图层

举例
下面是一个使用了dispatchAction的项目的完整struts-config.xml配置
---------------------------------------------
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.2//EN" "http://struts.apache.org/dtds/struts-config_1_2.dtd">

<struts-config>
<data-sources />
<form-beans />
<global-exceptions />
<global-forwards />
<form-beans>      //formbean的定义,name="loginForm"对应于下文中的name="loginForm"
<form-bean name="loginForm" type="org.jsw.struts.form.LoginForm" />
</form-beans>
<action-mappings >

<action                    //定义了一个action
path="/manager"           //此action的访问路径
name="loginForm"          //此action用于接收哪个formbean,对应于上文<form-beans>中的内容
parameter="method"      //此action用于接怍method的值,如果method值是add,那么自动调用业务层的add方法
type="com.umt.struts.action.ManagerAction">
<forward name="success" path="/success.jsp"></forward>     //定义了重向向地址
<forward name="delete" path="/delete.jsp"></forward>
</action>
</action-mappings>

<message-resources parameter="com.jsw.struts.ApplicationResources" />
</struts-config>
posted @ 2013-11-05 16:37 冯威威 阅读(457) | 评论 (0)编辑 收藏
String   str   =   "";//add   your   string   content

InputStream   inputStream   =   new   ByteArrayInputStream(str.getBytes());


 1 package org.kodejava.example.io;
2
3  import java.io.ByteArrayInputStream;
4  import java.io.InputStream;
5
6  public class StringToStream {
7 public static void main(String[] args) {
8 String text = "Converting String to InputStream Example";
9
10 /*
11 * Convert String to InputString using ByteArrayInputStream class.
12 * This class constructor takes the string byte array which can be
13 * done by calling the getBytes() method.
14 */
15 try {
16 InputStream is = new ByteArrayInputStream(text.getBytes("UTF-8"));
17 } catch (UnsupportedEncodingException e) {
18 e.printStackTrace();
19 }
20 }
21 }
22  

 





1、字符串转inputStream

 

Java代码  
  1. String string;  
  2. //......  
  3. InputStream is = new ByteArrayInputStream(string.getBytes());  
 

2、InputStream转字符串

 

Java代码  
  1. ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  2. int i;  
  3. while ((i = is.read()) != -1) {  
  4.     baos.write(i);  
  5. }  
  6. String str = baos.toString();  
  7. System.out.println(str);  
 

3、String写入OutputStream

 

Java代码  
  1. OutputStream os = System.out;  
  2. os.write(string.getBytes());  
 

4、OutputStream写入String

 

这听起来有点荒谬,OutputStream本来就是输出源,还写入String?

不过最近项目里确实遇到了个类似的问题,比如 SOAPMessage.writeTo(OutputStream os) 这个方法,是将SOAPMessage的内容写到一个输出流中,而我想得到这个流的内容,总不能把他先写进文件再去读这个文件吧,研究了好半天,终于想起可以如下这般:

 

Java代码  
  1. ByteArrayOutputStream baos = new ByteArrayOutputStream();  
  2. //向OutPutStream中写入,如 message.writeTo(baos);  
  3. String str = baos.toString();  


将InputStream/OutputStream转换成string

 

这里需要用到一个特殊的类ByteArrayOutputStream,利用他,我们可以将输出流在内存中直接转换成String类型。

具体代码如下:

 

首先从输入流中将数据读出来写入ByteArrayOutputStream,然后再将其转换成String.

 

Java代码  
  1. InputStream in = urlconn.getInputStream();//获取输入流  
  2.   
  3. ByteArrayOutputStream bos = new ByteArrayOutputStream();  
  4.   
  5. //读取缓存  
  6. byte[] buffer = new byte[2048];  
  7. int length = 0;  
  8. while((length = in.read(buffer)) != -1) {  
  9.     bos.write(buffer, 0, length);//写入输出流  
  10. }  
  11. in.close();//读取完毕,关闭输入流  
  12.   
  13. // 根据输出流创建字符串对象  
  14. new String(bos.toByteArray(), "UTF-8");  
  15. //or  
  16. //bos.toString("UTF-8");  

 

根据同样的原理,我们可以将outputstream直接转换成String对象。



指定一下字符集
byte[] b = str.getBytes("utf-8");
String s = new String(b,"utf-8");



OUTPUTSTREAM中方法WRITE用法

 void write(byte[] b) 
          将 b.length 个字节从指定的 byte 数组写入此输出流。 
 void write(byte[] b, int off, int len) 
          将指定 byte 数组中从偏移量 off 开始的 len 个字节写入此输出流。 
abstract  void write(int b) 
          将指定的字节写入此输出流。 
转载地址:http://blog.csdn.net/soundtravel/article/details/6927006
posted @ 2013-07-11 16:18 冯威威 阅读(338) | 评论 (0)编辑 收藏
解决方案1(推荐):
只需要在project build path中先移除JRE System Library,再添加库JRE System Library,重新编译后就一切正常了。
解决方案2:
Windows -> Preferences -> Java -> Compiler -> Errors/Warnings ->
Deprecated and trstricted API -> Forbidden reference (access rules): -> change to warning
posted @ 2013-06-07 15:26 冯威威 阅读(174) | 评论 (0)编辑 收藏
在静态页面中,table标签里面的换行可以用<tr></tr>来实现换行,但是从数据库里面读出来的数据是数组,遍历出来中间没有办法加入<tr></tr>实现换行,结果是页面上显示一列。现在可以解决了,你可以试一试用下面方法。
下面是举的一个例子你可以考到有struts 2环境的项目中看一下。
 1 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
 2 <%@ taglib prefix="s" uri="/struts-tags" %>
 3 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 4 <html>
 5   <head>
 6     <title>My JSP 'index.jsp' starting page</title>
 7  <meta http-equiv="pragma" content="no-cache">
 8  <meta http-equiv="cache-control" content="no-cache">
 9  <meta http-equiv="expires" content="0">   
10  <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
11  <meta http-equiv="description" content="This is my page">
12  <!--
13  <link rel="stylesheet" type="text/css" href="styles.css">
14  -->
15  <s:head/>
16   </head>
17  
18   <body>
19     <table border="0">
20     <tr>
21      <s:iterator value="{'banana','apple','orange','cherry'}" id="fruitName" status="st">
22       <td><s:property value="fruitName"/></td>
23       <s:if test="(#st.index+1)%3==0"><!-- #st.index获取数组的下标 -->
24        </tr><tr>
25       </s:if>
26      </s:iterator>
27      </tr>
28      </table>
29   </body>
30 </html>
posted @ 2012-03-17 18:47 冯威威 阅读(1898) | 评论 (0)编辑 收藏
你可以在struts.xml文件中修改成如下:
<action name="addnew" class="ay.jf.action.AddNewAction">
    <result name="success" type="chain" >
        <param name="namespace">/manager</param>
        <param name="actionName">newlist</param>
        <param name="method">receive</param>
    </result>
</action>
<action name="newlist" class="ay.jf.action.NewLIstAction">
     <result name="success">/feng.jsp</result>
</action>
posted @ 2011-11-05 18:41 冯威威 阅读(973) | 评论 (0)编辑 收藏

在Struts2里,如果需要在Action中使用session,可以通过下面两种方式得到
1.通过ActionContext class中的方法getSession得到
2.Action实现org.apache.struts2.interceptor.SessionAware接口的方式来对session进行操作


一、
package s2.ex.action; 
import java.util.Map;
import com.opensymphony.xwork2.ActionContext; 

import com.opensymphony.xwork2.ActionSupport; 

public class SessionTestAction extends ActionSupport {     

     public String execute() {       

             ActionContext actionContext = ActionContext.getContext();        

             Map session = actionContext.getSession();        

             session.put("UserName", "admin");  //设置session      

             return SUCCESS;      
    }  

}

在这个例子中,通过ActionContext得到session,并往session里放置一个key为UserName,值为admin的内容。

 


二、下面是一个实现org.apache.struts2.interceptor.SessionAware接口来对session操作的例子
 

package s2.ex.action;  
import java.util.Map;  
import org.apache.struts2.interceptor.SessionAware;  
import com.opensymphony.xwork2.ActionSupport;  
public class SessionTest1Action extends ActionSupport implements SessionAware {       
    private Map session;       
    public void setSession(Map session)  {          
        this.session = session;     
    }       
    public String execute() {         
        this.session.put("UserName", "admin");          
        return SUCCESS;       
    }  
}

 

下面是一个在JSP中使用session的例子:
<%@ page contentType="text/html; charset=UTF-8" %>  
<%@ page pageEncoding="utf-8" %>  
<%@ taglib prefix="s" uri="/struts-tags" %>  
<html>  
<head>      
<title>Session Test-JAVA中文网:http://www.javaweb.cc/</title>  
</head>  
<body>  
<h1><s:property value="#session.USER_NAME"/></h1>   <h1></h1>  
</body>  
</html>

此文章经过修改,根据Java中文网
地址是:http://javaweb.cc/architecture/struts/261792.shtml

posted @ 2011-10-22 10:13 冯威威 阅读(1293) | 评论 (0)编辑 收藏
仅列出标题
共3页: 上一页 1 2 3 下一页