搭建完环境后就可以动手去打代码了。首先创建一个简单的提交表单的jsp页面(html页面也可以),

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'login.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    <form action="login">
    	username:<input type="text" name="username"><br>
    	password:<input type="password" name="password"><br>
    	<input type="submit" value="sumbit">
    </form>
  </body>
</html>

 创建一个result.jsp页面用来显示用户输入的名字和密码。查看是否正确

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <base href="<%=basePath%>">
    
    <title>My JSP 'result.jsp' starting page</title>
    
	<meta http-equiv="pragma" content="no-cache">
	<meta http-equiv="cache-control" content="no-cache">
	<meta http-equiv="expires" content="0">    
	<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
	<meta http-equiv="description" content="This is my page">
	<!--
	<link rel="stylesheet" type="text/css" href="styles.css">
	-->

  </head>
  
  <body>
    username: <%= request.getAttribute("username") %> <br>
    password: <%= request.getAttribute("password") %>
  </body>
</html>

  

 

 

然后创建一个普通java类,用来处理表单数据。

package com.jiewen.structs2;

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 execute(){
		return "success";
	}
}

  这个 execute()方法是必须要的。返回类型为String不能变,因为struts会对它进行调用。虽然它是一个普通类。没有继承任何东西。在此我们先知道有这么一个规矩。

  然后在struts.xml里面添加如下代码

<struts>
	<package name="structs2" extends="struts-default">
		<action name="login" class="com.jiewen.structs2.LoginAction">
			<result name="success">/result.jsp</result>
		</action>
	</package>
	
</struts>

上面代码的package就像java 的一个包。然后里面包含了一个一个的action。action我们暂时理解为浏览发生的一个个请求。action的名字就是表单的名字。action元素包含result元素。result的name就跟execute方法返回的字符串匹配,然后返回相应的结果。  

 

到这里整个例子就结束了。把项目部署到自己的容器上面。访问结果如下:

 

 

 

总结:提交过去的表单里面的用户名和密码的name属性会对应到Action.java相应的setxxx方法而不是里面的成员变量。如何找不到就会设置为空。也就说成员变量的名字可以随便起。

表单发送的都是一些字符串数据。struts可以对一些常见类型进行自动转换。例如java的原生数据类型。还有date之类的struts都可以进行自动转换。这是一个好处。

在上面例子中可以感觉到struts体现出了mvc原则使开发者能集中在业务逻辑上面。以前不使用框架的时候我们还要注意一些应用逻辑,例如转发到哪里,怎样进行数据的转换之类的。

至于如何将浏览器发送过来的数据转换成自定义类型,下一篇笔记会说到

 

posted on 2016-08-03 09:34  为活着而活着  阅读(170)  评论(0编辑  收藏  举报