最近在学习JavaWeb,在学会servlet之后,想进一步学习struts2框架却发现找不到合适的入门教程。后来发现了一个和不错的英文介绍网站。在此share给大家。本文就介绍一个常用的用户登录web,由此介绍struts2的使用方法。
Hello world Struts2
struts1和struts2还是有很多不同的,这里介绍struts2入门。
我使用的是Intellj Idea, 在创建Project的时候选上Struts2就好了。
这是软件给我配好的library文件。
struts2其实就是一个MVC框架,把不同的功能代码分离。其中M(Model)用的是JavaBean,可以高效地匹配键值对。V(View)用的是JSP,C(Controller)使用的是继承与ActionSupport的类,其中最主要的函数就是execute函数,后面会讲到。最后一点就是xml的配置文件,这个文件可以用于把view中的请求发送到Controller里面,在controller里面使用Model方法,处理数据,然后转发给View展示页面,由此来实现MVC模式。
准备工作基本就完成了。这个是web.xml的配置文件,没碰过,是软件给的。
我们按照4个步骤来介绍这个Project。
那就开始吧~
前面提到了,model部分其实就是为了使用JavaBean,而JavaBean有几个要求,1)每一个成员函数都要设定get和set方法(idea和eclipse都可以自动生成)2)缺省构造函数。3)要放在一个包内(这很重要!一定要放在包内啊!)
然后就像这样了。
package model;
/**
* Created by yanzexin on 16/9/4.
* All right reserved.
*/
public class User {
private String userName;
private String password;
public User() {
setUserName("yan");
}
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;
}
}
这个部分很简单。
Controller其实上就是action,用于处理来自web的请求和发送结果。最重要的函数就是execute函数,这是用来处理数据的函数。
同样也要设定数据成员的set和get方法,因为后面也要被JavaBean使用。
package actions;
import com.opensymphony.xwork2.ActionSupport;
import model.User;
/**
* Created by yanzexin on 16/9/4.
* All right reserved.
*/
public class UserAction extends ActionSupport {
private User m_user;
public String execute() throws Exception {
if (m_user.getUserName().equals("yan") && m_user.getPassword().equals("123")) {
return "success";
} else {
return "error";
}
}
public UserAction() {
}
public User getM_user() {
return m_user;
}
public void setM_user(User m_user) {
this.m_user = m_user;
}
}
这个就是JSP文件,只要struts2设定了很多的标签可以使用,但是我还不知道能不能设定他们的Style。
login.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Basic Struts 2 Application - Welcometitle>
head>
<body>
<h1>Welcome To Struts 2!h1>
<%-->Hello World--%>
<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>
<%--"Welcome" >--%>
<%--"m_user.userName" label="username"/>--%>
<%--"m_user.password" label="password"/>--%>
<%-- --%>
<%----%>
body>
html>
这里可以看出,既可以使用struts2给的标签来传输数据,也可以用HTML的form表单来传输数据。
注意name 一定要给出Action类里面的成员变量的名字。不然不知道要传给哪个成员。
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>
value="m_user.userName"/>
这就类似于JavaBean中的获取数据了。
Fail.jsp
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Basic Struts 2 Application - Welcometitle>
head>
<body>
<h1>Welcome To Struts 2!h1>
<%-->Hello World--%>
<s:form action="Welcome">
<s:textfield name="m_user.userName" label="username"/>
<s:password name="m_user.password" label="password"/>
<s:submit/>
s:form>
<p>Log in failed! Try again!p>
body>
html>
这算是最难的部分了。
在src文件下有一个struts.xml文件用于配置映射关系。
<struts>
<package name="user" extends="struts-default">
<action name="login">
<result>/login.jspresult>
action>
<action name="Welcome" class="actions.UserAction" method="execute">
<result name="success">/Welcome.jspresult>
<result name="error">/Fail.jspresult>
action>
package>
struts>
这里的
name不知道用来干嘛。。
真正关键的是
这会用来匹配action。
name="Welcome" class="actions.UserAction" method="execute">
<result name="success">/Welcome.jspresult>
<result name="error">/Fail.jspresult>
这段代码的意思是说,调用Welcome方法,会映射到actions包里的UserAction(就是前面的Controller)并且调用execute方法。如果结果是success,就是调用/Welcome.jsp页面,如果结果是error就是调用/Fail.jsp页面。
源码就不放了。基本上重要的代码都给了。
希望大家也有所收获吧~