阅读了知乎上一些关于学习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 Connectivity
是J2EE
的一部分。
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">
版权声明