`
fhdking
  • 浏览: 6312 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

java 培训日记

阅读更多
进行了一周紧张后的学习,今天终于闲下把日记与大家分享,在这周里张老师给我们讲了好多未来我们在工作中出现的一些问题,我记得不是很好!希望大家多提建议!让我更好的掌握JAVA
一、myeclipse的安装和基本使用
1、安装路径最好不带有空格;
2、将Tomcat置于myeclipse的控制之下;
3、建立Web Project,以及发布到Tomcat服务器;
4、myeclipse常用的快捷键列表如下:
   Alt + /     代码提示
   Ctrl + shift + o     导入包
   Ctrl + shift + f     代码格式化
   Alt  + shift + s 弹出使用右键source的菜单
   Alt  + shift + z 代码包含(如try/catch)
   Alt  + shift + /     将代码注释掉
   Alt  + shift + \     取消对代码的注释

二、JSP的部分基础知识
1、指令元素:page指令,include指令,taglib指令。指令必须嵌套在<%@   %>中
2、脚本片段,在里面直接写java源代码 <%         %>
3、脚本表达式 <%=        %>
4、脚本声明 <%!        %>
5、JSP注释 <%--     --%>

三、Tomcat中重要的几个Servlet(在\conf\web.xml中查看)
   DefaultServlet(缺省Servlet) org.apache.catalina.servlets.DefaultServlet
   作用:处理服务器中某个静态资源,例如加载静态的网页,图片。如果在conf目录下的web.xml中注释掉这个servlet,则我们发布的静态网页不会显示。(还要注释掉<servlet-mapping>)
   InvokerServlet(Servlet激活器) org.apache.catalina.servlets.InvokerServlet
   作用:激活和调用任何其他Servlet,需要在全局的Web.xml中配置,默认被注释掉,如果去掉注释,则我们不用自己在我们的web.xml中配置我们写的servlet,服务器也会自动帮我们加载。
   JspServlet         org.apache.jasper.servlet.JspServlet
   作用:编译和执行jsp页面

四、两个案例
(一)模拟DefaultServlet输出静态文件的内容
1、Tomcat系统的DefaultServlet的作用就是读取静态资源然后输出到客户端浏览器,为了能验证程序的效果,我们需要把系统conf\web.xml中关于它的配置注释掉;
2、新建一个Servlet,假定我们只让这个servlet拦截对Html文件的访问,就把映射路径设置为*.html;
3、在servlet里面得到浏览器请求的文件名,得到输入流,再把输入流读到数组当中,再把数组内容写入到由response对象得到的输出流ServletOutputStream中即可。
主要代码如下:
public class DefaultServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
FileInputStream fis = new FileInputStream(request.getRealPath("/") + request.getServletPath().substring(1));
ServletOutputStream sos = response.getOutputStream();
byte[] buf = new byte[1024];
int len = -1;
while((len = fis.read(buf))!= -1){
sos.write(buf);
}
sos.flush();
sos.close();
fis.close();
}
}
小知识点:如何获取浏览器的请求名?
假如在浏览器的地址栏里面输入:http://localhost:880/Test/MyJSP.jsp
方法一:
String path1 = request.getRequestURI() 得到/Test/MyJsp.jsp
String path2 = request.getContextPath()得到/Test
path1.substring(path2.length())
方法二:
String path = request.getServletPath() 得到/MyJsp.jsp
path.substring(1)

(二)计数器
(1)用JSP实现记数
<%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
<html>
  <head>
    <title>My JSP 'view.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">   
  </head>
  <%!int count = 0; %>
  <body>
    您是第<%=++count %>个访问者。<br>
  </body>
</html>

如果这样定义count:<% int count = 0 %>就不能看到效果,通过查看服务器自动生成的servlet(在work/lib内),发现这种定义是在service方法中的,而向上面那种定义是在方法外面的,就成了成员变量,在下次调用时,count值仍然不变。这样就可以实现了。但是当服务器关闭了,那么count就归0了。

(2)用servlet编写通用计数器
对单个文件写个计数器比较简单,复杂的是写一个通用的计数器,可以统计很多页面。实施原理如下:
1、使用一个CountServlet来完成计数功能;主要代码如下:
public class CountServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
int count = -1;
try {
count = getCount(request);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
sendImage(response, count);
}
private void sendImage(HttpServletResponse response, int count){
try {
response.setContentType("image/jpeg");
  ServletOutputStream sos = response.getOutputStream();
BufferedImage image = new BufferedImage(80, 20, BufferedImage.TYPE_INT_RGB);
  Graphics g = image.getGraphics();
  g.setColor(Color.BLACK);
  g.fillRect(0, 0, 80, 20);
  g.setColor(Color.WHITE);
  g.setFont(new Font(null, Font.PLAIN|Font.BOLD, 18));
  g.drawString(String.valueOf(count), 0, 18);
  g.dispose();
 
  ImageIO.write(image, "JPEG", sos);
  sos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private void sendText(HttpServletResponse response, int count){
try {
response.setContentType("text/html;charset=GB18030");
PrintWriter out = response.getWriter();
out.println("document.write('本页面访问次数为" + count + "')");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private int getCount(HttpServletRequest request) throws Exception{
  int count = 0;
  String path = request.getRealPath("/count.txt");
  FileInputStream fis = new FileInputStream(path);
 
  Properties prop = new Properties();
  prop.load(fis);
 
  String fileName = request.getHeader("referer");
  System.out.println(fileName);
  String tmp = (String)prop.get(fileName);
  if(tmp!=null){
  count = Integer.parseInt(tmp);
  }  
  count++;
  FileOutputStream fos = new FileOutputStream(path);
  prop.put(fileName, new Integer(count).toString());
  prop.store(fos, "success");
  fis.close();
  fos.close(); 
  return count;
}
}
2、在多个页面中写入相同的一段代码,通过这段代码来访问计数Servlet并得到各自的计数值,代码如下:
<script type="text/javascript" src="/CountServlet"></script>
这段代码中src就指出了哪个访问Servlet。这段代码无非是想访问src指出的路径,然后得到一段javascript代码,这段代码把得到的计数值显示出来,类似如下的代码:

document.write("访问次数为n");

我们可以在servlet中输出上面这段代码即可。

3、需要在CountServlet中得到请求来源页面,并把这个页面的信息作为属性文件的key
得到请求页面的方法是 request.getHeader("referer"),referer是一个特殊的请求头,当通过超链接从一个页面访问另一个页面时,浏览器会自动在请求信息里面加上这个头,告知服务器它来自哪里。
<script type="text/javascript">
document.write("访问次数为n");
</script>

五. 对日期格式化的例子
  <%
  DateFormat df = new SimpleDateFormat("yyyy年MM月dd日");
  df.format(new Date());
 
  DateFormat df2 = DateFormat.getDateInstance(DateFormat.LONG, request.getLocale());
df2.format(new Date());
  %>
通过该例子而引出的知识点:
大知识点:抽象类的实例化方法,一是实例化其子类,二是通过getInstance方法得到
小知识点:Locale的作用(包含国家和地区的信息),通过更改浏览器语言选项来演示讲解。
分享到:
评论

相关推荐

    java培训日志

    java培训日志 个人收集

    java培训实习报告

    参加java培训后写的实习报告,里面含有代码,很详细!

    java Web云笔记项目

    在培训机构培训时做的项目,分享一下给大家

    ACCP5.0Y2-电子宠物网站源码SSH和培训案例素材

    用Struts、Hibernate和Spring,...宠物信息察看(含该宠物的日记列表)。 3. 系统登录。 4. 宠物训练。 5. 写宠物日记 首页面 以宠物名称和密码登录。登录后才可对宠物进行训练,写宠物日记,否则只能查看。 宠物排行

    java安卓仿微信聊天软件源码-ztd328423.github.io:个人博客

    日记 《剑指offer》Java版代码实现 android资料总结 技术面试必备基础知识、Leetcode、计算机操作系统、计算机网络、系统设计、Java、Python、C++ 正在成为史上最全分类 Android 开源大全 android 有很多不错的案例 ...

    MyJournalAlc:这是Andela根据ALC Android基础培训给出的应用程序分配

    MyJournalAlc MyJournalALc是一款安卓应用,可让用户写下自己的想法和感觉,就像写日记一样。 用户可以添加日期并写下他们想要记录的内容。 这是我在ALC培训中学到的东西的非常简单的演示。 这是Andela根据ALC ...

    RunningMate-开源

    RunningMate 是用 Java 编写的跑步者日记。 功能包括营养数据库、培训计划、健康计算器等等!

    2000个小程序精选源码(包含49个行业)

    │ │ 托福资料(完整带Java后台).zip │ │ 校内网小程序.zip │ │ 蒙台梭利幼教.zip │ │ 课程预约.zip │ │ │ ├─新闻资讯(8个) │ │ 今日头条.zip │ │ 会议精灵.zip │ │ 体育新闻.zip │...

    《Google Android开发入门与实战》.pdf

    也适合作为相关培训学校的android培训教材。... 目录 第1章 掀起你的盖头来——初识android. 1 1.1 认识android 1 1.2 android的背景 2 1.2.1 android的历史 2 1.2.2 android的发展 2 1.3 我的...

    Google.Android开发入门与实战

    也适合作为相关培训学校的Android培训教材。 目录 第1章 掀起你的盖头来——初识Android 1.1 认识Android 1.2 Android的背景 1.2.1 Android的历史 1.2.2 Android的发展 1.3 我的Android我做主 1.3.1 开发基于Android...

Global site tag (gtag.js) - Google Analytics