java学习

java学习

 

struts2值栈取值和session,request,application的取值

在strut2中所以的值都在值栈中存放,在页面中加入<s:debug></s:debug>标签,就可以点击显示出当前值栈中的所有值,如图
可以通过 <s:property value="name"/>标签得到值栈中的值,value的值是PropertyName,就可以得到对应的value

在action中session,request,application都是Map数据类型的
private Map session;
 private Map request;
 private Map application;
session =  ActionContext.getContext().getSession();
  request = (Map) ActionContext.getContext().get("request");
  application =  ActionContext.getContext().getApplication();
  session.put("sk", "sv");
  request.put("rk", "rv");
  application.put("ak", "av");
想在页面中取到相应的值;
 <s:property value="#session.sk"/>
 <s:property value="#request.rk"/>
 <s:property value="#application.ak"/>
使用<s:debug></s:debug>观看他们都是存放在栈区,#+名称就可以取到值

posted @ 2013-04-11 22:56 杨军威 阅读(1609) | 评论 (0)编辑 收藏

struts2命名空间和访问路径

namespace决定来了action的访问路径,当namespace=“”时,可以接受所有路径的action,namespace=“/”,

或者"/xxx,或者"/xxx/yyy",对应的action访问路径是/index.action,或者/xxx/index.action,或

者/xxx/yyy/index.action.


<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort

()+path+"/";
%>
<base href="<%=basePath%>">
在使用namespace时容易出现路径问题,在会出现路径问题的jsp页面中加上base标签,就不会了。

posted @ 2013-04-10 23:11 杨军威 阅读(322) | 评论 (0)编辑 收藏

java取得实时上周的时间

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

public class Test {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        calendar.setFirstDayOfWeek(Calendar.MONDAY);

        calendar.add(Calendar.DATE, -7);
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
        Date    sTime = calendar.getTime();
        calendar.set(Calendar.DAY_OF_WEEK, Calendar.SUNDAY);
        Date    eTime = calendar.getTime();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        String s = sdf.format(sTime) + " 00:00:00";
        String e = sdf.format(eTime) + " 23:59:59";
        System.out.println(s);
        System.out.println(e);
    }
}

posted @ 2013-04-09 16:43 杨军威 阅读(1385) | 评论 (0)编辑 收藏

struts2实现登录拦截器和验证方法

     摘要: 在struts2中的拦截器的定义是先定义一个类实现Interceptor接口,重写intercept方法。下面是实现登录验证的拦截器。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE struts PUBLIC    "-//Apache Software Foundation//DTD Struts C...  阅读全文

posted @ 2013-04-06 23:43 杨军威 阅读(4877) | 评论 (5)编辑 收藏

java复习

Typeof()返回值有6中可能:numberstringbooleanobjectfunctionundefined

Prompt(“请输入名称”)返回字符

eval(“”)可以把“”中的字符串执行

java中继承的构造方法的规则:

1.       子类的构造的过程中必须调用其父类的构造方法。

2.       子类可以在自己的构造方法中使用superargumentlist)调用父类的构造方法。

3.       使用thisargumentlist)调用自己的另外的构造方法。

4.       如果调用super,必须卸载子类构造方法的第一行。

5.       如果子类的构造方法中没有显示调用父类工作服,系统默认调用父类无参数的构造方法。

6.       如果子类构造方法中没有显示调用父类的构造方法,而父类中又没有无参数的构造方法,编译出错。

哈希编码:每个对象都有一个独一无二的哈希编码,通过这个哈希编码可以找到这个对象。

多态中动态绑定规则;1.有继承,2.有重写(子类重写父类中的方法),3.父类引用指向子类对象。

Public void getId(final int i){}表示i在此方法中不同被修改

posted @ 2013-04-06 14:19 杨军威 阅读(184) | 评论 (0)编辑 收藏

hibernate对数据库的建立和删除

<!--?启动时删数据库中的表,然后创建,退出时不删除数据表

<property?name="hibernate.hbm2ddl.auto">create</property>-->

