Struts2+Spring+Hibernate In Action(三) 博客分类: Struts2 SpringHibernateStrutsXMLJSP
程序员文章站
2024-02-19 20:54:22
...
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的使用和发送邮件了。
推荐阅读
-
Struts2+Spring+Hibernate In Action(三) 博客分类: Struts2 SpringHibernateStrutsXMLJSP
-
struts2 奇怪的Action警告 博客分类: Struts2 jsonStrutsServletApacheWeb
-
struts2 奇怪的Action警告 博客分类: Struts2 jsonStrutsServletApacheWeb
-
Struts2的第一个入门实例(三)--Struts2与Guice整合 博客分类: Struts2 StrutsSpringGoogleXMLWeb
-
Struts2的第一个入门实例(三)--Struts2与Guice整合 博客分类: Struts2 StrutsSpringGoogleXMLWeb
-
Struts2中Action的注解范例 博客分类: 开源技术 StrutsApacheJSPXMLWeb
-
Struts2中Action的注解范例 博客分类: 开源技术 StrutsApacheJSPXMLWeb