• structs环境搭建


    (1)<s:fielderror />放在JSP中,如果没在web.xml中配置filter相关内容,会有The Struts dispatcher cannot be found.从而显示报错。

    HTTP Status 500 - An exception occurred processing JSP page /regist.jsp at line 36

    主要还是因为缺乏导入的包,对于console中的missing,not found和add这些关键字都需要注意,会提示需要导入的包。

    (2)需要导入的包

    (3)struts2.5.5,其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">
      <display-name></display-name>    
      <welcome-file-list>
        <welcome-file>login.jsp</welcome-file>
      </welcome-file-list>
      
      <filter>
          <filter-name>struts2</filter-name>
          <filter-class>
              org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
          </filter-class>
      </filter>
    
      <filter-mapping>
          <filter-name>struts2</filter-name>
          <url-pattern>/*</url-pattern>
      </filter-mapping>
    
    </web-app>

    其中filter-class的值在struts2中配置如下,否则出错:

      <filter>
          <filter-name>struts2</filter-name>
          <filter-class>
              org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter
          </filter-class>
      </filter>

    (4)struts.xml的配置如下:

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE struts PUBLIC "-//Apache Software Foundation//DTD Struts Configuration 2.1//EN" "http://struts.apache.org/dtds/struts-2.1.dtd">
    <struts>
        <constant name="struts.i18n.encoding" value="gb2312"></constant> 
        <package name="shop" namespace="/"  extends="struts-default">
            <action name="login" class="com.wss.action.LoginAction"> 
                <result name="success" type="chain">show</result>
                <result name="error">/login.jsp</result>
            </action>
            <action name="regist" class="com.wss.action.RegistAction">
                <result name="success">/login.jsp</result>
                <result name="error">/resist.jsp</result>
            </action>
            <action name="show" class="com.wss.action.ShowAction">
                <result name="success">/suc.jsp</result>
                <result name="error">/error.jsp</result>
            </action>
            <action name="car" class="com.wss.action.CarAction">
                <result name="success">/car.jsp</result>
            </action>
        </package>
        
    </struts>    

    (5)还有log4j2.xml的配置,但是我现在还不知道这个是做什么用的额。

    <?xml version="1.0" encoding="UTF-8"?>
    
    <Configuration status="WARN">
    
      <Appenders>
    
        <Console name="Console" target="SYSTEM_OUT">
    
          <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
    
        </Console>
    
      </Appenders>
    
      <Loggers>
    
         <Logger name="com.demo.NamedHierarchy" level="trace">
    
           <AppenderRef ref="Console"/>
    
    </Logger>
    
    <Logger name="com.demo" level="debug">
    
           <AppenderRef ref="Console"/>
    
    </Logger>
    
        <Root level="error">
    
          <AppenderRef ref="Console"/>
    
        </Root>    
    
      </Loggers>
    
    </Configuration>

    (6)整个项目代码的布局结构是如下:

     

    (7)一个Action的实例:

    package com.wss.action;
    
    import com.opensymphony.xwork2.ActionSupport;
    import com.wss.Dao.School;
    import com.wss.Dao.User;
    import com.wss.Dao.UserDao;
    
    public class RegistAction extends ActionSupport{
    
        public RegistAction()
        {
            System.out.println("Initialization RegistAction....");
        }
        
        private User user =new User();
        //private User user;
        public User getUser() {
            System.out.println("Getting the getUser");
            return user;
        }
    
        public void setUser(User user) {
            System.out.println("Setting the setUser");
            this.user = user;
        }
        
        private School school;
        
        public School getSchool() {
            System.out.println("Getting the getSchool");
            return school;
        }
    
        public void setSchool(School school) {
            System.out.println("Setting the setSchool");
            this.school = school;
        }
    
        private String company;
        public void setCompany(String company)
        {
            System.out.println("Setting the company");
            this.company=company;        
        }
        
        
        public String execute() throws Exception{
            UserDao ud =new UserDao();
            
            System.out.println("The company is "+this.company+" The name is "+this.user.getName()+" The phone is "+this.user.getAddress());
            System.out.println("The school name is "+this.school.getName()+" The city is "+this.school.getCity()+" The department is "+ this.school.getDepartment());
            
            //if(ud.regist(user)!=0){
            
                this.addFieldError("success", "注册成功");
                return SUCCESS;
            //}
            //this.addFieldError("error", "注册失败");
            //return ERROR;
            
        }
            
        
    }


    (8)其中regist.sjp的代码如下:

    <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
    <%@ page contentType="text/html;charset=gbk"%> 
    <%@ taglib prefix="s" uri="/struts-tags" %>
    
    
    <%
    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>京东商城注册页面</title>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        
        <%
            request.setCharacterEncoding("gbk");
         %>
      </head>
      
      <body>
               <center>
                   <form action="regist" method="post">
                   
                       用户名:<input type="text" name="user.name"/><br>&nbsp;&nbsp;码:<input type="password" name="user.password"/><br>&nbsp;&nbsp;机:<input type="text" name="user.phone" /><br>&nbsp;&nbsp;址:<input type="text" name="user.address"/><br>&nbsp;&nbsp;司: <input type="text" name="company"/> <br>&nbsp;&nbsp;校:<input type="text" name="school.name"/>&nbsp;&nbsp;市:<input type="text" name="school.city" />&nbsp;&nbsp;系:<input type="text" name="school.department" />
                       
                       <table>
                        <tr>
                            <td><input type="submit" value="注册"/></td>
                            <td><input type="reset" value="重置" ></td>
                        </tr>
                    </table>
                   </form>
                <s:fielderror />
               </center>
      </body>
    </html>
  • 相关阅读:
    python---RabbitMQ(1)简单队列使用,消息依次分发(一对一),消息持久化处理
    python---ORM之SQLAlchemy(4)relationship多对多练习
    ShowcaseView-master
    HT518V311
    上方显示进度的进度条
    ArrowDrawable
    一个仿 github for windows 及 windows 8 的进度条
    高仿语音发送动画,按住闪烁,滑动跟随,删除翻转丢入垃圾桶,比较全的一个动画实例
    Ledongli
    RotatingDoughnut
  • 原文地址:https://www.cnblogs.com/Berryxiong/p/6092482.html
Copyright © 2020-2023  润新知