- 论坛徽章:
- 0
|
3. Controller配置:
Struts2的配置方法不用多说,只需要导入相应的包后,在web.xml里配置:
xml 代码
filter>
filter-name>struts2filter-name>
filter-class>
org.apache.struts2.dispatcher.FilterDispatcher
filter-class>
filter>
filter-mapping>
filter-name>struts2filter-name>
url-pattern>/*url-pattern>
filter-mapping>
就可以正常使用了。但这个项目,因为与Spring集成了,所以与Spring有关的插件包也必须放在项目的WEB-INF\lib下面。
在这里Struts2解决的是用户登录的问题,代码非常简单。
UserController.java
java 代码
package com.leo.controller;
import static com.leo.constants.LoginStauts.USER;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import org.apache.log4j.Logger;
import org.apache.struts2.interceptor.ServletRequestAware;
import org.apache.struts2.interceptor.SessionAware;
import com.leo.po.User;
import com.opensymphony.xwork2.Preparable;
public class UserController extends BaseController implements
ServletRequestAware, SessionAware, Preparable {
private static Logger logger = Logger.getLogger(UserController.class);
private static final long serialVersionUID = 1L;
private final String url = "listUsers.action";
private final String urlByName = "findUser.action";
private HttpServletRequest request;
private Map session;
public void setServletRequest(HttpServletRequest req) {
this.request = req;
}
public void setSession(Map session) {
this.session = session;
}
/** *****************用户属性************************** */
private User user;
public void setUser(User user) {
this.user = user;
}
public User getUser() {
return user;
}
/** **************************************************** */
public String index() {
return SUCCESS;
}
public String userCRUDAction() {
return SUCCESS;
}
/**
* 用户登录
*
* @return
*/
public String login() {
logger.info("名字为:" + user.getName());
User temp = this.getUserService().findByNameExact(user.getName());
if (temp == null) {
addActionMessage("用户名错误,请重新输入!");
return INPUT;
} else {
if (!temp.getPassword().equals(user.getPassword())) {
addActionMessage("密码错误,请重新输入!");
return INPUT;
}
}
session.put(USER, temp);
logger.info("登录成功......");
return SUCCESS;
}
/**
* 用户注销
*
* @return
*/
public String logout() {
logger.info("USER is: " + USER);
if (session.containsKey(USER.toString())) {
logger.info("运行到这里了吗?");
session.remove(USER);
}
return SUCCESS;
}
/**
* 如果扩展项目,进行CRUD时,可能有用。
*/
public void prepare() throws Exception {
}
}
在这个类的存放路径下,我还配置了一个验证文件。
UserController-userAction-validation.xml
xml 代码
"http://www.opensymphony.com/xwork/xwork-validator-1.0.2.dtd">
validators>
field name="user.name">
field-validator type="requiredstring">
message>用户名不能为空.message>
field-validator>
field>
field name="user.password">
field-validator type="requiredstring">
message>密码不能为空.message>
field-validator>
field>
validators>
这里起名叫UserController-userAction-validation.xml的目的是只想验证UserController.java的和userAction方法。包括
userAction,userAction!** 。以免出现验证在使用过程中出现烦人的干扰问题。
最后在struts.xml里配置一下UserController,同时也需要在Spring中注册这个Bean,因为与Spring集成后,Spring已经成为了工厂。
这两个配置文件都很简单:
user.xml
xml 代码
"http://struts.apache.org/dtds/struts-2.0.dtd">
struts>
package name="user" extends="default">
action name="userCRUDAction"
class="com.leo.controller.UserController" method="userCRUDAction">
result name="success">login.jspresult>
result name="input">login.jspresult>
action>
action name="index" class="com.leo.controller.UserController"
method="index">
result name="success">login.jspresult>
result name="input">login.jspresult>
action>
action name="login" class="com.leo.controller.UserController"
method="login">
result name="success">welcome.jspresult>
result name="input">login.jspresult>
action>
action name="logout" class="com.leo.controller.UserController"
method="logout">
result name="success">login.jspresult>
result name="input">login.jspresult>
action>
package>
struts>
注意:user.xml被包含在struts.xml里,目的是便于模块化编程。并且使用了Struts2的包继承,下面是struts.xml的配置:
xml 代码
"http://struts.apache.org/dtds/struts-2.0.dtd">
struts>
include file="struts-default.xml" />
package name="default" extends="struts-default">
interceptors>
interceptor-stack name="strutsStack">
interceptor-ref name="exception" />
interceptor-ref name="alias" />
interceptor-ref name="servlet-config" />
interceptor-ref name="prepare" />
interceptor-ref name="i18n" />
interceptor-ref name="chain" />
interceptor-ref name="debugging" />
interceptor-ref name="profiling" />
interceptor-ref name="scoped-model-driven" />
interceptor-ref name="model-driven" />
interceptor-ref name="fileUpload" />
interceptor-ref name="checkbox" />
interceptor-ref name="static-params" />
interceptor-ref name="params" />
interceptor-ref name="validation">
param name="excludeMethods">
input,back,cancel,browse
param>
interceptor-ref>
interceptor-ref name="workflow">
param name="excludeMethods">
input,back,cancel,browse
param>
interceptor-ref>
interceptor-stack>
interceptors>
default-interceptor-ref name="strutsStack" />
package>
include file="struts_xml/user.xml" />
struts>
那么相应的Spring配置就是:
xml 代码
bean id="userAction" class="com.leo.controller.UserController"
scope="prototype">
property name="userService" ref="userService" />
bean>
其中userService是前面已经注册过的Service Bean了。接下来就是关于DWR的使用和发送邮件了。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u1/55983/showart_1333324.html |
|