springmvc 与 struct 的区别学习

41人阅读 评论(0) 收藏 举报

背景:看到公司的项目从struct2改造为springmvc,其实从本科开始学习struct2开始对struct2很混乱,之后做了一些springmvc的项目,但每次开发之前老师或者师姐都会创建好项目,并且各个配置文件也都写好,自己也没有去了解学习过这些,导致一致对于所有的配置都很混乱,对于struct2以及springmcv的区别更是一塌糊涂。在工作中对于知识以及业务需要知其然并且知其所以然。加油,koala。

     一、struct2的认知 

  1. 基本解释:struct2 是一个mvc框架

    其中,M是指model,存储数据,是使用的javaBean;(javaBean必须有get、set方法

    V是jsp;

    例子如下:

    login.jsp

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
         pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
  <title>Basic Struts 2 Application - Welcome</title>
</head>
<body>
<h1>Welcome To Struts 2!</h1>
<%--<p><a href="<s:url action='Welcome'/>">Hello World</a></p>--%>
<h2>test!</h2>
<form action="Welcome.action">
  UserName: <input type="text" name="m_user.UserName"/>
  Password: <input type="password" name="m_user.password"/>
  <br>
  <input type="submit">
</form>
<%--<s:form action="Welcome">--%>
  <%--<s:textfield name="m_user.userName" label="username"/>--%>
  <%--<s:password name="m_user.password" label="password"/>--%>
  <%--<s:submit/>--%>
<%--</s:form>--%>
</body>
</html>

    Welcome.jsp

<%--
  Created by IntelliJ IDEA.
  User: yanzexin
  Date: 16/9/4
  Time: 上午8:38
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib prefix="s" uri="/struts-tags"%>
<html>
<head>
    <title>$Title$</title>
</head>
<body>
<h1> Hello struts2!</h1>
<h2><s:property value="m_user.userName"/> </h2>
</body>
</html>

    由以上两个jsp可以看出,可以使用form表单来传输数据,但在login.jsp中的name以及welcome.jsp中的value必须写对action类中的成员变量的名称,否则数据无法正确传输。

    C是继承ActionSupport的类来实现控制,其实就是action,主要是excute函数,由于后续会被当做javaBean使用,因此需要有set、get方法。

    2、配置文件

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

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

<struts>
    <!--code here!-->
    <package name="user" extends="struts-default">
        <action name="login">
            <result>/login.jsp</result>
        </action>
        <action name="Welcome" class="actions.UserAction" method="execute">
            <result name="success">/Welcome.jsp</result>
            <result name="error">/Fail.jsp</result>
        </action>
    </package>
</struts>

调用Welcome方法,会映射到actions包里的UserAction(就是前面的Controller)并且调用execute方法。如果结果是success,就是调用/Welcome.jsp页面,如果结果是error就是调用/Fail.jsp页面。

如果方法名是execute,就不用写method=“execute”了。

没有指定class属性,默认使用ActionSupport类

3、扩展

由以上一个登陆功能可以看出,struct2中是一个请求对应一个action,所以struct2为类级别的拦截,一个类对应一个request上下文。

二、springmvc 认知

1、springmvc配置文件基础

1)   配置配置文件加载监听器ContextLoaderListener

ContextLoaderListener它的作用是启动web容器,(加载配置文件)自动装配applicationContext.xml配置信息。

2)   部署applicationContext.xml文件(监听方式实现加载)

一般配置servicedaomodel

如果不写任何参数配置,默认的是在/WEB-INF/applicationContext.xm

如果想要自定义文件名,需要在web.xml中加入contextConfigLocation这个context参数

 <!-- 配置applicationContext.xml -->
 <context-param>
  <param-name>contextConfigLocation</param-name>
  <param-value>classpath:applicationContext*.xml</param-value>
 </context-param>

3)   配置过滤器(字符过滤器、url过滤器等)

各种过滤器的配置,例如:

<filter>
   
<filter-name>charsetFilter</filter-name>
   
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
   
<init-param>
       
<param-name>encoding</param-name>
       
