阅读了知乎上一些关于学习java的建议 大多都是建议要先学习好java SE(standard Edition),是基于JDK(没有它无法编译java程序)与JRE(java运行环境) 可以先模仿着别人的代码,但一定要写,自己背着写。 任何事情都要追求完美才敢继续往后进行是一种性格缺陷

正则表达式的学习

@(正则表达式)[2015/3/8]

在java 中,有关于正则表达式的包是java.util.regex,它下面包含两个类Matcher与Pattern。一些具体参数或用法,都可以参展java的说明文档

从昨天开始在观看网上马士兵老师的java教程视频,学习正则表达式的使用。其中比较实用的应用就是可以抓取一个网页上特定格式的东西,如所有的email。叫做emailSpider。以下是实现配对的主要函数:

private static void parse(String line) {
        /*从文件中一行一行的读取数据,在每一行中匹配具有email格式的字符串*/
        Pattern p = Pattern.compile("[\\w[.-]]+@[\\w[-.]]+\\.[\\w]+");
        Matcher m = p.matcher(line);
        while(m.find())
        {
            System.out.println(m.group());
        }
    }

Pattern将给定的正则表达式编译并赋予给Pattern类。 生成Matcher实例,形象化不深入的肤浅可以理解为,Pattern对正则表达式进行编译,Matcher对它进行匹配。

利用正则表达式来计算一个java程序中总共有多少行代码,多少注释,多少空行。 其中主要的核心代码是一个函数,利用正则表达式来匹配这些可能性的行

private static void parse(File child) {
        BufferedReader br = null;
        Boolean comment = false;
        try {
            br = new BufferedReader(new FileReader(child));
            String line = "";
            while((line=br.readLine())!=null){
                /*去除字符串头部与尾部的空格*/
                line = line.trim(); 
                /*匹配空白的行*/
                if(line.matches("^[\\s&&[^\\n]]*$")){
                whiteLines++;
                }
                /*匹配注释行*/
                else if(line.startsWith("/*")&&!line.endsWith("*/")){
                    commentLines++;
                    comment = true;
                }if(true==comment){
                    commentLines++;
                    if(line.endsWith("*/")){
                        comment = false;
                    }
                }else{
                    normalLines++;
                }

            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }finally{
            if(br!=null){
                try{
                    br.close();
                    br = null;
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
        }

JDBC

JDBC叫做java Database ConnectivityJ2EE的一部分。 JDBC不同数据库有不同的对应类库。

JDBC编程步骤: 1、通知DriverManager要连那种数据库,找到连接数据库的驱动包,

java web 提交表单的处理

Step1: 编写index.jsp文件 代码如下:

<%@page pageEncoding="GBK"%>
<!DOCTYPE html>
<html>
<body>
<p>请输入数字。。</p>
<script>
function validate_required(field,alerttxt)
{
with (field)
  {
  var x=document.getElementById("demo1").value;
  if (isNaN(x)||x=="")
    {alert(alerttxt);return false;}
  else {return true;}
  }
}
function myFunction(thisform)
{

with(thisform){
if(validate_required(demo,"输入数字可以嘛!")==false)
{
 demo.focus();
 return false;
}
}
}
</script>
<form action="welcome" name = "formtest" method ="post" onsubmit="return myFunction(this);">
<input id="demo1" type="text" name="demo">
<input type="submit" value="Submit">
</form>
</body>
</html>

welcome是对表单进行处理的Servlet,表单采用的提交方式是post.采用了一个函数来判断用户输入是否为数字,如果包含其他,就跳出警示窗口。

Step2:编写HelloServletFromMyEclipse.java 代码如下:

public class HelloServletFromMyEclipse extends HttpServlet {
    public HelloServletFromMyEclipse() {
        super();
    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {

        response.setContentType("text/html");
        PrintWriter out = response.getWriter();
        out.print("欢迎来这里呀");
    }
    public void doPost(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        req.setCharacterEncoding("gb2312");  
        PrintWriter out = resp.getWriter();
        resp.setContentType("text/html;charset=gb2312");  
        String name = java.net.URLDecoder.decode(req.getParameter("demo"),"utf-8");  
        out.println("myprintis"+name);
        Pattern p = Pattern.compile("^\\d+$");
        Matcher m = p.matcher(name);
        if(m.matches())
        {
            out.println("true");
        }
        else{
            out.println("false");
        }
    }
}

通过req.getParameter(“demo”)获得用户输入的信息,”demo”必须与表单中用于输入信息的文本区的demo一样。获得用户之后用正则来匹配是否为数字

Step3:部署Servlet 修改web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
  <servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>com.bjsxt.servlet.HelloServletFromMyEclipse</servlet-class>

  </servlet>

  <servlet-mapping>
    <servlet-name>HelloServlet</servlet-name>
    <url-pattern>/welcome</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
</web-app>

统计页面被访问的次数

主要代码

public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {
        ServletContext context=getServletContext();
        Integer count = (Integer)context.getAttribute("counter");
        if(null==count){
            count=new Integer(1);
        }
        else{
            count = new Integer(count.intValue()+1);
        }
        resp.setContentType("text/html;charset=gb2312");
        PrintWriter out = resp.getWriter();

        out.println("<HTML>");
        out.println("  <HEAD><TITLE>页面访问统计</TITLE></HEAD>");
        out.println("  <BODY>");
        out.print("该页面被访问了:"+"<b>"+count+"</b>"+"次");
        out.println("  </BODY>");
        out.println("</HTML>");
        context.setAttribute("counter", count);
        out.flush();
        out.close();
    }

通过getServletContext()的方法得到web应用程序的上下文对象。通过getAtrribute()方法获取属性counter的值,判断counter是否为空,为null就将它的初始值设为1,当servlet第一次被访问,设为1,以后再被访问就是加一,将count作为counter的属性保存到ServletContext对象中。

问题

在用jsp连接数据库时出现连接不了数据库的现象,一直查不出什么原因,后来借鉴网友意见,把驱动包添加到WEB_INF下的lib中,就好了==

在web客户端的三种语言

@(2015/3/17) html(hyper text markup language),css,javascript是web客户端的三种语言,其中javascript即可被用在客户端,也可以被用在服务器端,主要是用在客户端。

html meta是元数据,描述文档本身的信息

<meta http-equiv="refresh" content ="3;url="http://www.baidu.com">

每隔3秒刷新当前页面到www.baidu.com

<meta http-equiv="content-type" content ="text/html;charset=gb2312">

当前页面是html格式,编码是gb2312

<meta http-equiv="expires" content ="0">

告知浏览器不要对本网页进行缓存

<meta http-equiv="pragma" content ="no-cache">

不要在代理服务器上缓存

<meta name="author" content ="sgy">

作者

<meta name="copyright" content ="do not use this page without my permission">

版权声明