zoukankan      html  css  js  c++  java
  • struts1.x学习

      现在还是有很多老的项目用的是struts1.x,这几天看了韩顺平的struts视频,也做了一些笔记。

    Struts入门

     

    1.为什么有struts?

    因为我们对MVC的理解不同,可能造成不同公司写程序的时候,规范不统一,这样不利于程序的维护和扩展效率。

     

    2.struts原理

     

     

    3.手写版的struts登录系统

    (1)先建立一个web工程,将struts开发的jar包(可以再struts官网上下载,核心是struts-core-1.3.10.jar)复制到lib

    (2)编写login.jsp界面

    (3)编写ActionForm(表单)action(小队长——登录小队长)

         UserForm:需要继承ActionForm类,定义属性时应该与jsp页面的控件名(name)相同,(表单属性名一般与jsp控件名相同,也可以不同,但是必须保证get/set方法与控件名一一对应);

    LoginAction:需要继承Action类,重写excute方法,类似于servletdoPost/doGet方法;把form转成对应的UserForm

    UserForm userForm=(UserForm)form;

    Return mapping.findForward("ok");

     

    4)建立并配置struts-config.xml(一般放在WEB-INF文件夹下)(Struts-config.xml配置详解)

    <?xml version="1.0" encoding="UTF-8"?>

    <!DOCTYPE struts-config PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 1.1//EN" "http://jakarta.apache.org/struts/dtds/struts-config_1_1.dtd">

    <struts-config>

    <!--配置表单-->

    <form-beans>

    <form-bean name="userform" type="com.itime.form.UserForm"/>

    </form-beans>

    <!-- 配置action -->

    <action-mappings>

    <!-- name将form 与 action相关联;type是全路径;scrope="request" or "session" 默认为session -->

    <action path="/login" name="userform" type="com.itime.action.LoginAction">

    <forward name="ok" path="/WEB-INF/ok.jsp"></forward>

    <forward name="err" path="/WEB-INF/err.jsp"></forward>

    </action>

    </action-mappings>

    </struts-config>

     

    (5)编写ok.jsperr.jsp

    (6)配置web.xml(该文件用于配置ActionServlet)

    <?xml version="1.0" encoding="UTF-8"?>

    <web-app version="3.0" 

    xmlns="http://java.sun.com/xml/ns/javaee" 

    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 

    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 

    http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">

      <display-name></display-name>

      <servlet>

      <servlet-name>action</servlet-name>

      <servlet-class>org.apache.struts.action.ActionServlet</servlet-class>

      <init-param>

      <param-name>config</param-name>

      <param-value>/WEB-INF/struts-config.xml</param-value>

      </init-param>

      </servlet>

      

      <servlet-mapping>

      <servlet-name>action</servlet-name>

      <!-- 是*.do的请求,都交给总控制器 -->

      <url-pattern>*.do</url-pattern>

      </servlet-mapping>

      

      <welcome-file-list>

        <welcome-file>index.jsp</welcome-file>

      </welcome-file-list>

    </web-app>

     

    7)测试

     

     

    8)其他:

    a.在用户登录成功界面,显示登录成功人的名字。(使用过滤器配合struts解决中文乱码问题)

    Action属性scope="request"

        在ok.jsp页面,引用包, 

    <%

       UserForm userform= (UserForm)request.getAttribute("userform");

      out.print("您好!"+userform.getUsername()); 

    %>    或者 

    <%=((UserForm)request.getAttribute("userform")).getUsername()  %>

     

    用过滤器filter处理中文乱码:

    浏览器-->web服务器-->filters-->ActionServlet-->

    建立一个过滤器,实现接口Filter(javax.servlet.Filter)

    package com.itime.filters;

     

    import java.io.IOException;

    import java.io.PrintWriter;

     

    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 javax.servlet.http.HttpServlet;

    import javax.servlet.http.HttpServletRequest;

    import javax.servlet.http.HttpServletResponse;

     

    public class ChineseFilter extends HttpServlet implements Filter {

     

    @Override

    public void doFilter(ServletRequest arg0, ServletResponse arg1,

    FilterChain arg2) throws IOException, ServletException {

    arg0.setCharacterEncoding("utf-8");//设置字符编码

            arg2.doFilter(arg0, arg1);//必须要有,不然的话就停止前进

    }

    @Override

    public void init(FilterConfig arg0) throws ServletException {

    // TODO Auto-generated method stub

    }

    }

    web.xml中配置:

    <filter>

      <filter-name>chineseFilter</filter-name>

      <filter-class>com.itime.filters.ChineseFilter</filter-class>

      </filter>

      <filter-mapping>

      <filter-name>chineseFilter</filter-name>

      <url-pattern>/*</url-pattern>

      </filter-mapping>

     

    b.每个action都是单态的,包括总控制器ActionServlet(2.0有改进)

    单态:是指在整个程序运行的过程中,始终是一个对象(对并发有影响)。

    c.struts-config.xml不一定非得放在WEB-INF文件夹下,并且可以有多个,只需在web.xml文件下配置好即可。

    d.添加到数据库去验证该用户是否合法。

     

     

    4.使用工具完成struts开发

    (一)用工具导入struts包,自动完成相关配置,我们手工配置struts-config.xml文件即可

    步骤如下:

    (1)建立工程,右击工程名-----myEclipse——>Add struts Capabilities

    (2)编写login.jsp

    (3)编写ActionFormAction

    (4)手动配置struts-config.xml

    (5)编写ok.jsperr.jsp

    (6)测试

     

    (二)完全依赖myEclipse工具开发

    步骤如下:

    (1)创建web工程,引入struts开发包

    (2)编写login.jsp

    (3)开发ActionFormaction(struts-config.xml中用图形界面开发)

    (4)开发ok.jsperr.jsp(同样可以用图形界面生成)

    (5)在Action中添加业务逻辑判断

    (6)测试

     

    5.struts是一个web层的框架

    首先介绍一下model2

     

     

    从图中看出web层就是和 C

    对于struts:

     

    所以说, strutsweb层框架。

  • 相关阅读:
    053-509
    053-298
    053-255
    css实现省略号
    github上写blog
    解决内容被挤压缩小问题
    request.getRequestDispather().forward()与response.sendRedirect()
    资料,来自HTML5前端开发学习⑤群
    checkbox与jq<转>2
    checkbox与jq<转>
  • 原文地址:https://www.cnblogs.com/zouteng/p/2675173.html
Copyright © 2011-2022 走看看