<!--?启动时删数据库中的表,然后创建,退出时自动删除所有表

<property?name="hibernate.hbm2ddl.auto">create-drop</property>-->

<!--?自动修改,如果表结构与实体类不一致,那么就修改表使它们一致,数据会保留

<property?name="hibernate.hbm2ddl.auto">update</property>-->

<!--?自动校验,如果表结构与实体类不一致,那么不做任何操作,报错

<property?name="hibernate.hbm2ddl.auto">validate</property>-->

posted @ 2013-04-05 20:52 杨军威 阅读(194) | 评论 (0)编辑 收藏

java io读取文本文件

public class ReadSql {

 public static void readsql(String filePath) throws Exception{
  String encoding = "gbk";
  File file = new File(filePath);
  if(file.isFile()&&file.exists()){
   InputStreamReader reader = new InputStreamReader(new FileInputStream(file),encoding);
  BufferedReader bufferedReader = new BufferedReader(reader);
   String line = null;
   while ((line = bufferedReader.readLine())!=null) {    
     System.out.println(line.toString());           
   }
   reader.close();
  }
 }
 public static void main(String[] args) throws Exception {
  System.out.println("=================================================");
  ReadSql.readsql("c:/rr.txt"); 
  
  System.out.println("=================================================");
 }
}

posted @ 2013-04-03 13:33 杨军威 阅读(216) | 评论 (0)编辑 收藏

阿里云注册用户建立自己的网站

阿里云服务平台注册相当于申请到了一台服务器主机,想运行java web项目很简单,安装jdk,tomcat,数据库,把编译好的项目放在tomcat中,启动tomcat,在外网直接访问阿里云主机ip和端口,项目名称,就可以了

posted @ 2013-04-03 10:15 杨军威 阅读(208) | 评论 (0)编辑 收藏

java网络编程中tcp和udp

在网络编程中,先启动service,再启动clent。
1.tcp
服务端
public class Service {
public static void main(String[] args) throws Exception {
ServerSocket ss = new ServerSocket(6666);
System.out.println("等待");
while (true) {
Socket socket  =ss.accept();
InputStream is = socket.getInputStream();
DataInputStream dataInputStream = new DataInputStream(is);
System.out.println(dataInputStream.readUTF());
dataInputStream.close();
socket.close();
}
}
}
客户端
public class CientSocket {
public static void main(String[] args) throws Exception {
Socket socket = new Socket("127.0.0.1",6666);
OutputStream outputStream = socket.getOutputStream();
DataOutputStream dataOutputStream = new DataOutputStream(outputStream);
dataOutputStream.writeUTF("333333333");
dataOutputStream.flush();
dataOutputStream.close();
socket.close();
}
}
udp通信,是不区分客户端和服务端的
public class Service {
public static void main(String[] args) throws Exception {
byte buf[] = new byte[1024];
DatagramPacket dPacket = new DatagramPacket(buf, buf.length);
DatagramSocket dSocket = new DatagramSocket(5678);
while (true) {
dSocket.receive(dPacket);
System.out.println(new String(buf,0,dPacket.getLength()));
}
}
}
public class UdpClient {
public static void main(String[] args) throws Exception{
while (true) {
byte[] buf = (new String("hello")).getBytes();
DatagramPacket dpPacket = new DatagramPacket(buf, buf.length, new InetSocketAddress("127.0.0.1", 5678));
//自己占用9999端口
DatagramSocket dSocket = new DatagramSocket(9999);
dSocket.send(dpPacket);
dSocket.close();
}
}
}

posted @ 2013-04-02 22:28 杨军威 阅读(164) | 评论 (0)编辑 收藏

web.xml加载过程

当我们去启动一个 WEB 项目的时候, 容器(包括 JBoss, Tomcat 等)首先会去读项目的 web.xml 配置文件里面的信息, 

当这一步骤没有出错并且完成之后, 项目才能正常的被启动起来。

