Struts2.0的创建过程:
①新建一个web项目
②将所需要的核心jar包引入项目当中
commons-fileupload-1.2.2.jar//用于上传所需要的组件
commons-io-2.0.1.jar
commons-lang3-3.1.jar
freemarker-2.3.19.jar
javassist-3.11.0.GA.jar
ognl-3.0.6.jar
struts2-core-2.3.8.jar//struts核心jar包
xwork-core-2.3.8.jar
其他的包以后需要的时候再加进来即可,否则会和其他框架的jar包发生冲突
③配置web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5"
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_2_5.xsd">
<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>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
</web-app>
④创建一个Action
package com.mynews.action;
import com.mynews.service.LoginService;
public class LoginAction {
private String uname;
private String upass;
public String getUname() {
return uname;
}
public void setUname(String uname) {
this.uname = uname;
}
public String getUpass() {
return upass;
}
public void setUpass(String upass) {
this.upass = upass;
}
private LoginService ls=new LoginService();//以后这个数据可以从数据库里拿
public String execute() {
boolean ret=ls.login(uname,upass);
if(ret) return "success";
return "error";
}
}
package com.mynews.service;
public class LoginService {
public boolean login(String uName,String uPass){
if(("admin").equals(uName)&&"123".equals(uPass)){return true;}
else{return false;}
}
}
⑤在src下新建一个XML文件,命名为struts
<?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>
<package name="default" namespace="/" extends="struts-default" >// /代表当前项目
<action name="loginAction" class="com.mynews.action.LoginAction">
<result name="success">/ch01/main.jsp</result>
<result name="error">/ch01/login_error.jsp</result>
</action>
</package>
</struts>
⑥前台安排
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
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 'index.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="/mynews/loginAction.action" method="post"> //路径namespace+actionname(此处采用的是绝对路径)
用户名:<input type="text" name="uname"/><br/>
密 码:<input type="password" name="upass"/><br/>
<input type="submit" value="登录"/><input type="reset" value="重置"/>
</form>
</body>
</html>
需要注意的几点:
①变量命名规则(笔者曾经因为命名的错误而出现了一些问题)
②配置文件的路径都是指当前项目