Struts基础

最近看了一下struts,很久都没有用了,回顾了一下,strust主要的作用就是起到一个请求分发的作用,将前端不同请求交给不同的action处理,并将这些处理的结果返回给前端进行显示。这是我对strust一点简单的理解。

下面是一些简单的代码

web.xml

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
  <display-name>AllTest</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>

  <!-- 配置Struts2的前端控制器 -->
	<filter>
		<filter-name>
			struts2
		</filter-name>
		<filter-class>
			org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
		</filter-class>
	</filter>
	<filter-mapping>
		<filter-name>
			struts2
		</filter-name>
		<url-pattern>
			/*
		</url-pattern>
	</filter-mapping>
</web-app>

struts.xml配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.1.7//EN"
    "http://struts.apache.org/dtds/struts-2.1.7.dtd">

<struts>

	<package name="login" namespace="/novel" extends="struts-default">
	        <!-- 拦截器 -->
	        <interceptors>
	              <interceptor name="firstInterceptor" class="struts.test.FirstIntceptor"></interceptor>
	              <interceptor name="SecondInterceptor" class="struts.test.SecondIntceptor"></interceptor>
	              <interceptor-stack name="interceptorStack">
	                   <interceptor-ref name="firstInterceptor"></interceptor-ref>
	                   <interceptor-ref name="SecondInterceptor"></interceptor-ref>
	                   <interceptor-ref name="defaultStack"></interceptor-ref>
	              </interceptor-stack>
	        </interceptors>

	        <action name="login" class="struts.test.LoginAction" method="login">
	            <interceptor-ref name="interceptorStack"></interceptor-ref>
	            <result name="error">/user/login.jsp</result>
	            <result name="success">/index.jsp</result>
	        </action>
	</package>

</struts>

登陆页面login.jsp

<%@ page language="java" import="java.util.*" pageEncoding="GBK"  contentType="text/html;charset=GBK"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=GBK" />
<title>无线活动录入后台</title>
<link href="http://js.soufunimg.com/wireless_m/touch/css/ztback.css" rel="stylesheet" type="text/css"/>
<script src="http://js.soufunimg.com/wireless_m/touch/js/jquery.js"></script>

</head>
<body>
<div class="wrap" style="width:330px; height:140px; margin-top:200px; border:1px solid #A2A2A2;-moz-border-radius:6px; -webkit-border-radius:6px; border-radius:6px;box-shadow: 0 0 8px #A2A2A2; -webkit-box-shadow:0 0 8px #A2A2A2; -moz-box-shadow:0 0 8px #A2A2A2; padding:20px">
  <!--
        action中的“/novel/login/login”,novel对应struts.xml中的package的namespace的值
        login对应struts.xml中的action的name的值
  -->
  <form class="loginForm" action="/novel/login" method="post">
  <table width="100%" height="${empty param.username_change?80:120}" border="0" cellspacing="0" >
    <tr>
      <td width="13%">账号</td>
      <td width="87%"><input id="userName" name="userName" type="text" class="loginput" value=""/></td>
    </tr>
    <tr>
      <td>密码</td>
      <td><input id="password" name="password" type="password"  class="loginput"/></td>
    </tr>
    <tr>
     <td></td><td id="warn" class="loginput" style="display:none;color:red">用户名或密码错误</td>
    </tr>
    </table>
    <input id="submit" type="submit" class="pindbarbtn ablack" style="width:60px;margin-left:auto; margin-right:auto; text-align:center; margin-top:8px; margin-bottom:8px" value="登录"></input>
  </form>
  <div>

  </div>
  <div>
    <label></label>
  </div>

  </div>
  <script type="text/javascript">
var status = "${requestScope.status}";
if(status=="error"){
	$("#warn").show();
}
</script>
</body>

</html>

业务控制器你,LoginAction.java

package struts.test;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

public class LoginAction {
	private String userName;
	private String password;

	public String getUserName() {
		return userName;
	}

	public void setUserName(String userName) {
		this.userName = userName;
	}

	public String getPassword() {
		return password;
	}

	public void setPassword(String password) {
		this.password = password;
	}

	public String checkLogin(){
		HttpServletRequest request = ServletActionContext.getRequest();
		if("wangbiao".equals(userName)&&"654321".equals(password)){
			request.setAttribute("hello", password );
			request.setAttribute("status", "success");
			return "success";
		}else{
			request.setAttribute("status", "error");
			return "error";
		}
	}

}

两个拦截器

package struts.test;

import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class FirstIntceptor implements Interceptor {

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

	@Override
	public void init() {
		// TODO Auto-generated method stub

	}

	@Override
	public String intercept(ActionInvocation arg0) throws Exception {
		// TODO Auto-generated method stub
		System.out.println("我是第一个拦截器,action执行之前拦截");
		arg0.invoke();
		System.out.println("我是第一个拦截器,action执行之后拦截");
		return null;
	}

}
package struts.test;

import java.util.Map;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.xml.sax.SAXException;

import com.opensymphony.xwork2.ActionContext;
import com.opensymphony.xwork2.ActionInvocation;
import com.opensymphony.xwork2.interceptor.Interceptor;

public class SecondIntceptor implements Interceptor{

	/**
	 *
	 */
	private static final long serialVersionUID = 1L;

	@Override
	public void destroy() {
		// TODO Auto-generated method stub

	}

	@Override
	public void init() {
		// TODO Auto-generated method stub

	}

	@Override
	public String intercept(ActionInvocation invocation) throws Exception {
		// TODO Auto-generated method stub		

		Map<String, Object> paramMap = invocation.getInvocationContext().getParameters();
		/**
		 * 拦截器获取页面传过来的值
		 */
		String[] usernameArr = (String[])paramMap.get("userName");
		String[] passwordArr = (String[])paramMap.get("password");
		System.out.println("我是第二个拦截器,action执行之前拦截");
		System.out.println("用户名:"+usernameArr[0]+"密码:"+passwordArr[0]);
		if("123456".equals(passwordArr[0])){
			return "success";
		}else{
			 //就是调用相应的action
			invocation.invoke();
			System.out.println("我是第二个拦截器,action执行之后拦截");
		}
		return null;
	}

}

