struts+spring+hibernate整合笔记.docx
- 文档编号:30559749
- 上传时间:2023-08-16
- 格式:DOCX
- 页数:72
- 大小:63.69KB
struts+spring+hibernate整合笔记.docx
《struts+spring+hibernate整合笔记.docx》由会员分享,可在线阅读,更多相关《struts+spring+hibernate整合笔记.docx(72页珍藏版)》请在冰豆网上搜索。
struts+spring+hibernate整合笔记
-------------------------------------1----------------------------------
MVC:
Model(JavaBean),View(JSP),Controller(Servlet)
Servlet中跳转到另一个JSP,并且将参数保存在request中,写在doPost中
ServletContextapplication=this.getServletContext();
RequestDispatcherrd=application.getRequestDispatcher("/result.jsp");
rd.forward(request,response);
引入一个自定义类<%@pageimport="po.Student"%>
或者:
directive.pageimport="po.Student;"> //////////////有时出现错误,可能是局部对象作用范围的问题,参见Prj1_1里的 SQL模糊查询,LIKE的通配符"_"(一个字符),"%"(任意个字符),汉字是两个字符,所以使用__ eg: SELECT*FROMtableWHEREnameLIKE'%s%';包含s的所有结果 -------------------------------------2---------------------------------- Struts就是一个基于MVC模式的框架,只是一个编程规范,让大家的代码风格更统一 在Struts中: 1.JSP表单内容首先提交给ActionServlet,ActionServlet将信息打包在ActionFrom中,送给Action(ActionServlet是Struts自带的) 2.ActionServlet不直接处理业务逻辑,让Action来调用JavaBean 3.Action负责决定跳转到另一个JSP,并显示结果(只是决定跳转,但动作还是由底层的ActionServlet做的) 4.配置文件(负责JSP->ActionForm,ActionForm->Action的映射) 需要编写: JSP,ActionForm,Action,配置文件(xml文件,struts-config.xml),JavaBean ////////////首先必须导入Struts支持包,并更爱basepackagefornewcalsses ////////////ActionFrom容纳表单提交的值 1。 必须继承org.apache.struts.action.ActionForm 2。 必须编写和表单元素同名的的属性 3。 必须在Struts配置文件中进行注册(让Struts框架认识这个ActionFrom) Prj2_1.queryForm)"> ////////////Action负责接收ActionFrom传来的数据 1。 必须继承org.apache.struts.action.Action; 2。 重写execute函数,来处理业务逻辑 3。 将这个类在配置文件中进行注册 publicActionForwardexecute(ActionMappingmapping,ActionFormform,HTTPServletRequestrequest,HTTPServletResponseresponse)throwsException{ //ActionForward: 封装了跳转目标的路径 //mapping: 访问配置文件 //form: 传过来的ActionFrom对象 //跳转部分写法如下,变量可以保存在request里面,因为ActionForward默认的不是进行重定向跳转,而是进行forward跳转,所以不会丢失 ActionForwardaf=newActionForward("/queryResult.jsp"); returnaf; } ////////注册 --此处的path更改好后,需要在queryForm中修改action的目标地址--> 运行流程总结: 客户端JSP提交到ActionForm,ActionFrom根据客户端JSP里的action,去掉".do"后,获得/query-->在xml中的mapping中查找到/query-->取得name里的queryForm-->将提交的内容送给queryForm-->又根据mapping中的type获得Action的地址,将ActionForm中打包的内容送给Action ///////可以将所要跳转的地址设置成为逻辑名称 --这是定义全局的URL逻辑名称,另一种方法是写到 在action中跳转代码则变成: ActionForwardaf=mapping.findForward("RESULT"); -------------------------------------3---------------------------------- //////////自己建立配置文件的映射关系只需要在config文件的图形界面中右击new->formactionandjsp Struts框架包括自定义标签库,它可以用在很多方面.尽管这些库并不要求用框架,但是使用他们会有助于程序的开发. struts-htmltaglib: 包含用来生成动态html用户界面和窗体的tag struts-beantaglib: 包含在访问bean和bean的属性时使用的tag,也包含一些消息显示的tag struts-logictaglib: 包含的tag用来管理根据条件生成输出文件,和其他一些用来控制的信息 tld文件是标签库定义文件(taglibrarydefinition) /////////////////html标签库 其中的 formaction=""> form>//action的内容不同于传统的form,传统的需要写成"/Prj3_1/reg.do",这里只需要写成"/reg.do",其中的"/"相当于项目的根目录,而且可以不写".do" //需要在ActionForm中定义同名的property,并设置set,get函数.如果设置了value的话则不需要,因为: 在Struts标签中如果没有手动设置property的value值,则系统会自动调用ActionForm的getter函数获取初始值,不过最好还是定义一下 文本框: textproperty="相当于传统input的名称name"> text> 密码框: passwordproperty=""> password> 多行文本框: textareaproperty=""> textarea> 隐藏表单: hiddenproperty=""value=""/> 单选按钮: radioproperty="sex"value="man"> radio>男//默认选择的话需要在ActionFrom中设置, privateStringsex="boy"; radioproperty="sex"value="women"> radio>女 下拉菜单: selectproperty="home"value="设置默认值,是下面option中的一个value值"> optionvalue="传给服务器的值">显示的值 option> select> 成组多选按钮: //最好使用multibox checkboxproperty="fav"value="sing">唱歌 checkbox> checkboxproperty="fav"value="dance">跳舞 chekbox> 在ActionForm中需要定义一个数组来存储多选按钮的值: privateString[]fav;//不能设置初值,有问题,要使用可以设置初值的则选用 multiboxproperty="fav"value="sing">唱歌 checkbox> multiboxproperty="fav"value="dance">跳舞 chekbox> 设置初始值,privateString[]fav={"初始值1","初始值2"}; 单个复选按钮: checkboxproperty="inteam">是否会员? checkbox>//返回的是boolean值 ActionForm中定义如下: privatebooleaninteam=true;//但是此方法会出现inteam的值不可以更改,可在reset函数(每次提交都执行一次) 中设置如下: inteam=false; 多选下拉列表框: selectproperty=""mulitple="true"size="5"> select>//multiple属性设置了可以进行多选,size表示显示的时候是显示几个. ActionForm中定义如下: privateString[]books={"sanguo","hongloumeng"};//可以跳着多选,并不需要顺序对应 -------------------------------------4---------------------------------- html标签库: 生成链接 1。 linkpage="/jsp2.jsp"> link>//需要使用'/'符号,否则出错 2。 linkhref="jsp2.jsp"> link> 3。 linkforward="JSP2"> link>//需要在配置文件中的 4。 linkaction="/XXX.do"> link>//适合链接同时还做一些操作的情况,如退出操作 链接的同时传递参数 1。 linkpage="/jsp2.jsp? param=0001"> link>//参数param保存在request中 2。 <%session.setAttribute("msg","1");request.setAttribute("msg","2");application.setAttribute("msg","3");%> linkpage="/jsp2.jsp"paramId="param"paramName="msg"> link>//系统找到2 //系统自动从page--->request--->session--->application中寻找参数paramName对应的参数 其他情况: 在一个类中的属性作为参数 <%Studentstu=newStudent();stu.setStuId("0001");session.setAttribute("stu",stu);%> linkpage="/jsp2.jsp"paramId="param"paramName="stu"paramProperty="stuID"> link>//传递stu的stuId属性 其他情况: 传递多个参数,可将多个参数放到HaspMap中 <%HashMaphm=newHashMap();hm.put("param1","msg1");hm.put("param2","msg2");session.setAttribute("hm",hm);%> linkpage="/jsp2.jsp"name="hm"> link> /////////////////bean标签,访问http信息,name是从别处的来的,id是自己的 1。 parameter>得到参数值并放入变量,Id: 将参数给一个变量名,Name: 参数名.相当于request.getParameter(); parameterid="str"name="param"/>//将名字为param的变量值传递给str,相当于Stringstr=request.getParameter("param"); 2。 write>相当于out.print,可以显示javabean内容,Name: 显示某个变量的值,也可以显示javaBean内的属性: writename="stu"property="stuId"/>如果内容中有标签,如: hello,此标签默认不会识别标签,显示的时候就是原样显示.filter属性设置成false就可以使得所要显示的内容不要以原样显示.filter="false",显示成粗体hello.而out.print则不是以原样显示,显示成粗体hello 打印上面的内容: writename="str"/> 3。 cookie>得到cookie并放入变量.Id: 将参数给一变量名,Name: cookie名,value: 默认值,相当于request.getCookie();然后for循环查找cookie.只有读cookie标签,没有写cookie标签,这样符合MVC设计模式 <%request.addCookie(newCookie("username","cst"));%> cookieid="cookie1"name="username"/> writename="cookie1"property="value"/>//显示cookie1对象的属性value /////////////////logic标记,比较运算,相当于if语句 1。 equal>: 相等时返回true;name和value: 看变量是否等于value;cookie和value: 看cookie是否等于value;parameter和value;name,property和value.eg: equalname="st"value="1">ok equal>看st是否值为1,是则显示ok 2。 notEqual>: 不等返回true 3。 greaterEqual>: >= 4。 lessEqual>: <= 5。 greaterThan>: > 6。 lessThan>: < 7。 present>: 存在性判断,判断角色是否存在.Cookie: cookie是否存在.Parameter: 请求参数是否存在.name和property: javabean的属性是否存在,判断page->request->session->application内是否有一个名为stu的javabean: presentname="stu"> present> 8。 notPresent>: 判断某个角色是否不存在,相当于if(XXX! =null) 9。 iterate>遍历集合.Id和Name: 遍历过程中将某集合取名为Id,此集合可以是JavaBean.Length: 要遍历的数目,默认是遍历所有的.Offset: 从哪一个开始,设置name和property: 某个JavaBean的属性是集合的情况.相当于获取集合内容加上for循环 eg1: 简单集合(包括数组)的遍历 ArrayListlist=newArrayList();list.add("三国");list.add("水浒");list.add("西游"); session.setAttribute("list",list); iterateid="book"name="list">//id代表了所要遍历集合的单个元素 writename="book"/> iterate> eg2: 集合里面还有JavaBean的情况 ArrayListstus=newArrayList(); Studentstu1=newStudent();stu1.setStuId("0001");stus.add(stu1); Studentstu2=newStudent();stu2.setStuId("0002");stus.add(stu2); Studentstu3=newStudent();stu3.setStuId("0003");stus.add(stu3); session.setAttribute("stus",stus); iterateid="stu"name="stus"> writename="stu"property="stuId"/> iterate> eg3: JavaBean里面含有集合属性的情况,假设Student里有熟悉privateArrayListphones; Studentstu=newStudent();ArrayListphones=newArrayList(); phones.add("1213123");phones.add("23423423");stu.setPhones(phones);session.setAttribute("stu",stu); iterateid="phone"name="stu"property="phones"> writename="phone"/> iterate> eg4: 复杂集合,以HashMap为例 HashMaphm=newHashMap(); hm.put("param1","msg1");hm.put("param2","msg2");hm.put("param3","msg3");sessiong.setAttribute("paramList",hm); iterateid="element"name="paramList"> writename="element"property="key"/>//显示HaspMap中的key值 writename="element"property="value"/>//显示HaspMap中的value值 iterate> -------------------------------------5---------------------------------- 实际案例中分析时,看有几个动作,理论上有几个动作就需要几个Action,然后根据动作判断是否需要ActionForm 产生随机数: Randomrnd=newRandom();intrndNumber=rnd.nextInt(); 通过request获得session: HttpSessionsession=request.getSession(); 如果使用 iterate>标签遍历的是集合,则有一个序号标记,可以通过该标记传递集合里数据所在的序号: iterateId="stu"name="stus"indexId="i"> linkaction="/select.do"paramId="ID"paramName="i"> link> iterate> 注意,跳转时: linkpage="/name.jsp"> link>,或者需要动用Action的跳转 linkaction="/name.do"> link> -------------------------------------6---------------------------------- 可以维护一个自定义标签,例如多个页面中有一个共同的菜单需要维护的时候,可以为这个菜单定义一个自定义标签 /////////////标签简介: 标签格式: <前缀: 标签名属性="属性值"/> 空标签,没有体,也没有属性 submit/>或者 submit> submit> 空体标签,没有体,但是有属性 writename="student"/>或者 writename="student"> write> 有体有属性标签: iterateid="book"name="books"> writename="book"/> iterate> /////////////如何开发空标签和空体标签 自定义标签的要素: 1。 标签处理程序(一个java文件,已经被编译): 使用不同的方法和对象来定义标签的行为,即认识某属性的不同值能做不同的事情 作用: 包含类和方法的定义,定义标签的功能 对于空体标签,需要继承: javax.servlet.jsp.tagext.TagSupport 对于有体标签,需要继承: javax.servlet.jsp.tagext.BodyTagSupport 以上两类都需要实现接口: javax.se
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- struts spring hibernate 整合 笔记