总结近一周学到的新知识

来源:互联网 发布:网络计划图在哪里画 编辑:程序博客网 时间:2024/05/16 02:01

   这一周做公司的一个小训练题目,一边摸索一边做,虽然最后没有全部做完,但是也确实学会了很多东西,记录下来,以后用到就不用那么胡乱去查找了。

1.关于中文乱码的问题

   使用Java,最麻烦也是经常出现的一个问题就是中文乱码。使用struts2.3的时候,经常就出现乱码,听说是本身带的bug,那就没有办法了,只好找了个拦截器,就把乱码问题解决了。

package utilities;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;import org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter;public class EncodeFilter extends StrutsPrepareAndExecuteFilter implements Filter  {    private FilterConfig config = null;    private String encoding = null;        @Override    public void init(FilterConfig config) throws ServletException {       this.config = config;    }    @Override    public void doFilter(ServletRequest request, ServletResponse response,           FilterChain chain) throws IOException, ServletException {        if (encoding == null) {            encoding = config.getInitParameter("encoding");           }           request.setCharacterEncoding(encoding);           response.setCharacterEncoding(encoding);           chain.doFilter(request, response);    }    @Override    public void destroy() {        config = null;        encoding = null;    }}

然后将这个过滤器添加到web.xml中,

<filter>           <filter-name>encodeFilter</filter-name>           <filter-class>utilities.EncodeFilter</filter-class>           <init-param>               <param-name>encoding</param-name>               <param-value>GBK</param-value>           </init-param>     </filter>     <filter-mapping>           <filter-name>encodeFilter</filter-name>           <url-pattern>/*</url-pattern>   </filter-mapping>


至此,中文问题解决。

2.关于页面的布局

   平心而论,我不喜欢做页面这些小事。原来觉得这些没有什么技术含量,都是那些美工mm该干的事情,怎么好意思 让我一个做开发的做呢。现在是自己一个人去做全部的工作,轮到页面了,真的让我很头疼。突然意识到,其实,一个成功的网站,其页面美观是很重要的元素。后悔啊什么是没用了,我没有那种艺术细胞,只能自己怎么看着顺眼怎么来了啊。像那种添加导航栏啊什么的,真不知道应该怎样去做。翻了无数的资料,总算是有些眉目了,虽然不太美观吧,但是最起码能用了。

 <frameset rows="100,*" cols="*" frameborder="no">    <frame src="top.jsp">  <frameset rows="*" cols="150,*"  frameborder="no">    <frame src="menu.jsp" name="leftFrame">    <frame src="uid.jsp" name="mainFrame">  </frameset>  </frameset>  <noframes></noframes>  <body>   这是index.html文件的主要内容
 <body>      <a href="demo/eventDemo.html" target="mainFrame">部门结构图</a><br/>      <a href="self" target="mainFrame">查看个人信息</a><br/>      <a href="uid.jsp" target="mainFrame">按帐号查询</a><br/>      <a href="page.jsp" target="mainFrame">按姓名查询</a><br/>      <a href="tele.jsp" target="mainFrame">按手机号码查询</a><br/>      <a href="depart.jsp" target="mainFrame">按部门查询</a><br/>      <a href="role.jsp" target="mainFrame">按角色查询</a><br/>      <a href="takeoff.jsp" target="mainFrame">请假</a><br/>      <a href="rec" target="mainFrame">请假记录</a>      <a href="">批假</a><br/>      <s:if test="#session.user.position=='管理员'">        <a href="add.jsp" target="mainFrame">增加用户信息</a><br/>        </s:if>  </body>
这是左边导航栏的内容
这样就八整个屏幕分成了三个部分了。下面最让人闹心的就是关于页面跳转的问题了。一般top和menu是不变的,只有main部分是不断变化的,如果让下一个页面跳转到main,那就定义其target属性为main,如果想直接跳转回登录界面,那全屏应该只有那一个页面,只需要定义其target="_parent",如果想让下一个页面不在这个布局中显示,定义target="_blank"就可以了。
3.struts2 ognl表达式即标签
在此次练习中大量使用了struts2的标签和ognl表达式,使用起来确实是很方便,原来觉得页面是我束手无策的,使用了这些感觉他们都已经被我驾驭了,是挺不错的,选几个帮了我大忙的地方吧。
   <s:if test="rowCount!=null">     共<s:property value="rowCount"/>记录      </s:if>    <s:if test="users!=null && users.size()>0">      <div align="center">      <table border="1">    <tr>    <th>帐号</th>    <th>姓名</th>    <th>电话</th>    <th>Email</th>    <th>职位</th>    </tr> <s:iterator value="users">    <tr>       <td><s:property value="uid"/></td>       <td><s:property value="name"/></td>       <td><s:property value="tele"/></td>       <td><s:property value="email"/></td>       <td><s:property value="position"/></td>    </tr> </s:iterator>  </table>  <center>        第<s:property value="pageNow"/>页         <s:url id="url_pre" value="depart">         <s:param name="pageNow" value="pageNow-1"></s:param>     </s:url>     <s:url id="url_next" value="depart">         <s:param name="pageNow" value="pageNow+1"></s:param>            </s:url>       <s:if test="pageNow==1">    <s:a href="%{url_pre}">最前一页</s:a>     </s:if>     <s:else>     <s:a href="%{url_pre}">上一页</s:a>     </s:else>     <s:if test="pageNow==k">     <s:a href="%{url_next}">最后一页</s:a>       </s:if>       <s:else>       <s:a href="%{url_next}">下一页</s:a>       </s:else>          </center>  </div>    </s:if>  
这是一个关于结果分页的,如果记录的数目是零就不会继续显示了,其中使用了if,url标签,真的是作用太大了。
<tr>    <td></td>    <td><s:property value="#session.user.name"/></td>    <td><s:property value="#session.user.position"/></td>    <td><a href="login.jsp" target="_parent">退出</a></td>    <td><a href="password.jsp" target="mainFrame">修改密码</a></td>    </tr>
将用户信息放入一个session中,然后此次会话一直可以使用这个值
4 使用struts2控制session,request等
struts2中可以通过实现session等相关接口去处理这些属性
5 其他
   最近还使用了jfreechart和struts2上传下载,觉得功能方面都还能满足需求,比自己去写会方便很多。