跳转到成功的页面,index.jsp

<%@ page language="java" contentType="text/html; charset=gbk"
    pageEncoding="gbk"%>
<!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=gbk">
<title>Insert title here</title>
</head>
<body>
<h1>登陆成功</h1>
<!-- 用el表达式获取登陆页传来的用户名和密码 -->
<label>账号:${userName}</label>
<label>密码:${password}</label>
</body>
</html>

我认为最好的老师就是实践,因为简单的看了一下struts的书,也觉得很简单,但是就是写上面的代码,也花了我一点时间。如果只是看书而不写出来运行一下的话,始终是留于表面的,而且很容易忘记。学到上面知识点最好是用代码写出来,写于求职准备中。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-05 23:56:21

Struts基础的相关文章

Struts基础开发(章节摘要)

1,Struts是MVC框架的一种实现,通过Struts的ActionForm可以完成数据的验证,通过Action可以完成与Servlet一样的功能. 2,Struts的所有请求都是通过*.do的路径提交到相应的Action上去的,所有的Action都需要在struts-config.xml文件进行配置. 3,在Struts中所有的资源信息都是通过ApplicationResource.properties文件进行配置的.Struts基础开发(章节摘要)

struts基础知识

1.框架 (1).是一系列jar包,其本质是对JDK功能的拓展. (2).框架是一组程序的集合,包含了一系列的最佳实践,作用是解决某一个领域的问题. 2.框架的作用:       框架强调的是软件的设计重用性和系统的可扩充性,以缩短大型应用软件系统的开发周期,提高开发质量.与传统的基于类库的面向对象重用技术比较,应用框架更注重于面向专业领域的软件重用 3.框架和设计模式的区别 有很多程序员往往把框架模式和设计模式混淆,认为MVC是一种设计模式.实际上它们完全是不同的概念. (1).  框架.设计

struts(基础知识2)

1. struts2提供了35拦截器,18个为默认. 2. 方法过滤拦截器,拦截方法. 3. PreResultListener类监听器,它的beforeResult方法在拦截器的invoke执行后执行. 4. strust2中配置文件加载顺序,如下图: 5. @Action中可以配置很多东西,如下图: 6. Struts可以使用struts2-convention-plugin-2.2.1.1.jar插件实现基于注解的配置. 7. struts中可以新建一个struts.properties文

struts基础2

Result配置详解 说明:在前面的许多案例中我们所用到的Action基本都继承自ActionSupport这个类,而在这个类中我们定义了五个字段:SUCCESS,NONE,ERROR,INPUT,LOGING.我们可以直接返回这些字段值,这些字段值实质是被定义成:String SUCCESS=”success”这样的形式,所以我们只要在Result元素中用它们的小写即可. <result>标准完整形式如下: <result name="success" type=&

struts(基础知识)

1. Struts2需要运行在JRE1.5及以上版本 2. 在web.xml配置文件中,配置StrutsPrepareAndExecuteFilter或FilterDispatcher <filter> <filter-name>struts2</filter-name> <filter-class>org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter</filter

Struts 基础开发---day01

前言 我是一个小白,今天首次学习Struts的基本内容,是看视频和看书相结合的,主要是记录这个学习的过程以及学习的过程中遇到的问题. ----------------------------------------------------------------------------------------------------------------------------------- 传统的MVC分为servlet(控制器),Javabean(模型层),jsp(显示层)三个部分,Str

struts基础3-把数据写入页面

一.OGNL(Object-Groph Navigation Language) 是一种强大的表达式语言,可以存取对象的任意属性,调用对象的方法,遍历整个对象的结构图,实现字段类型转化等功能. 1)与EL表达式对比: OGNL对象图导航语言,比EL表达语言更强大:EL只能从域中获取数据,OGNL可以存取数据,可以调用对象的方法,获取struts的值栈的数据. 是第三方的表达式语言(但struts中自带OGNLjar包) 2)OGNL功能: 1.支持运算符(+-*/) 2.支持对象的方法调用,如x

Struts基础标签

<%@ page language="java" import="java.util.*,com.cloud.Demo1.User" pageEncoding="UTF-8"%> <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <% String path = request.getContext

【Web】Eclipse + Maven + Struts搭建服务器

一.环境 系统:Windows7 IDE:Eclipse-Kepler Service Release 2 使用插件:Maven(请预先在电脑上安装Maven) 二.搭建 在Eclipse中新建一个Maven工程: 选择Maven Project. 注意选择maven-archetype-web选项.Catalog处,点击右边的Configuration按钮,弹出对话框: 点击右边的Add remote Catalog,在Catalog file输入框中输入http://repo1.maven.