<param-value>UTF-8</param-value>
   
</init-param>
   
<init-param>
       
<param-name>forceEncoding</param-name>
       
<param-value>true</param-value>
   
</init-param>
</
filter>

 

4)   配置前段控制器(DispatcherServlet

DispatchServlet是HTTP请求的中央调度处理器,它将web请求转发给controller层处理,它提供了敏捷的映射和异常处理机制。

<servlet>
    <servlet-name>appServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring-config-mvc.xml</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
</servlet>

其中init-param中是初始化applicationContext.xml。一般配置controller

 

 

5)   配置错误页面

2.    自动装配

<context:component-scan base-package="com.jd.*"/>

在该配置文件中使用  context:component-scan  自动扫描包base-package中目录下可以作为javabean加载的类并加载,其中会扫描包含Service,Component,Repository持久层dao,Controller注解修饰的类

3、maven 管理的项目的配置文件 -Settings.xml文件

setting文件是maven的配置文件,是全局的。pom.xml是局部的,是所在项目的局部配置。

1)   Settings.xml文件中的元素

a)     Profiles

Profile的作用是根据环境参数来构建配置列表

它包含了id、activation、repositories、pluginRepositories和 properties元素。

如果一个settings.xml中的profile被激活,它的值会覆盖任何其它定义在pom.xml中带有相同id的profile。

i.        Properties

Profile的扩展属性列表。用来存放一些值,例如,our-project通过以下设置,可以在其他配置文件中使用,使用方式${ user.install }。

<properties>

<user.install>our-project</user.install>

</properties>

2)   ActiveProfiles

作用:用来激活profile        列表。


初步整理就这些,后期再继续整理。。。。




查看评论

spring mvc 和struct mvc 的区别

在前几年,开发一般都是用的orcale
  • oYongYong1
  • oYongYong1
  • 2014-07-21 09:48:15
  • 1234

SpringMVC与Struct2的区别

机制:spring mvc的入口是servlet,而struts2是filter 性能:spring会稍微比struts快。 &nbps;spring mvc是基于方法的设计 ,而sturts是基...
  • learner_and_thinker
  • learner_and_thinker
  • 2017-09-19 10:15:12
  • 236

SpringMVC与Struts2区别与比较总结

1、Struts2是类级别的拦截, 一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文,而方法同时又跟一个url对应,所以说从架构本身上Spr...
  • chenleixing
  • chenleixing
  • 2015-03-23 21:45:43
  • 245493

typedef struct 与 struct 的区别及初始化

  • 2010年09月25日 21:03
  • 21KB
  • 下载

struct和typedef struct区别

  • 2014年06月06日 15:49
  • 16KB
  • 下载

JAVA框架——Spring Mvc与struts2区别

虽然说没有系统的学习过spring MVC框架, 但是工作这么长时间, 基本上在WEB层使用的都是Spring MVC, 自己觉得Struts2也是一个不错的WEB层框架, 这两种框架至今自己还未...
  • xuxiaoxie
  • xuxiaoxie
  • 2016-05-09 21:04:49
  • 1392

springmvc与strtus2的区别

  • 2015年01月04日 18:55
  • 11.29MB
  • 下载

springMVC与Structs2的区别

  • 2016年07月13日 11:16
  • 343KB
  • 下载

明晰class和struct之间的区别

class与struct c++最初被称为“c with class”,足见class在c++中的地位。在c++中我们可以用class自定义用户数据类型,然而它还存在一个类似的——struct,他们...
  • wangpengcsdn1
  • wangpengcsdn1
  • 2017-03-31 21:15:28
  • 4804

C/C++的class和struct的区别

转载来源:http://blog.csdn.net/yangzhiloveyou/article/details/8536793 这里有两种情况下的区别。 (1)C的struct与C++的clas...
  • u010575592
  • u010575592
  • 2016-08-10 21:50:22
  • 1641
    个人资料
    持之以恒
    等级:
    访问量: 833
    积分: 102
    排名: 125万+
    文章分类
    文章存档