1> 首先是, 容器会先读 <context-param></context-param> 节点, 并创建一个 ServletContext 实例, 以节点的 name 作为键, value 作为值, 

   存储到上下文环境中。

2> 接着, 容器会去读 <listener></listener> 节点, 根据配置的 class 类路径来创建监听。

3> 接着, 容器去读 <filter></filter> 节点, 根据指定的类路径来实例化过滤器。

以上都是在 WEB 项目还没有完全启动起来的时候就已经完成了的工作。如果系统中有用到 Servlet, 则 Servlet 是在第一次发起请求的时候被实例化的,

且一般不会被容器销毁, 它可以服务于多个用户的请求。所以, Servlet 的初始化都要比上面提到的那几个要迟。

总的来说, web.xml 的加载顺序是: context-param --> listener --> filter --> servlet

其中, 如果 web.xml 中出现了相同的节点, 则是按照在配置文件中出现的先后顺序来加载的。

下面引入一个小列子来说明:

  
<?xml version="1.0" encoding="UTF-8"?>
  
  <listener>
    <listener-class>net.yeah.fancydeepin.listener.AppStartListener</listener-class>
  </listener>
  
  <!-- 为了更好的说明, 特意将 context-param 放在 listener 后面 -->
  <context-param>
    <param-name>technology</param-name>
    <param-value>java,javascript,ajax,css,html</param-value>
  </context-param>
  
  <filter>
    <filter-name>ReDespatcherFilter</filter-name>
    <filter-class>net.yeah.fancydeepin.filter.ReDespatcherFilter</filter-class>
    <init-param>
      <param-name>it</param-name>
      <param-value>android, python, c</param-value>
    </init-param>
  </filter>
  <filter-mapping>
    <filter-name>ReDespatcherFilter</filter-name>
    <url-pattern>/*</url-pattern>
  </filter-mapping>
  
  <filter>
    <filter-name>ReDespatcherFilter2</filter-name>
    <filter-class>net.yeah.fancydeepin.filter.ReDespatcherFilter2</filter-class>
    <init-param>
      <param-name>mail</param-name>
      <param-value>fancydeepin@yeah.net</param-value>
    </init-param>
  </filter>

</web-app>
  

 

  
package net.yeah.fancydeepin.listener;

import java.util.Arrays;
import java.util.List;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;

public class AppStartListener implements ServletContextListener{

    public void contextInitialized(ServletContextEvent contextEvent) {
        System.out.println("********************************************");
        ServletContext context = contextEvent.getServletContext();
        List<String> params = Arrays.asList(context.getInitParameter("technology").split(","));
        for(String param : params){
            System.out.print(param + "\t");
        }
        System.out.println("\n********************************************");
    }

    public void contextDestroyed(ServletContextEvent contextEvent) {
        
    }

}
  

 

  
package net.yeah.fancydeepin.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;

public class ReDespatcherFilter implements Filter {
    
    public void init(FilterConfig filterConfig) throws ServletException {

        System.out.println("============================================");
        System.out.println(filterConfig.getInitParameter("it"));
        System.out.println("============================================");
    }
    
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException{
        
        chain.doFilter(request, response);
    }
    
    public void destroy() {
        
    }
}
  

 

  
package net.yeah.fancydeepin.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;

public class ReDespatcherFilter2 implements Filter {
    
    public void init(FilterConfig filterConfig) throws ServletException {

        System.out.println("++++++++++++++++++++++++++++++++++++++++++++");
        System.out.println(filterConfig.getInitParameter("mail"));
        System.out.println("++++++++++++++++++++++++++++++++++++++++++++");
    }
    
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException,ServletException{
        
        chain.doFilter(request, response);
    }
    
    public void destroy() {
        
    }
}
  


后台启动输出结果:

posted @ 2013-04-01 20:48 杨军威 阅读(208) | 评论 (0)编辑 收藏

仅列出标题
共43页: First 上一页 23 24 25 26 27 28 29 30 31 下一页 Last 

导航

统计

常用链接

留言簿

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