struts1.x学习

环境:eclipse+struts

structs 的学习


目录

环境:eclipse+struts

一初步了解

二、环境搭建和技术和技术准备

web.xml配置:

搭建structs1.x框架

代码实现:

        struts 运行机制:

struts标签:

问题:


一初步了解


apache基金会的开源项目

运用MVC思想的框架  
MVC=程序分层设计的思想=Model(数据访问层1)+View(视图层3)+Control(控制层2)
版本:structs 1.x 已过时
              2.x 本来叫做WebWork,也是apache的一个开源框架,参照structs1.x开发的一套框架

学习structs1的必要性:
1、老项目需要维护
2、学习1之后,学习2会很简单
注意:mvc思想是一种程序设计思想,是所有开发语言都有的,不是Java特有

二、环境搭建和技术和技术准备


structs1.x 基于Servlet  (2.x基于Filter)
1、servlet的注解配置方式和web.xml配置方式
   注意:servlet3.0之前,eclipse默认不生成web.xml
  Generate  depeloyment(部署) descriptor(描述符)

注解配置:像代码一样,简单,可通过ide生成,但将数据写死了,改initParam需要对程序重新打包
 */
@WebServlet(
        description = "This is  a servlrt", 
        urlPatterns = { "/MyUrl" }, 
        initParams = { 
                @WebInitParam(name = "pageSize", value = "15")
        })


web.xml配置:


1:配置servlet

<servlet>
  <servlet-name>a</servlet-name>
  <servlet-class>javastudy.MyServlet</servlet-class>
  <init-param>
          <param-name>pageSize</param-name>
          <param-value>15</param-value>
  </init-param>
  </servlet>
    <servlet-mapping>
        <servlet-name>a</servlet-name>
        <url-pattern>/myurl</url-pattern>
    </servlet-mapping>


2:配置jsp

<servlet>
  <servlet-name>b</servlet-name>
<!--注意  是/test.jsp  少了'/' tomcat会启动失败-->
     <jsp-file>/test.jsp</jsp-file>
  <init-param>
          <param-name>pagesize</param-name>
          <param-value>30</param-value>
  </init-param>
  </servlet>
  <servlet-mapping>
  <servlet-name>b</servlet-name>
  <url-pattern>/newurl</url-pattern>
  
  </servlet-mapping>


搭建structs1.x框架


步骤:1、复制jar包
      2、修改web.xml文件(找示例程序的web.xml拷贝,或者网上找http://miaoxianjie.iteye.com/blog/1150236
      3、添加structs-config.xml
项目学习:
  功能:注册:(输入检查,重复用户名检查)
      登陆:(输入),登陆成功后在主页面上显示当前登陆用户
     用户的增删改查:
    C=Create=增 insert
    R=Retrieve=读取 select
    U=Update=修改  update
    D=Delete =删除  delete
项目需求:
    1、注册:(输入检查,重复用户名检查)
    2、登陆:(输入),登陆成功后在主页面上显示当前登陆用户
    3、登陆成功:显示在线用户
    
    


代码实现:


    
    数据库的搭建
    
    1、user类继承actionForm(必须,)
    2、在structs-config.xml 中注册User对象
        FormBean的概念:一些反复编写,毫无技术含量的代码,均有框架来实现,比如
        User user=new User();
        getParameter…………
        FormBean作用:给action提供数据
    3、编写UserDao的方法addUser
    4、编写AddUserAction,添加用户,此类必须继承Action
    5、配置AddUserAction,path,name,scope,forward,添加成功后直接转向userlist.jsp
  

 <form-Beans>
    <form-bean name="user" type="myuser.User"></form-bean>
     </form-Beans>   
    <action-mapping>
    <action path="/adduser" type="myUser.AdduserAction"  >
    </action><!--默认scope是session,另一值是request-->
    </action-mapping>


    
    
struts 运行机制:

分析struts的运行机制

 struts是一个框架

 action中 return null;表示不跳转,action中可以通过response对象进行输出(输入到网页上)。

 (1) global forwards : 配置全局转向目的地(forward)
    <global-forwards>
      <forward name="list" path="/userlist.jsp"></forward>
    </global-forwards>
 
 (2) formbean命名的问题,不要搞的太复杂
      userForm表明是formbean,一般不用加form
 (3) action的命名方式
     path="/adduser" type="myuser.AddUserAction"//
                                  execute方法中调用DAO - addUser
  struts .xml:action中action与forward重要属性
        1、forward的redirect 是bool
                              true:            容器外跳转 ,可转到站外,地址栏显示转向的页面,
                                                和跳转到的页面不是同一次服务器请求,不共享request
                                                相当于response.sendRedirect("/test.jsp");
                              false(默认值):    容器内跳转,地址显示前一个action的地址,不显示转向页面的地址
                                                不能转到站外地址www.baidu.com
                                                相当于ResponseDispatcher rd=request.getRequest.Dispatcher("/test.jsp")
                                              
        2、action中的scope属性  可以为request,session
        3、action中的attribute的值一般省略,其值默认和name下相同.
            表示在request和session中保存formbean时,为formbean取得名字。
            例如:<action path="/adduser" type="myuser.AddUserAction" name="user" scope="session" attribute="hello">
                    这里用${user.userName}是取不到值的,而是用${hello.userName}拿到值

struts标签:

了解struts  metaInf下的几个tld文件的用途

参考链接

bean:用来创建bean、访问bean和访问bean的属性。
html:用来创建Struts输入表单。
logic:用来进行逻辑判断、集合迭代和流程控制。
nested:建立在前三个标签库的基础上,具有前三个标签库的所有功能,只是允许标签间的嵌套。
tiles:用来创建tiles样式的页面。


…………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………………
8月22日10点39分:
DispatchAction:将所有用户有关的action放到一个action来处理

编写一个class  继承DispactchAction,在这之前需要导入包:struts-extras-1.3.10.jar,重写execute方法(其实里面的代码就没有动过·,然后copy几个放到下面,名字改成 
add,delete等(这些是之前单独deaction的对user的操作,将对应的代码copy进去)单个action都放到UserAction中后,之前的就可以删除了,再修改struts-config.xml,配置这个新的action,注意有一个  parmeter属性,这个代表了你将要使用UserAction中的摸某一个方法
示例:<action path="/user" type="myuser.UserAction"  name="user" parameter="op"></action>
调用时:$.post("user.do?op=checkExists"…………………………


注意如果将main.jsp放在WEB-INF下,就不能直接访问,需要配置struts-config.xml,通过.do才能访问
配置如下:

<action path="/main" type="org.apache.struts.actions.ForwardAction" parameter="/WEB-INF/page/main.jsp"></action>

问题:


    登陆时:利用ajax请求验证密码与账户是否匹配,出现所有人都能登陆
    原因:ajax默认是异步请求,所以,直接提交登陆了
    解决:$.ajaxSetup({//设置ajax请求是同步的,akax默认是异步的
            
              async: false//设置为同步请求
              });
structs1.3api文档使用方法
1、Action 类 execute方法
2、ActionMapping 对应
   <action path="/user" type="/myuser.UserAction" name="user" parameter="op"></action>
3 ActionForward对应
 <forward name="list" path="/userlist.jsp" redirect="true"></forward>
4 formbean

编写struts框架,主要用到反射的方法

上传文件,国际化,错误处理(structs-config.xml中配置,工作中不用),验证
线程安全:多个请求共用一个action实例

猜你喜欢

转载自blog.csdn.net/qq_36922927/article/details/81277692