Java web的一些笔记

来源:互联网 发布:浙江省软件企业认定 编辑:程序博客网 时间:2024/05/17 02:33

一、hibernated的HQL查询

1、基本变量参数
   Configuration config=new Configuration().configure();
   SessionFactory sessionFactory=config.buildSessionFactory();
   Session session=sessionFactory.openSession();
   
   Session.close;
2、基本查询
   Query query=session.createQuery("from DbLoginiddata where nmNum<3");
   return query.list();
3、返回唯一结果
   Query query=session.createQuery("from DbLoginiddata where nmNum=3");
   return (DbLoginiddata)query.uniqueResult();
4、改
   Configuration config=new Configuration().configure();
   SessionFactory sessionFactory=config.buildSessionFactory();
   Session session=sessionFactory.openSession();
   Transaction tx=session.beginTransaction();
        
   Query query=session.createQuery("update DbLoginiddata  set vcLoginId='GGwanglaowu' where nmNum=3");
   query.executeUpdate();
   tx.commit();
   session.close();
5、删
   Configuration config=new Configuration().configure();
   SessionFactory sessionFactory=config.buildSessionFactory();
   Session session=sessionFactory.openSession();
   Transaction tx=session.beginTransaction();
        
   Query query=session.createQuery("delete DbLoginiddata where nmNum=3");
   query.executeUpdate();
   tx.commit();
   session.close();
6、返回多列
   String hql="select vcLoginId,vcPassword from DbLoginiddata";
   List list= dao.findByHql(hql);
   int i=0;
   for(Object o:list){
        Object[] obj=(Object[]) list.get(i++);
        System.out.print(obj[0]);
    System.out.println(obj[1]);
   }

二、hibernate错误之

 1、ids for this class must be manually assigned before calling save()..
   答:只需要把内容填完整就可以啦
 2、java.lang.NoClassDefFoundError: org hibernate criterion Criterion
    把所有的hibernate包全部导进去即可

三、hibernate默认值问题

 1、Field 'id' doesn't have a default value问题解决方法

<generator class="assigned"/>
因为assigned是指主键是由人工分配的,而native则指主键值由库自动给出

四、hibernate数据表日期格式的插入

方法一:setDate(new Date(new java.util.Date().getTime()));
方法二:String strDate="2008-10-25";
       SimpleDateFormat myFormatter = new SimpleDateFormat("yyyy-MM-dd");
       java.util.Date date=myFormatter.parse(strDate);
       store.setFacdate(new Date(date.getTime()));

五、hibernate无法自动提交事务

1、测试能通过,但数据库实际上并没有修改
   答:需要在配置文件中加上这句,代表自动提交<property     name="connection.autocommit">true</property>

六、发生问题:java.lang.NoClassDefFoundError: antlr/ANTLRException
解决方法:
原来是Hibernate3.0与2.0有所不同
增加了antlr-2.7.6.jar这个包,将这个包加上就OK了!

七、hibernate中文乱码

1、首先需要修改mysql数据库的配置文件my.ini,此文件放在mysql根目录下。在此文件下查找default-character-set属性,并将其值更改为utf8(注意:不是utf-8,也要注意大小写),这里需要将default-character-set属性全部属性的值修改为utf8。示例:

default-character-set = utf8

提示:default-character-set属性有两个,一个在[mysql]下面,另外一个在[mysqld]下面。

2、同时创建hibernate数据库时需要显示设置数据库的编码方式为utf8。示例:

create database daycode default charset=utf8;

3、做完这两步还是不行,需要修改hibernate的配置文件hibernate.cfg.xml,在配置文件配置hibernate.connection.url属性。示例:

<property name="hibernate.connection.url">
        <![CDATA[jdbc:mysql://localhost:3306/daycode?useUnicode=true&characterEncoding=utf8]]>
</property>

注意:此字符串不能写为jdbc:mysql://localhost:3306/daycode?useUnicode=true&characterEncoding=utf8,不然会出现编译错误,错误提示为将&连接符改为;。

设置这些之后乱码问题就解决了。

八、JavaWeb: 报错信息The superclass "javax.servlet.http.HttpServlet" was not found on the Java Build Path

下面是具体的解决方法:
1、右击web工程-》属性或Build Path-》Java Build Path->Libraries-> Add Libray...->Server Runtime -》Tomcat Server
2、切换到Java Build Path界面中的Orader and Export,选择Tomcat。

注意:
按以上方法操作时,若打开Server Runtime后一片空白,需要设置Apache服务器。设置方法为:window->Preferences->Server->Runtime Environment -> add --> 选择Apache的版本后点Next,再填入你apache服务器软件的安装(解压后)地址。

九、JSP MySQL 分页

1、标准头部分
        <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
        <%@ page import="java.sql.*" %>
        <html>
        <body>
        </body>
        </html>
2、表格部分
        <table width="800" border="1" align="center">
        <tr>
                <td>a</td>
                <td>b</td>
        </tr>
        
        ///以下是数据库连接
        String driverName="com.mysql.jdbc.Driver";  //驱动程序名
        String userName="root";//数据库用户名
        String userPasswd="HI333512";//密码
        String dbName="class";//数据库名
        String tableName="S3";//表名
        //连接字符串
        String url="jdbc:mysql://localhost:3306/"+dbName+"?user="+userName+"&password="+userPasswd+"&useUnicode=true&characterEncoding=GB2312";
        Class.forName(driverName).newInstance();//加载驱动程序
        Connection conn=DriverManager.getConnection(url);
        String sql="select * from S3";//创建执行语句
        Statement stmt=conn.createStatement();
        ResultSet rs=stmt.executeQuery(sql);
        int intPageSize;      //一页显示的记录数
        int intRowCount;      //记录的总数
        int intPageCount;     //总页数
        int intPage;         //待显示的页码
        String strPage;
        int i;
        intPageSize=3; //设置一页显示的记录数
                
                strPage=request.getParameter("page");//取得待显示的页码
        if(strPage==null) //判断strPage是否等于null,如果是,显示第一页数据
        {
            intPage=1;
            }else{
            intPage=java.lang.Integer.parseInt(strPage); //将字符串转换为整型
        }
        if(intPage<1)
        {
            intPage=1;
        }
        rs.last();//获取记录总数
        intRowCount=rs.getRow();
        intPageCount=(intRowCount+intPageSize-1)/intPageSize; //计算机总页数
        if(intPage>intPageCount)
                         intPage=intPageCount; //调整待显示的页码
        if(intPageCount>0)
        {
            rs.absolute((intPage-1)*intPageSize+1); //将记录指针定位到待显示页的第一条记录上
        }
        //下面用于显示数据
        i=0;
        while(i<intPageSize && !rs.isAfterLast())
        {
        %>
          <tr>
                <td><%=rs.getString(1)%></td>
                <td><%=rs.getString(2)%></td>
         </tr>
         <%
         rs.next();
         i++;
         }
        rs.close();//关闭连接、释放资源
         stmt.close();
         conn.close();
     %>
     <div align="center">
    共<%=intRowCount%>个记录,分<%=intPageCount%>页显示,当前页是:第<%=intPage%>页
    <%
        for(int j=1;j<=intPageCount;j++)
    {
        out.print("&nbsp;&nbsp;<a href='Jspfenye.jsp?page="+j+"'>"+j+"</a>");
    }
        %>
        </div>
    <%>
        
        </table>

十、JSP

1、JSP的注释
   (1)<!--内容-->,也可以用于HTML
  (2)<%--something--%>
  (3)采用和java语言同样的注释,包括//   /*   */
2、JSP的指令,格式 <%@page|include|......%>
  (1)page
  (2)include
  (3)taglib
 
  page属性
  *languaug,目前只有java
  *extends,指定JSP生成的servlet继承的父类
  *import,导入包
  *session,指定JSP是否使用session对象
  *buffer,指定缓冲大小,默认8K
  *autoFlush,缓冲溢出时是否强制输出
  *isThreadSafe,
  *info,可以使用servlet.getServletInfo()得到信息
  *ErrorPage,指定错误处理页面
  *isErrorPage,能否进行异常处理
  *contentType,指定MIME,默认是text/html,charset=ISO-8859-1
  *pageEncoding,页面编码格式
  *isELIgnored,是否支持EL表达式
  page属性除了import外,所有属性只能指定一个值,page指令与书写位置无关
 
  include指令
  用于在JSP中插入一个包含文本或者代码的文件,被插入文件发生变化,则JSP应当重新编译
 
  taglib指令
  用于引用标签库并设置标签库的前缀
  属性有两个
  (1)uri
  (2)prefix
3、JSP脚本元素
   分为三种:(1)JSP声明语句
             (2)JSP表达式
             (3)JSP Scriptlets
    JSP声明语句<%! int a;%>
    
    JSP表达式 <%=a%>
    
    JSP SCriptlet  java代码段   <% String a="hello";%>
4、JSP动作元素
   共有7个,分别是<jsp:include>
                  <jsp:forward>
                  <jsp:param>
                  <jsp:plugin>
                  <jsp:useBean>
                  <jsp:setProperty>
                  <jsp:getProperty>
    
    <jsp:include>  仅当JSP运行的时候才会载人文件,与@page include file的区别在于,jsp:include的动态的,一旦文件变化,jsp页面也会立即变化
                   语法:<jsp:include page="hello.txt"></jsp:include>
    <jsp:forward>  页面重定向,不是转发,转发不会引起客户端二次请求
                   语法:<jsp:forward page="转向页面的URL"></jsp:forward>
    <jsp:param>    提供参数
                   语法:<jsp:param name="参数名字"> value="参数值">
                   与<jsp:include>联用
                   与<jsp:forward>联用
    <jsp:plugin>   将服务器的JavaBean或者applet下载到客户端执行
                   语法:<jsp:plugin type="bean|applet">
                         code="classfilename" 类名
                         codebase="classfileurl" 类所在目录
                         [name=""] 指定bean或者applet名字
                         [archuive=""] 预加载类列表
                         [align="bottom|top|left|right|middle"] 对齐方式
                         [height=""] 高度
                         [width=""] 宽度
                         [hspace=""] 显示时,距屏幕左右距离
                         [vspace=""] 显示时,距屏幕上下距离
                         [jreversion=""] jre版本
                         [nspluginurl=""] 指定远景浏览器能够下载的jre
                         [iepluginurl=""] 指定IE浏览器能够下载的jre
                         [jsp:params]
                         [jsp:fallback]   当不能正常启动时,提供的错误信息
     <jsp:useBean> 语法<jsp:useBean id="" class="" scope="page|request|session|application"/>
                        其中,page:当前页面有效
                              request:本次请求有效
                              session:本次session内有效
                              application:本应用内一直有效
      <jsp:setProperty> 语法:<jsp:setProperty name="" property="" value=""/>
      <jsp:getProperty> 语法:<jsp:getProperty name="" property="">

十一、jsp或者servlet中文参数乱码解决方案

如下即可:
    String name=request.getParameter("user");
    name=new String(name.getBytes("ISO-8859-1"));
如不行,则
    name=new String(name.getBytes("ISO-8859-1"),"utf-8");

十二、jsp获取复选框的方法

    Enumeration paramNames = request.getParameterNames();
                ////获取复选框元素
               while(paramNames.hasMoreElements()) {
                  String paramName = (String)paramNames.nextElement();
                  //System.out.println(paramName);
                  int i=Integer.parseInt(paramName);
                  //String paramValue = request.getHeader(paramName);
                 // s.deleteMail(i);
                  s.deleteReceiveBoxMail(i);
               }

十三、jsp连接MySQL

1、新建web项目
2、导入jdbc库文件到lib文件夹下,不建议导入到tomcat的lib文件夹下
3、新建jsp文件
   (1)<%@ page import="java.sql.*"%>
   (2)//驱动程序名
        String driverName="com.mysql.jdbc.Driver";
        //数据库用户名
        String userName="root";
        //密码
        String userPasswd="HI333512";
        //数据库名
        String dbName="student";
        //表名
        String tableName="stu";
   (3)//联结字符串
        String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd;
        Class.forName("com.mysql.jdbc.Driver").newInstance();
        Connection connection=DriverManager.getConnection(url);//连接成功
        Statement statement = connection.createStatement();
   (4)查询语句
        String sql="SELECT * FROM "+tableName;
        ResultSet rs = statement.executeQuery(sql);
        //获得数据结果集合
        ResultSetMetaData rmeta = rs.getMetaData();
        //确定数据集的列数,亦字段数
        int numColumns=rmeta.getColumnCount();
        // 输出每一个数据值
        out.print("num");
        out.print("|");
        out.print("name");
        out.print("<br>");
        while(rs.next()) {
                out.print(rs.getString(1)+" ");
                out.print("|");
                out.print(rs.getString(2));
                out.print("<br>");
        }
        out.print("<br>");
        out.print("数据库操作成功,恭喜你");
    (5)关闭数据库
        rs.close();//关闭查询结果
        statement.close(); //关闭查询
        connection.close();//关闭连接

十四、jsp连接sql server 2008

1、新建web项目
2、导入jdbc库文件到lib文件夹下,不建议导入到tomcat的lib文件夹下
3、新建jsp文件
   (1)<%@ page import="java.sql.*"%>
   (2)Connection conn;
        Statement stmt;
    ResultSet rs;
        
    Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
    String url = "jdbc:sqlserver://localhost:1433;DatabaseName=SC;";
    String sql="select* from SC";
        
    conn = DriverManager.getConnection(url, "sa","HI333512");
    stmt=conn.createStatement();
    rs=stmt.executeQuery(sql);
        
    while(rs.next())
        {
            String id=rs.getString(1);
            String name=rs.getString(2);
            String age=rs.getString(3);
            out.print("id:"+id+"\tname:"+name+"\tage:"+age);
            out.print("<br>");
    }
            if(rs!=null){rs.close();rs=null;}
            if(stmt!=null){stmt.close();stmt=null;}
            if(conn!=null){conn.close();conn=null;}

十五、MyEclipse下测试用例的步骤

1、项目属性-java build path-add library-JUnit
2、需要测试的包,右击,new-JUnit test case
3、运行,run as JUNIT test

十六、servlet学习笔记

1、生命周期
   初始化--init--service|doGet|doPost--destroy
2、建立及运行配置
   新建java文件,java类必须继承HttpServlet类,如果不是HTTP协议,
   需要继承GenericServlet类,这两个类都是继承javax.servlet.Servlet接口
   
   假设类名为A,则需要在WEB-INF目录下新建web.xml文件
   文件格式如下
   <?xml version="1.0" encoding="ISO-8859-1"?>

   <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
                        version="3.1"
        metadata-complete="true">
        <servlet>
              <servlet-name>HW</servlet-name><!-- 名字可以随意取 -->
              <servlet-class>包名.A</servlet-class><!-- A是类名 -->
        </servlet>
        <servlet-mapping><!-- 映射 -->
              <servlet-name>HW</servlet-name><!-- 名字必须与上面相同 -->
              <url-pattern>/A</url-pattern><!-- 路径是相对路径,名字虽然可以随意 -->
        </servlet-mapping>
     </web-app>

十七、SpringMVC错误

1、Property 'name' not found on type java.lang.String

标签属性值“xx” ,不能写成" xx"

十八、SpringMVC大致流程

1、导入jar包,这个不说了
2、配置两个文件
   (1)web.xml
   (2)springservlet.xml,这个名字无所谓,与xml中对应的即可
3、在HTML中定义好各种变量参数,假设是登陆则
        <form action="hello1.htm?id=12" method="post">
        NAME::
                <input name="myid" type="text"/>
             <input type="submit" value="ok"/>
        </form>
4、后台得到参数,
        @RequestMapping(value = "/hello1.htm")//表示解析地址为hello1.htm
    public String hello(HttpServletRequest request,int id,Map<String,Object> map){
        System.out.println("hello1 action:"+id);
        map.put("name", "huangjiFFFe");
        map.put("string",new Date(2013,12,31).toLocaleString());
        String myid=request.getParameter("myid");
        System.out.print("myid="+myid);
        return "hello";///表示返回到一个叫hello的页面
    }
5、hello页面的显示
   直接输出参数<body>
                This is my hello page. <br>
                name:${name } <br>//一定要与上面的参数名字对应
                value:${string} <br>//
               </body>
十九、处理MySQL不能正确处理中文的解决方法

1、在my.ini中修改全部字集为gbk;
2、客户端输入show full columns from TABLE;查看具体是那些表栏目需要改
3、alter table TABLE change `AAA` `AAA` varchar(100) character set gbk;




0 0