service()和doget(),dopost()方法的区别
不管是post还是get方法提交过来的连接,都会在service中处理,然后,由service来交由相应的doPost或doGet方法处理,如果你重写了service方法,就不会再处理doPost或doGet了。
get请求和post请求结构不同:get请求的参数在地址栏中,这就造成了两个后果,1.参数不能太多(受到限制),2.若参数是敏感信息,则不安全。而post请求因为参数是写在请求体中的,所以不会出现这样的情况。( 但也造成了用户不能添加书签等后果)
中文乱码问题处理:
req.setCharacterEncoding("UTF-8");(在取得任何参数之前)
String staName =new String(staName.getBytes("iso-8859-1","utf-8"));
不同页面间数据共享:
1.cookie
Cookie cookie = new Cookie(名称,值);(创建Cookie)
cookie.setMaxage(14*24*60*60);(设置存活时间)
res.addCookie(cookie);(回写到客户端)
2.session
HttpSession session = request.getSession();(得到session)
session.setAttributte();(向session中添加属性)
session.getAttributte();(在另一个页面获得session中的属性)
3.表单隐藏域
4.res.sendRedirect()
res.sendRedirect("sectionlist?sectionID = 2");
分页显示的实现:
先定义4个变量
pageSize(每页显示多少条记录)
pageNow (希望显示第几页)
rowCount (一共查询到多少条记录)
pageCount (一共有多少页)
步骤:
1.得到rowCount: 来凝结数据库,从数据库中查询
2.计算pageCount:
if(rowCount%pageSize==0){
pageCount = rowCount/pageSize;
}
else{
pageCount = rowCount/pageSize+1;
}
3.显示超链接:
4.动态的接收pageNow:
String pageN = req.getParameter("pageNow");
if(pageN!=null){
pageNow = Integer.parseInt(pageN);
}
Cookie和Session的区别:
Cookie保存在客户端,而Session保存在服务器。所以,Session比Cookie安全。
生存时间计时不同(Cookie累计计时,Session间隔计时)
ServletContent
<input type="text" name="staId" size=20 onfocus="this.value''" value="请输入关键字"/>
//接收到的数值都是String型的,得把它转换成int型
String staDeptId = request.getParameter("staDeptId");
Integer.parseInt(staDeptId);
单例模式:
//本类中new一个实例
private static Forum finstance ;
public static Forum GetInstance()
{
if(finstance==null)
finstance=new Forum();
return finstance;
}
private Forum(){}
//其他类中调用
Forum fm= Forum.GetInstance();
//注册时对密码加密
public void setPassWord(String passWord) {
try {
//注册的时候调用JDK自带的加密函数,把密码加密后在存入数据库
MessageDigest sha=MessageDigest.getInstance("SHA");
this.passWord=new String(sha.digest(passWord.getBytes()));
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
E:\\新建文件夹 (3)\\.metadata\\.plugins\\org.eclipse.wst.server.core\\tmp0\\wtpwebapps\\CompanyManagement\\
____________________________________________________________
把属性放在Action外的bean类里,调用属性时的格式为user.username,user.password
——————————————————————————————————————————
获取绝对路径:
<%
String path=request.getContextPath();
String basePath=request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+"/"+path+"/";
%>
————————————————————————————————————————————————————
public void execeute()
{
String name = super.getRequest().getParameter("paraName"); //在Action类中也可以用这种方法接收参数,不过要用super
System.out.println("姓名:" + name);
}
————————————————————————————————————————————————————
Action怎么处理中文乱码问题:
在struts.xml这要写
<constant name="struts.i18n.encoding" value="GBK" />
——————————————————————————————————————————————————————
jsp页面加入struts标签库<%@taglib uri="/struts-tags" prefix="s" %>
——————————————————————————————————————————————————
拦截器的配置无非就是声明拦截器、引用拦截器以及声明拦截器栈。可以认为拦截器栈是由多个拦截器组成的一个大的拦截器。
定义拦截器和拦截器栈都在<interceptors />这个标记内
以下是一个例子:
<interceptors>
<interceptor name=”log” class=”cc.dynasoft.LogInterceptor” />
<interceptor name=”authority” class=”cc.dynasoft. Authority Interceptor” />
<interceptor name=”timer” class=”cc.dynasoft.TimerInterceptor” />
<interceptor-stack name=”default”>
<interceptor-ref name=” authority” />
<interceptor-ref name=” timer” />
</interceptor>
————————————————————————————————————————————————————————
引用拦截器是在action中引用的:例子:
<action name=”login” class=”cc.dynasoft.LoginAction”>
……
<interceptor-ref name=”log” />
</action>
——————————————————————————————————————————————————
Android下junit测试框架的配置:
1.新建一个类(继承AndroidTestCase )
2.在Manifest.xml文件里配置
——————————————————————————————————————————————————————
Hibernate PO对象的状态:
临时态:刚new出来的对象是临时状态的,或者把持久态的对象delete(),则会成临时态
持久态:在数据库中有对应记录(save())
脱管态:
————————————————————————————————————————————————————————
SessionFactory.getCurrentSession与openSession的区别:
前者commit后session会自动关闭;后者需要手动关闭session.close()。
————————————————————————————————————————————————————
字节流:以字节为单位进行IO操作
最大的两个父类是 InputStream(对应read)与OutputStream(对应write)
字符流:
最大的两个父类为 Writer和Reader这两个抽象类
_________________________________________________________________________________________
RandomAccessFile类:随机访问文件
输入流FileInputStream和输出流 FileOutputStream,实现的是对磁盘文件的顺序读写,而且读写要分别创建不同对象。相比之下RandomAccessFile类则可对文件实现随机读写操作。
RandomAccessFile对象的文件位置指针遵循下面的规律:
·新建RandomAccessFile对象的文件位置指针位于文件的开头处;
·每次读写操作之后,文件位置的指针都相应后移到读写的字节数;
·可以通过getFilePointer方法来获得文件位置指针的位置,通过seek方法来设置文件指针的位置。
——————————————————————————————————————————————————————
<bean id=”……” class=”……”>
<property name=”属性1” value=”……”/>
<property name=”属性2” value=”……”/>
……
</bean>
这种只要在相应的类中提供set方法就可以实现了。
<bean id=”……” class=”……”>
<constructor-arg>构造函数需要的参数1</constructor-arg>
<constructor-arg>构造函数需要的参数2</constructor-arg>
……
</bean>
这种得在相应的类中写有参数的构造函数,才能实现